<?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>206582</bug_id>
          
          <creation_ts>2020-01-22 08:10:31 -0800</creation_ts>
          <short_desc>[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder</short_desc>
          <delta_ts>2020-06-08 04:49:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>206933</dependson>
    
    <dependson>207270</dependson>
    
    <dependson>207345</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1609546</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-22 08:10:31 -0800</bug_when>
    <thetext>[Cocoa] Use AVAssetWriterDelegate to implement MediaRecorder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609551</commentid>
    <comment_count>1</comment_count>
      <attachid>388423</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-22 08:34:03 -0800</bug_when>
    <thetext>Created attachment 388423
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609579</commentid>
    <comment_count>2</comment_count>
      <attachid>388428</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-22 09:15:41 -0800</bug_when>
    <thetext>Created attachment 388428
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609580</commentid>
    <comment_count>3</comment_count>
      <attachid>388423</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-22 09:17:14 -0800</bug_when>
    <thetext>Comment on attachment 388423
WIP

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

At some point it would be nice to have VideoSampleBufferCompressor and AudioSampleBufferCompressor as C++ classes so they can be reused more easily.

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:90
&gt; +    m_serialDispatchQueue = dispatch_queue_create([@&quot;com.apple.WebAudioSampleBufferCompressor&quot; UTF8String], DISPATCH_QUEUE_SERIAL);

Nit: no need to round trip through an NSString, a char* should work.

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:112
&gt; +        auto error = CMBufferQueueMarkEndOfData(m_outputBufferQueue.get());

This should be added to CoreMediaSoftLink

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:127
&gt; +    const auto *audioFormatListItem = CMAudioFormatDescriptionGetRichestDecodableFormat(formatDescription);

Ditto

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:134
&gt; +    if (auto error = AudioFormatGetProperty(kAudioFormatProperty_FormatInfo, 0, NULL, &amp;size, &amp;m_destinationFormat)) {

This should be soft linked, maybe create a new AudioToolboxSoftLink file?

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:140
&gt; +    if (auto error = AudioConverterNew(&amp;m_sourceFormat, &amp;m_destinationFormat, &amp;converter)) {

Ditto

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:147
&gt; +    const void *cookie = CMAudioFormatDescriptionGetMagicCookie(formatDescription, &amp;cookieSize);

This should be added to CoreMediaSoftLink

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:149
&gt; +        if (auto error = AudioConverterSetProperty(m_converter.get(), kAudioConverterDecompressionMagicCookie, (UInt32)cookieSize, cookie)) {

AudioToolboxSoftLink

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:156
&gt; +    if (auto error = AudioConverterGetProperty(m_converter.get(), kAudioConverterCurrentInputStreamDescription, &amp;size, &amp;m_sourceFormat)) {

Ditto.

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:177
&gt; +        UInt32 outputBitRate = 64000;
&gt; +        if (m_destinationFormat.mSampleRate &gt;= 44100)
&gt; +            outputBitRate = 192000;
&gt; +        else if (m_destinationFormat.mSampleRate &lt; 22000)
&gt; +            outputBitRate = 32000;

Named constants might help readers understand the values.

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:180
&gt; +        if (auto error = AudioConverterSetProperty(m_converter.get(), kAudioConverterEncodeBitRate, size, &amp;outputBitRate)) {

AudioToolboxSoftLink

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:197
&gt; +    m_sourceBuffer.reserveCapacity([self computeBufferSizeForAudioFormat:m_sourceFormat maxOutputPacketSize:0 duration:0.1]);
&gt; +    m_destinationBuffer.reserveCapacity([self computeBufferSizeForAudioFormat:m_destinationFormat maxOutputPacketSize:m_maxOutputPacketSize duration:0.1]);

Named constants would be good here too (is this LOW_WATER_TIME_IN_SECOND?)

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:386
&gt; +        while (0 &lt; numBytesToCopy) {

This would probably be better as &quot;numBytesToCopy &gt; 0&quot;

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:459
&gt; +        // We assume that the source format is PCM, which is not VBR, but CBR.
&gt; +        // So, there is not packet descriptions describing the layout of each packet.

Should we ASSERT this assumption?

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:482
&gt; +- (CMSampleBufferRef)pickOutputSampleBuffer

&quot;getOutputSampleBuffer&quot; would be a better match for the typical WebKit naming style.

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:55
&gt; +    auto error = CMBufferQueueCreate(kCFAllocatorDefault, 0, CMBufferQueueGetCallbacksForUnsortedSampleBuffers(), &amp;m_outputBufferQueue);

CoreMediaSoftLink

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:84
&gt; +        auto error = VTCompressionSessionCompleteFrames(m_vtSession.get(), kCMTimeInvalid);

This should be soft linked, maybe add a VTCompressionSessionSoftLink?

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:87
&gt; +        error = CMBufferQueueMarkEndOfData(m_outputBufferQueue);

CoreMediaSoftLink

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:112
&gt; +    auto error = VTCompressionSessionCreate(kCFAllocatorDefault, dimensions.width, dimensions.height, m_outputCodecType, (__bridge CFDictionaryRef)encoderSpecifications, NULL, NULL, videoCompressionCallback, (__bridge void *)self, &amp;vtSession);

VTCompressionSessionSoftLink

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:126
&gt; +    error = VTSessionSetProperty(m_vtSession.get(), kVTCompressionPropertyKey_RealTime, kCFBooleanTrue);
&gt; +    RELEASE_LOG_ERROR_IF(error, MediaStream, &quot;WebVideoSampleBufferCompressor VTSessionSetProperty kVTCompressionPropertyKey_RealTime failed with %d&quot;, error);
&gt; +    error = VTSessionSetProperty(m_vtSession.get(), kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration, (__bridge CFTypeRef)@(m_maxKeyFrameIntervalDuration));
&gt; +    RELEASE_LOG_ERROR_IF(error, MediaStream, &quot;WebVideoSampleBufferCompressor VTSessionSetProperty kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration failed with %d&quot;, error);
&gt; +    error = VTSessionSetProperty(m_vtSession.get(), kVTCompressionPropertyKey_ExpectedFrameRate, (__bridge CFTypeRef)@(m_expectedFrameRate));
&gt; +    RELEASE_LOG_ERROR_IF(error, MediaStream, &quot;WebVideoSampleBufferCompressor VTSessionSetProperty kVTCompressionPropertyKey_ExpectedFrameRate failed with %d&quot;, error);
&gt; +
&gt; +    error = VTCompressionSessionPrepareToEncodeFrames(m_vtSession.get());

Ditto

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:142
&gt; +    auto error = VTCompressionSessionEncodeFrame(m_vtSession.get(), imageBuffer, presentationTimeStamp, duration, NULL, (__bridge void *)self, NULL);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609594</commentid>
    <comment_count>4</comment_count>
      <attachid>388434</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-22 10:01:34 -0800</bug_when>
    <thetext>Created attachment 388434
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609662</commentid>
    <comment_count>5</comment_count>
      <attachid>388452</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-22 11:47:07 -0800</bug_when>
    <thetext>Created attachment 388452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610572</commentid>
    <comment_count>6</comment_count>
      <attachid>388661</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-24 02:00:42 -0800</bug_when>
    <thetext>Created attachment 388661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610744</commentid>
    <comment_count>7</comment_count>
      <attachid>388661</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-24 10:24:30 -0800</bug_when>
    <thetext>Comment on attachment 388661
Patch

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

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:124
&gt; +    const void *cookie = CMAudioFormatDescriptionGetMagicCookie(formatDescription, &amp;cookieSize);

This should be added to CoreMediaSoftLink.

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:273
&gt; +    if (auto error = CMBlockBufferReplaceDataBytes(data, buffer.get(), 0, dataSize)) {

Ditto

&gt; Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:281
&gt; +    if (![m_videoAssetWriterInput isReadyForMoreMediaData])
&gt; +        [m_writer flush];

Will the AssetWriter always be ready for more media data after flushing the writer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611364</commentid>
    <comment_count>8</comment_count>
      <attachid>388847</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-27 05:03:03 -0800</bug_when>
    <thetext>Created attachment 388847
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611365</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-27 05:05:45 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #7)
&gt; Comment on attachment 388661 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388661&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:124
&gt; &gt; +    const void *cookie = CMAudioFormatDescriptionGetMagicCookie(formatDescription, &amp;cookieSize);
&gt; 
&gt; This should be added to CoreMediaSoftLink.

Done

&gt; &gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:273
&gt; &gt; +    if (auto error = CMBlockBufferReplaceDataBytes(data, buffer.get(), 0, dataSize)) {
&gt; 
&gt; Ditto

Done

&gt; &gt; Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:281
&gt; &gt; +    if (![m_videoAssetWriterInput isReadyForMoreMediaData])
&gt; &gt; +        [m_writer flush];
&gt; 
&gt; Will the AssetWriter always be ready for more media data after flushing the
&gt; writer?

This works as per my testing but I do not see any guarantee for that.
I guess the other approach is to use requestMediaDataWhenReadyOnQueue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611368</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-27 05:21:05 -0800</bug_when>
    <thetext>&gt; &gt; Will the AssetWriter always be ready for more media data after flushing the
&gt; &gt; writer?
&gt; 
&gt; This works as per my testing but I do not see any guarantee for that.
&gt; I guess the other approach is to use requestMediaDataWhenReadyOnQueue.

Actually, no this does not work, let&apos;s just stop pushing samples when not being ready for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611438</commentid>
    <comment_count>11</comment_count>
      <attachid>388867</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-27 09:18:58 -0800</bug_when>
    <thetext>Created attachment 388867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611486</commentid>
    <comment_count>12</comment_count>
      <attachid>388875</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-27 11:11:50 -0800</bug_when>
    <thetext>Created attachment 388875
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611921</commentid>
    <comment_count>13</comment_count>
      <attachid>388994</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-28 08:00:43 -0800</bug_when>
    <thetext>Created attachment 388994
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612362</commentid>
    <comment_count>14</comment_count>
      <attachid>388994</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-29 02:02:44 -0800</bug_when>
    <thetext>Comment on attachment 388994
Patch for landing

Clearing flags on attachment: 388994

Committed r255345: &lt;https://trac.webkit.org/changeset/255345&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612363</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-29 02:02:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612364</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-29 02:03:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/58985368&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612442</commentid>
    <comment_count>17</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-29 07:52:45 -0800</bug_when>
    <thetext>Any particular reason to land commented out code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612443</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-29 07:56:28 -0800</bug_when>
    <thetext>(In reply to zalan from comment #17)
&gt; Any particular reason to land commented out code?

Which code are you referring to?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612444</commentid>
    <comment_count>19</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-29 07:57:32 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #18)
&gt; (In reply to zalan from comment #17)
&gt; &gt; Any particular reason to land commented out code?
&gt; 
&gt; Which code are you referring to?

/*
 auto block = makeBlockPtr([this, weakThis = makeWeakPtr(this), completionHandler = WTFMove(completionHandler)]() mutable {
         if (weakThis) {
             appendEndsPreviousSampleDurationMarker(m_videoAssetWriterInput.get(), m_lastVideoPresentationTime, m_lastVideoDecodingTime);
             [m_videoAssetWriterInput markAsFinished];
         }
         completionHandler();
     });
     [m_videoAssetWriterInput requestMediaDataWhenReadyOnQueue:dispatch_get_main_queue() usingBlock:block.get()];
*/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612447</commentid>
    <comment_count>20</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-29 07:59:42 -0800</bug_when>
    <thetext>Oh right, should fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612451</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-29 08:03:07 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 206933</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612922</commentid>
    <comment_count>22</comment_count>
      <attachid>389240</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-30 05:20:41 -0800</bug_when>
    <thetext>Created attachment 389240
Fix include path and commented out code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612931</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-30 06:18:41 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 389240:

editing/spelling/spellcheck-attribute.html bug 206178 (authors: g.czajkowski@samsung.com, mark.lam@apple.com, and rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612936</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-30 06:19:13 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 389240:

editing/spelling/spellcheck-async-remove-frame.html bug 158401 (authors: morrita@google.com, rniwa@webkit.org, and tony@chromium.org)
imported/w3c/web-platform-tests/IndexedDB/fire-success-event-exception.html bug 206554 (authors: shvaikalesh@gmail.com and youennf@gmail.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612939</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-30 06:51:53 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 389240:

editing/spelling/spellcheck-attribute.html bug 206178 (authors: g.czajkowski@samsung.com, mark.lam@apple.com, and rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612940</commentid>
    <comment_count>26</comment_count>
      <attachid>389240</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-30 06:52:35 -0800</bug_when>
    <thetext>Comment on attachment 389240
Fix include path and commented out code

Clearing flags on attachment: 389240

Committed r255424: &lt;https://trac.webkit.org/changeset/255424&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612941</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-30 06:52:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613044</commentid>
    <comment_count>28</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-01-30 10:57:51 -0800</bug_when>
    <thetext>Reverted r255424 for reason:

Breaks internal builds.

Committed r255439: &lt;https://trac.webkit.org/changeset/255439&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613911</commentid>
    <comment_count>29</comment_count>
      <attachid>389501</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-03 05:32:39 -0800</bug_when>
    <thetext>Created attachment 389501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614004</commentid>
    <comment_count>30</comment_count>
      <attachid>389528</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-03 09:38:51 -0800</bug_when>
    <thetext>Created attachment 389528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614455</commentid>
    <comment_count>31</comment_count>
      <attachid>389637</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-04 01:39:07 -0800</bug_when>
    <thetext>Created attachment 389637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614462</commentid>
    <comment_count>32</comment_count>
      <attachid>389642</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-04 01:54:26 -0800</bug_when>
    <thetext>Created attachment 389642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614491</commentid>
    <comment_count>33</comment_count>
      <attachid>389652</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-04 05:18:01 -0800</bug_when>
    <thetext>Created attachment 389652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614498</commentid>
    <comment_count>34</comment_count>
      <attachid>389652</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-04 06:14:28 -0800</bug_when>
    <thetext>Comment on attachment 389652
Patch

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

&gt; Source/WebCore/ChangeLog:20
&gt; +        Note that, whenever we request data, we flush the writer and insert an end of video sample to amke sure video data gets flushed.

s/amke/make/

&gt; Source/WebCore/ChangeLog:21
&gt; +        Therefore data should not be requested to fast to get adequate video compression.

s/to fast/too fast/

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:38
&gt; +#define LOW_WATER_TIME_IN_SECOND 0.1

s/LOW_WATER_TIME_IN_SECOND/LOW_WATER_TIME_IN_SECONDS/

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:68
&gt; +    if (auto error = CMBufferQueueCreate(kCFAllocatorDefault, 0, CMBufferQueueGetCallbacksForUnsortedSampleBuffers(), &amp;inputBufferQueue)) {

CMBufferQueueGetCallbacksForUnsortedSampleBuffers should be soft linked.

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:75
&gt; +    if (auto error = CMBufferQueueCreate(kCFAllocatorDefault, 0, CMBufferQueueGetCallbacksForUnsortedSampleBuffers(), &amp;outputBufferQueue)) {

Ditto

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:204
&gt; +        CMSetAttachment(buffer, kCMSampleBufferAttachmentKey_TrimDurationAtStart, trimAtStartDict, kCMAttachmentMode_ShouldPropagate);

This constant should be soft linked

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:287
&gt; +        CMSetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_GradualDecoderRefresh, (__bridge CFTypeRef)m_gdrCountNum.get(), kCMAttachmentMode_ShouldPropagate);

Ditto.

&gt; Source/WebCore/platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:300
&gt; +    CMSetAttachment(sampleBuffer.get(), kCMSampleBufferAttachmentKey_EndsPreviousSampleDuration, kCFBooleanTrue, kCMAttachmentMode_ShouldPropagate);

Soft link

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:65
&gt; +    if (auto error = CMBufferQueueCreate(kCFAllocatorDefault, 0, CMBufferQueueGetCallbacksForUnsortedSampleBuffers(), &amp;outputBufferQueue)) {

Soft link

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:107
&gt; +    NSDictionary *encoderSpecifications = @{(__bridge NSString *)kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder:@YES};

Ditto.

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:118
&gt; +    error = VTSessionSetProperty(m_vtSession.get(), kVTCompressionPropertyKey_RealTime, kCFBooleanTrue);

Ditto.

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:120
&gt; +    error = VTSessionSetProperty(m_vtSession.get(), kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration, (__bridge CFTypeRef)@(m_maxKeyFrameIntervalDuration));

Ditto.

&gt; Source/WebCore/platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:122
&gt; +    error = VTSessionSetProperty(m_vtSession.get(), kVTCompressionPropertyKey_ExpectedFrameRate, (__bridge CFTypeRef)@(m_expectedFrameRate));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615031</commentid>
    <comment_count>35</comment_count>
      <attachid>389803</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-05 06:47:58 -0800</bug_when>
    <thetext>Created attachment 389803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615062</commentid>
    <comment_count>36</comment_count>
      <attachid>389803</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-05 08:53:59 -0800</bug_when>
    <thetext>Comment on attachment 389803
Patch

Clearing flags on attachment: 389803

Committed r255818: &lt;https://trac.webkit.org/changeset/255818&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615063</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-05 08:54:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615071</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-05 09:12:07 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 207270</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615551</commentid>
    <comment_count>39</comment_count>
      <attachid>389938</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-05 23:21:23 -0800</bug_when>
    <thetext>Created attachment 389938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615565</commentid>
    <comment_count>40</comment_count>
      <attachid>389938</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-06 00:34:57 -0800</bug_when>
    <thetext>Comment on attachment 389938
Patch

Clearing flags on attachment: 389938

Committed r255910: &lt;https://trac.webkit.org/changeset/255910&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615566</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-06 00:35:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615717</commentid>
    <comment_count>42</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-02-06 11:53:51 -0800</bug_when>
    <thetext>Attempt to fix internal builds: https://trac.webkit.org/changeset/255970/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615725</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-06 11:59:45 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 207345</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616054</commentid>
    <comment_count>44</comment_count>
      <attachid>390057</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-06 23:14:23 -0800</bug_when>
    <thetext>Created attachment 390057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616071</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-07 00:48:02 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 390057:

editing/spelling/spellcheck-attribute.html bug 206178 (authors: g.czajkowski@samsung.com, mark.lam@apple.com, and rniwa@webkit.org)
imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-replacement.html bug 207335 (author: graouts@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616073</commentid>
    <comment_count>46</comment_count>
      <attachid>390057</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-07 00:48:58 -0800</bug_when>
    <thetext>Comment on attachment 390057
Patch

Clearing flags on attachment: 390057

Committed r256010: &lt;https://trac.webkit.org/changeset/256010&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616074</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-07 00:49:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618322</commentid>
    <comment_count>48</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-02-12 17:07:05 -0800</bug_when>
    <thetext>Rolled out in https://trac.webkit.org/changeset/256493/webkit due to crashes. Details are in radar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659069</commentid>
    <comment_count>49</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-04 06:21:44 -0700</bug_when>
    <thetext>Crashes were probably due to use of reserveCapacity since it is calling asanSetInitialBufferSizeTo. Instead we could use resize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659557</commentid>
    <comment_count>50</comment_count>
      <attachid>401142</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-05 05:19:10 -0700</bug_when>
    <thetext>Created attachment 401142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659590</commentid>
    <comment_count>51</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-05 08:18:19 -0700</bug_when>
    <thetext>Committed r262619: &lt;https://trac.webkit.org/changeset/262619&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401142.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659610</commentid>
    <comment_count>52</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-05 09:14:05 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659611</commentid>
    <comment_count>53</comment_count>
      <attachid>401159</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-05 09:14:09 -0700</bug_when>
    <thetext>Created attachment 401159
Build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659629</commentid>
    <comment_count>54</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-05 09:47:35 -0700</bug_when>
    <thetext>Committed r262625: &lt;https://trac.webkit.org/changeset/262625&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401159.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659711</commentid>
    <comment_count>55</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-06-05 11:50:26 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659712</commentid>
    <comment_count>56</comment_count>
      <attachid>401178</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-06-05 11:50:27 -0700</bug_when>
    <thetext>Created attachment 401178
A follow-up patch to fix a build failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659738</commentid>
    <comment_count>57</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-05 12:35:30 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 401178 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659776</commentid>
    <comment_count>58</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-06-05 13:44:18 -0700</bug_when>
    <thetext>It was fixed in r262641. &lt;https://trac.webkit.org/changeset/262641&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659834</commentid>
    <comment_count>59</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-06-05 15:49:20 -0700</bug_when>
    <thetext>Reverted r262619, r262625, and r262641 for reason:

Caused mediarecorder layout test crashes.

Committed r262663: &lt;https://trac.webkit.org/changeset/262663&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659835</commentid>
    <comment_count>60</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-06-05 15:49:21 -0700</bug_when>
    <thetext>Reverted r262619, r262625, and r262641 for reason:

Caused mediarecorder layout test crashes.

Committed r262663: &lt;https://trac.webkit.org/changeset/262663&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660131</commentid>
    <comment_count>61</comment_count>
      <attachid>401312</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-07 23:22:04 -0700</bug_when>
    <thetext>Created attachment 401312
One more reserveCapacity</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660159</commentid>
    <comment_count>62</comment_count>
      <attachid>401321</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-08 02:41:32 -0700</bug_when>
    <thetext>Created attachment 401321
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660169</commentid>
    <comment_count>63</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-08 04:49:20 -0700</bug_when>
    <thetext>Committed r262708: &lt;https://trac.webkit.org/changeset/262708&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401321.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388423</attachid>
            <date>2020-01-22 08:34:03 -0800</date>
            <delta_ts>2020-01-22 09:15:36 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-206582-20200122173400.patch</filename>
            <type>text/plain</type>
            <size>82135</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE0ZjAwY2EzZGFkNjI1
MDkwYjYzMDVkNGE3ZGFjMzhjMWNmMjllNS4uODA0MjJmMzk4NTZlOWM2Y2MzNWE0YjEwMTU3Y2Zl
MjY0ZWRhOTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIwLTAxLTIyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSBhbGxvd3MgdG8gZ3JhYiByZWNvcmRlZCBkYXRhIHdoZW5ldmVyIHdhbnRlZC4KKyAgICAgICAg
VGhpcyBkZWxlZ2F0ZSByZXF1aXJlcyBwYXNzaW5nIGNvbXByZXNzZWQgc2FtcGxlcyB0byBBVkFz
c2V0V3JpdGVyLgorICAgICAgICBJbXBsZW1lbnQgdmlkZW8gZW5jb2RpbmcgYW5kIGF1ZGlvIGVu
Y29kaW5nIGluIGRlZGljYXRlZCBjbGFzc2VzIGFuZCB1c2UgdGhlc2UgY2xhc3NlcyBiZWZvcmUg
YWRkaW5nIGJ1ZmZlcnMgdG8gQVZBc3NldFdyaXRlci4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTogQWRkZWQu
CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBpbml0V2l0aENhbGxi
YWNrOmNhbGxiYWNrT2JqZWN0Ol0pOgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgZmluaXNoXSk6CisgICAgICAgIChhdWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQ
cm9jKToKKyAgICAgICAgKC1bV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGluaXRBdWRp
b0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uOm91dHB1dEF1ZGlvRm9ybWF0SUQ6
XSk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBjb21wdXRlQnVm
ZmVyU2l6ZUZvckF1ZGlvRm9ybWF0Om1heE91dHB1dFBhY2tldFNpemU6ZHVyYXRpb246XSk6Cisg
ICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBhdHRhY2hQcmltaW5nVHJp
bXNJZk5lZWRlZDpdKToKKyAgICAgICAgKC1bV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IGdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50XSk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBzYW1wbGVCdWZmZXJXaXRoTnVtUGFja2V0czpmaWxsQnVmZmVyTGlz
dDpdKToKKyAgICAgICAgKC1bV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHByb2Nlc3NT
YW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWU6XSk6CisgICAgICAgICgtW1dlYkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvciBwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHM6YnVm
ZmVyTGlzdDpwYWNrZXREZXNjcmlwdGlvbjpdKToKKyAgICAgICAgKC1bV2ViQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIHByb2Nlc3NTYW1wbGVCdWZmZXI6XSk6CisgICAgICAgICgtW1dlYkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBhZGRTYW1wbGVCdWZmZXI6XSk6CisgICAgICAgICgt
W1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBwaWNrT3V0cHV0U2FtcGxlQnVmZmVyXSk6
CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB0YWtlT3V0cHV0U2Ft
cGxlQnVmZmVyXSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0
cHV0QnVmZmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9T
YW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpzdGFydEFzc2V0V3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRW
aWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6YXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1
ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVT
dGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBw
ZW5kVmlkZW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZl
cldpdGhQYWNrZXREZXNjcmlwdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGluaXRXaXRoQ29kZWNUeXBlOmNhbGxiYWNrOmNhbGxi
YWNrT2JqZWN0Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
ZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZmlu
aXNoXSk6CisgICAgICAgICh2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAoLVtX
ZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgaW5pdENvbXByZXNzaW9uU2Vzc2lvbjpdKToK
KyAgICAgICAgKC1bV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHByb2Nlc3NTYW1wbGVC
dWZmZXI6XSk6CisgICAgICAgICgtW1dlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBhZGRT
YW1wbGVCdWZmZXI6XSk6CisgICAgICAgICgtW1dlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBwaWNrT3V0cHV0U2FtcGxlQnVmZmVyXSk6CisgICAgICAgICgtW1dlYlZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciB0YWtlT3V0cHV0U2FtcGxlQnVmZmVyXSk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlclByb2Nlc3Nvci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJQcm9jZXNzb3IubTogUmVtb3ZlZC4KKwogMjAyMC0wMS0yMCAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEVYSUYgb3JpZW50YXRpb24g
aXMgaWdub3JlZCBmb3Igc29tZSBDU1MgaW1hZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJlNGY2MjVhMjJlMGUz
OThmYWI3MDJjMWZmMzEwNzkyMzk5MGIyZTkuLjMwZWFjNTJkYzJjMTg4NGM1ZGE0OTMwNTA3NjYz
MDg0MDUxOGI1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDEtMjIgIHlvdWVu
biBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNz
ZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNv
cmRlcjo6Y3JlYXRlKToKKyAgICAgICAgVXNlIG5ldyBjb25zdHJ1Y3Rvci4KKwogMjAyMC0wMS0y
MCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBtaXNz
aW5nIGhlYWRlciBndWFyZHMgYW5kIGNsZWFuIHVwIGVtcHR5IGZpbGVzIGluIFdlYkNvcmUsIFdl
YktpdExlZ2FjeSwgV2ViS2l0LCBUb29scwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ1YjNjZWFlZGVjZDYzMDY4M2E4ZDgwZTk4
MjJiM2RmNDFkNzYyMGUuLjQwNmVlZDA2NzZiNWVjZTU2ZTM2MGExYWY2NjJiZTcyYWFiZWRkMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEwOTcsNiArMTA5Nyw3IEBACiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBX
cml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyogV3JpdGFi
bGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJs
ZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlu
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
NkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBE
MDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxNkY3OTkwMjNENzUwQ0YwMDgyOUZDMSAv
KiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9OwogCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBG
MkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRy
b2xFbGVtZW50cy5oICovOyB9OwogCQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTc2MTJBQjFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRw
b2ludC5jcHAgKi87IH07CiAJCTQxNzYxMkIwMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5o
ICovOyB9OwpAQCAtMTEzNiw2ICsxMTM3LDcgQEAKIAkJNDFCMkE2MjYxRUYxQkY2RDAwMkI5RDdB
IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxQjJBNjI1MUVGMUJGNjAwMDJCOUQ3QSAvKiBXZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDFCRjIwNDkyMkJBN0JFODAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkYyMDQw
MjJCOTQ3MTYwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2
NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUNENkY4QzIz
RDZFODIxMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDRDZGOEIyM0Q2RTgxRDAw
QjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLzsgfTsKIAkJNDFEMDE1
Q0EwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29u
dGVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MUQxMjlDRTFGM0QwRUY2MDBEMTVFNDcgLyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkIyNzhE
MUYzNEMyODIwMDc5NTQ4NyAvKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5oICovOyB9OwogCQk0
MUQxMjlEMDFGM0QwRjA1MDBEMTVFNDcgLyogQ2FjaGVRdWVyeU9wdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkIyNzlCMUYzNENFRjAwMDc5
NTQ4NyAvKiBDYWNoZVF1ZXJ5T3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC03NDA4LDYgKzc0MTAsOCBAQAogCQk0MTZENzU5RjIwQzY0
NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAv
KiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZGNzk4RjIzRDc1MENCMDA4
MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcwQTJFOTFEOEMwQ0MwMDAzMTg0NTIgLyog
SlNET01XcmFwcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RE9NV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E4MTM1
NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNv
bnRyb2xFbGVtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNv
bnRyb2xFbGVtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzUxNCw2ICs3
NTE4LDggQEAKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRp
YVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
bnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdFMTA4
MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4OTIzRDZFODFDMDBCMTY0MjEgLyog
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUNGOEJFNTFENDYyMjIwMDA3MDdEQzkgLyog
RmV0Y2hCb2R5Q29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0
Y2hCb2R5Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1Qzgw
RjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
ODk5MSw2ICsxODk5NywxMCBAQAogCQk0RDNDMDVENDIxQUY0ODA5MDBGMjg5MEEgLyogY29jb2Eg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNkY3OThE
MjNENzUwQ0EwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAqLywKKwkJ
CQk0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tICovLAorCQkJCTQxQ0Q2Rjg5MjNENkU4MUMwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaCAqLywKKwkJCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovLAogCQkJCTRENzNGOTRDMjE4QzRBODcwMDNBM0VE
NiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggKi8sCiAJCQkJNEQ3M0Y5NEQy
MThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gKi8s
CiAJCQkpOwpAQCAtMzM5NTYsNiArMzM5NjYsNyBAQAogCQkJCURFQ0E3RDk2MUY5RTY3QjUwMEUz
QjY2MSAvKiBVbmlmaWVkU291cmNlMTM0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFQ0E3RDk3
MUY5RTY3QjUwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMTM1LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCURFQ0E3RDk4MUY5RTY3QjUwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMTM2LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTQxQ0Q2RjhDMjNENkU4MjEwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQlERUNBN0Q5OTFGOUU2N0I1MDBF
M0I2NjEgLyogVW5pZmllZFNvdXJjZTEzNy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERUNBN0Q5
QTFGOUU2N0I1MDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTEzOC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlERUNBN0Q5QjFGOUU2N0I1MDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTEzOS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTM0MzUyLDYgKzM0MzYzLDcgQEAKIAkJCQkyRDhCOTJGRjIwM0QxM0Ux
MDA5Qzg2OEYgLyogVW5pZmllZFNvdXJjZTUzMC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzIw
NDIwMjFGOUE5RjEwMDBCODFCMkEgLyogVXNlckFnZW50U2NyaXB0c0RhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0MzQjc5NzExOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTZGNzk5MDIzRDc1MENGMDA4MjlGQzEgLyogQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NFNjgzNDQx
OTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZCQzRBRjMxODk4ODE1NjAw
NDZFRTM4IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggNzNmMWQwYTE1
MTlmMmMwM2I5MWQ2OTUxMDUxMzVhNGYyMGQxZGE2NC4uMGIwOGQ5YmI3ZTFhZTI3YmMzNjA0MzFl
M2NmZjkwM2ZlOGJkODdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNs
dWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAi
TWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC02OCw3
ICs2OSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IE1l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KLSAgICBhdXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpjcmVhdGUoYXVkaW9UcmFjaywgdmlkZW9UcmFjayk7CisKKyAgICBhdXRvIHdyaXRlciA9
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoISFhdWRpb1RyYWNrLCAhIXZpZGVv
VHJhY2spOwogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzY1NTk3YmJkNTAxNmM5NDVlM2RlNzJlNzQzYTFhYzBlZDg4YzU4NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2Ft
cGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKKworQGludGVyZmFjZSBXZWJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhD
YWxsYmFjazooQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaykgY2FsbGJhY2sgY2FsbGJhY2tP
YmplY3Q6KHZvaWQqKSBjYWxsYmFja09iamVjdDsKKy0gKHZvaWQpZmluaXNoOworLSAodm9pZClh
ZGRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKWJ1ZmZlcjsKKy0gKENNU2FtcGxlQnVm
ZmVyUmVmKXBpY2tPdXRwdXRTYW1wbGVCdWZmZXI7CistIChDTVNhbXBsZUJ1ZmZlclJlZil0YWtl
T3V0cHV0U2FtcGxlQnVmZmVyOworCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3OWQ1Y2Y0MWQ2YzkwZmFiYmY5YWVm
NjcyZjI5MTRkYzAyNGM0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpA
QCAtMCwwICsxLDQ5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29kZWMuaD4KKyNpbmNsdWRlIDxBdWRp
b1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9G
b3JtYXQuaD4KKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworI2RlZmluZSBM
T1dfV0FURVJfVElNRV9JTl9TRUNPTkQgMC4xCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252ZXJ0ZXJSZWY7
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgeworICAg
IFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVlOworICAgIFJl
dGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX2lucHV0QnVmZmVyUXVldWU7CisgICAgZGlzcGF0
Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgQ01UaW1lIG1fbG93V2F0ZXJU
aW1lOworICAgIEJPT0wgbV9pc0VuY29kaW5nOworCisgICAgUmV0YWluUHRyPEF1ZGlvQ29udmVy
dGVyUmVmPiBtX2NvbnZlcnRlcjsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbV9z
b3VyY2VGb3JtYXQ7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1fZGVzdGluYXRp
b25Gb3JtYXQ7CisgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fZGVzdGlu
YXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICBOU051bWJlciAqbV9nZHJDb3VudE51bTsKKyAg
ICBVSW50MzIgbV9tYXhPdXRwdXRQYWNrZXRTaXplOworICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBh
Y2tldERlc2NyaXB0aW9uPiBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zOworCisgICAg
Q01UaW1lIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAgICBDTVRpbWUg
bV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wOworICAgIENNVGltZSBtX3JlbWFp
bmluZ1ByaW1lRHVyYXRpb247CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9zb3VyY2VCdWZmZXI7Cisg
ICAgVmVjdG9yPGNoYXI+IG1fZGVzdGluYXRpb25CdWZmZXI7CisKKyAgICBSZXRhaW5QdHI8Q01C
bG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsKKyAgICBzaXplX3QgbV9zYW1wbGVC
bG9ja0J1ZmZlclNpemU7CisgICAgc2l6ZV90IG1fY3VyT2Zmc2V0SW5TYW1wbGVCYnVmOworICAg
IEF1ZGlvRm9ybWF0SUQgbV9vdXRwdXRDb2RlY1R5cGU7Cit9CisKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aENhbGxiYWNrOihDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrKSBjYWxsYmFjayBj
YWxsYmFja09iamVjdDoodm9pZCopIGNhbGxiYWNrT2JqZWN0Cit7CisgICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBDTUJ1
ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01C
dWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0
Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZvdXRwdXRCdWZmZXJRdWV1ZSkp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBmb3IgbV9vdXRwdXRCdWZmZXJR
dWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07Cisg
ICAgICAgIHNlbGYgPSBuaWw7CisgICAgfQorICAgIG1fb3V0cHV0QnVmZmVyUXVldWUgPSBhZG9w
dENGKG91dHB1dEJ1ZmZlclF1ZXVlKTsKKworICAgIENNQnVmZmVyUXVldWVSZWYgaW5wdXRCdWZm
ZXJRdWV1ZTsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2Ft
cGxlQnVmZmVycygpLCAmaW5wdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZm
ZXJRdWV1ZUNyZWF0ZSBmb3IgbV9pbnB1dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICBbc2VsZiByZWxlYXNlXTsKKyAgICAgICAgc2VsZiA9IG5pbDsKKyAgICB9
CisgICAgbV9pbnB1dEJ1ZmZlclF1ZXVlID0gYWRvcHRDRihpbnB1dEJ1ZmZlclF1ZXVlKTsKKwor
ICAgIG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZShbQCJjb20u
YXBwbGUuV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiBVVEY4U3RyaW5nXSwgRElTUEFU
Q0hfUVVFVUVfU0VSSUFMKTsKKyAgICBtX2xvd1dhdGVyVGltZSA9IENNVGltZU1ha2VXaXRoU2Vj
b25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQsIDEwMDApOworICAgIG1fb3V0cHV0Q29kZWNU
eXBlID0ga0F1ZGlvRm9ybWF0TVBFRzRBQUM7CisgICAgbV9pc0VuY29kaW5nID0gWUVTOworCisg
ICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCks
IGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVyUXVldWVUcmlnZ2VyX1doZW5EYXRh
QmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywgTlVMTCk7CisKKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSkKKyAg
ICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOworCisgICAgW3N1
cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWZpbmlzaAoreworICAgIGRpc3BhdGNoX3N5bmMo
bV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBbc2VsZiBwcm9jZXNzU2FtcGxlQnVm
ZmVyc1VudGlsTG93V2F0ZXJUaW1lOmtDTVRpbWVJbnZhbGlkXTsKKyAgICAgICAgYXV0byBlcnJv
ciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkp
OworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJXZWJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgZmFp
bGVkICVkIiwgZXJyb3IpOworICAgICAgICBtX2lzRW5jb2RpbmcgPSBOTzsKKyAgICB9CisgICAg
KTsKK30KKworc3RhdGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVBy
b2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiAqbnVtT3V0cHV0UGFja2V0c1B0ciwgQXVkaW9C
dWZmZXJMaXN0ICpidWZmZXJMaXN0LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uICoqcGFj
a2V0RGVzY3JpcHRpb25PdXQsIHZvaWQgKndlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcikK
K3sKKyAgICBXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgKmNvbXByZXNzb3IgPSAoV2Vi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yICopd2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOworICAgIHJldHVybiBbY29tcHJlc3NvciBwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBh
Y2tldHM6bnVtT3V0cHV0UGFja2V0c1B0ciBidWZmZXJMaXN0OmJ1ZmZlckxpc3QgcGFja2V0RGVz
Y3JpcHRpb246cGFja2V0RGVzY3JpcHRpb25PdXRdOworfQorCistIChCT09MKWluaXRBdWRpb0Nv
bnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uOihDTUZvcm1hdERlc2NyaXB0aW9uUmVm
KWZvcm1hdERlc2NyaXB0aW9uIG91dHB1dEF1ZGlvRm9ybWF0SUQ6KEF1ZGlvRm9ybWF0SUQpb3V0
cHV0Rm9ybWF0SUQKK3sKKyAgICBjb25zdCBhdXRvICphdWRpb0Zvcm1hdExpc3RJdGVtID0gQ01B
dWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdChmb3JtYXREZXNj
cmlwdGlvbik7CisgICAgbV9zb3VyY2VGb3JtYXQgPSBhdWRpb0Zvcm1hdExpc3RJdGVtLT5tQVNC
RDsKKworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUZvcm1hdElEID0gb3V0cHV0Rm9ybWF0SUQ7
CisgICAgbV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fc291cmNlRm9ybWF0Lm1T
YW1wbGVSYXRlOworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgPSBt
X3NvdXJjZUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKyAgICBVSW50MzIgc2l6ZSA9IHNpemVv
ZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvRm9ybWF0
R2V0UHJvcGVydHkoa0F1ZGlvRm9ybWF0UHJvcGVydHlfRm9ybWF0SW5mbywgMCwgTlVMTCwgJnNp
emUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRpb0Zvcm1hdEdl
dFByb3BlcnR5IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gTk87Cisg
ICAgfQorCisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgY29udmVydGVyOworICAgIGlmIChhdXRvIGVy
cm9yID0gQXVkaW9Db252ZXJ0ZXJOZXcoJm1fc291cmNlRm9ybWF0LCAmbV9kZXN0aW5hdGlvbkZv
cm1hdCwgJmNvbnZlcnRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJOZXcgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisgICAgbV9j
b252ZXJ0ZXIgPSBhZG9wdENGKGNvbnZlcnRlcik7CisKKyAgICBzaXplX3QgY29va2llU2l6ZSA9
IDA7CisgICAgY29uc3Qgdm9pZCAqY29va2llID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0
TWFnaWNDb29raWUoZm9ybWF0RGVzY3JpcHRpb24sICZjb29raWVTaXplKTsKKyAgICBpZiAoY29v
a2llU2l6ZSkgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyU2V0UHJv
cGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdp
Y0Nvb2tpZSwgKFVJbnQzMiljb29raWVTaXplLCBjb29raWUpKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tpZSBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHNpemUgPSBzaXplb2YobV9zb3VyY2VGb3JtYXQpOworICAgIGlmIChhdXRvIGVy
cm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlv
Q29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAmbV9zb3VyY2VG
b3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ3VycmVudElu
cHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJl
dHVybiBOTzsKKyAgICB9CisKKyAgICBpZiAoIW1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIm1CeXRlc1BlclBh
Y2tldCBzaG91bGQgbm90IGJlIHplcm8iKTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKwor
ICAgIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlvbkZvcm1hdCk7CisgICAgaWYgKGF1dG8gZXJy
b3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9D
b252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAmbV9kZXN0aW5h
dGlvbkZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJX
ZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJDdXJy
ZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAg
ICAgIHJldHVybiBOTzsKKyAgICB9CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tRm9y
bWF0SUQgPT0ga0F1ZGlvRm9ybWF0TVBFRzRBQUMpIHsKKyAgICAgICAgVUludDMyIG91dHB1dEJp
dFJhdGUgPSA2NDAwMDsKKyAgICAgICAgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJh
dGUgPj0gNDQxMDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMTkyMDAwOworICAgICAg
ICBlbHNlIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlIDwgMjIwMDApCisgICAg
ICAgICAgICBvdXRwdXRCaXRSYXRlID0gMzIwMDA7CisKKyAgICAgICAgc2l6ZSA9IHNpemVvZihv
dXRwdXRCaXRSYXRlKTsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNl
dFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRSYXRl
LCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1
ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAg
ICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbV9kZXN0aW5h
dGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpIHsKKyAgICAgICAgLy8gSWYgdGhlIGRlc3RpbmF0
aW9uIGZvcm1hdCBpcyBWQlIsIHdlIG5lZWQgdG8gZ2V0IG1heCBzaXplIHBlciBwYWNrZXQgZnJv
bSB0aGUgY29udmVydGVyLgorICAgICAgICBzaXplID0gc2l6ZW9mKG1fbWF4T3V0cHV0UGFja2V0
U2l6ZSk7CisKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3Bl
cnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eU1heGltdW1PdXRw
dXRQYWNrZXRTaXplLCAmc2l6ZSwgJm1fbWF4T3V0cHV0UGFja2V0U2l6ZSkpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVtT3V0cHV0UGFj
a2V0U2l6ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBOTzsK
KyAgICAgICAgfQorICAgIH0KKworICAgIG1fc291cmNlQnVmZmVyLnJlc2VydmVDYXBhY2l0eShb
c2VsZiBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0Om1fc291cmNlRm9ybWF0IG1heE91
dHB1dFBhY2tldFNpemU6MCBkdXJhdGlvbjowLjFdKTsKKyAgICBtX2Rlc3RpbmF0aW9uQnVmZmVy
LnJlc2VydmVDYXBhY2l0eShbc2VsZiBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0Om1f
ZGVzdGluYXRpb25Gb3JtYXQgbWF4T3V0cHV0UGFja2V0U2l6ZTptX21heE91dHB1dFBhY2tldFNp
emUgZHVyYXRpb246MC4xXSk7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1Bl
clBhY2tldCkKKyAgICAgICAgbV9kZXN0aW5hdGlvblBhY2tldERlc2NyaXB0aW9ucy5yZXNlcnZl
Q2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpIC8gbV9tYXhPdXRwdXRQYWNr
ZXRTaXplKTsKKworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKHNpemVfdCljb21wdXRlQnVmZmVy
U2l6ZUZvckF1ZGlvRm9ybWF0OihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pZm9ybWF0IG1h
eE91dHB1dFBhY2tldFNpemU6KFVJbnQzMiltYXhPdXRwdXRQYWNrZXRTaXplIGR1cmF0aW9uOihG
bG9hdDMyKWR1cmF0aW9uCit7CisgICAgVUludDMyIG51bVBhY2tldHMgPSAoZm9ybWF0Lm1TYW1w
bGVSYXRlICogZHVyYXRpb24pIC8gZm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQ7CisgICAgVUludDMy
IG91dHB1dFBhY2tldFNpemUgPSBmb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gZm9ybWF0Lm1CeXRl
c1BlclBhY2tldCA6IG1heE91dHB1dFBhY2tldFNpemU7CisgICAgVUludDMyIGJ1ZmZlclNpemUg
PSBudW1QYWNrZXRzICogb3V0cHV0UGFja2V0U2l6ZTsKKworICAgIHJldHVybiBidWZmZXJTaXpl
OworfQorCistICh2b2lkKWF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkOihDTVNhbXBsZUJ1ZmZl
clJlZilidWZmZXIKK3sKKyAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQobV9yZW1haW5pbmdQcmlt
ZUR1cmF0aW9uKSkgeworICAgICAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8g
eyAwLCAwIH07CisgICAgICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKHByaW1lSW5mbyk7CisKKyAg
ICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVy
dGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8sICZzaXplLCAmcHJpbWVJbmZvKSkg
eworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVNYWtlKHByaW1lSW5mby5s
ZWFkaW5nRnJhbWVzLCBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlKTsKKyAgICB9CisK
KyAgICBpZiAoQ01USU1FX0NPTVBBUkVfSU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmlu
Z1ByaW1lRHVyYXRpb24pKSB7CisgICAgICAgIENNVGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2Ft
cGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsKKyAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlv
biA9IENNVGltZU1pbmltdW0oc2FtcGxlRHVyYXRpb24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlv
bik7CisgICAgICAgIENGRGljdGlvbmFyeVJlZiB0cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5
QXNEaWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgICAg
IENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJp
bUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnREaWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91
bGRQcm9wYWdhdGUpOworICAgICAgICBDRlJlbGVhc2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAg
ICAgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uID0gQ01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQ
cmltZUR1cmF0aW9uLCB0cmltRHVyYXRpb24pOworICAgIH0KK30KKworLSAoTlNOdW1iZXIgKiln
cmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudAoreworICAgIFVJbnQzMiBkZWxheVNpemUgPSBzaXpl
b2YodWludDMyX3QpOworICAgIHVpbnQzMl90IG9yaWdpbmFsRGVsYXlNb2RlID0gMDsKKyAgICBp
ZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0
KCksIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUsICZkZWxheVNpemUsICZvcmlnaW5hbERl
bGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVs
YXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAg
IH0KKworICAgIHVpbnQzMl90IG9wdGltYWxEZWxheU1vZGUgPSBrQXVkaW9Db2RlY0RlbGF5TW9k
ZV9PcHRpbWFsOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0
eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSwgZGVsYXlT
aXplLCAmb3B0aW1hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9D
b2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICBy
ZXR1cm4gbmlsOworICAgIH0KKworICAgIFVJbnQzMiBwcmltZVNpemUgPSBzaXplb2YoQXVkaW9D
b2RlY1ByaW1lSW5mbyk7CisgICAgQXVkaW9Db2RlY1ByaW1lSW5mbyBwcmltZUluZm8geyAwLCAw
IH07CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29u
dmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZvLCAmcHJpbWVTaXplLCAm
cHJpbWVJbmZvKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldl
YkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlQ
cmltZUluZm8gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgfQorCisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1f
Y29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCBkZWxheVNpemUs
ICZvcmlnaW5hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db2Rl
Y1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1
cm4gbmlsOworICAgIH0KKworICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoocHJp
bWVJbmZvLmxlYWRpbmdGcmFtZXMgLyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1GcmFtZXNQZXJQYWNr
ZXQpXTsKK30KKworLSAoQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tl
dHM6KFVJbnQzMiludW1QYWNrZXRzIGZpbGxCdWZmZXJMaXN0OihBdWRpb0J1ZmZlckxpc3QpZmls
bEJ1ZmZlckxpc3QKK3sKKyAgICBWZWN0b3I8Y2hhcj4gY29va2llOworICAgIGlmICghbV9kZXN0
aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIFVJbnQzMiBjb29raWVTaXplID0g
MDsKKworICAgICAgICBhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eUluZm8o
bV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29raWUs
ICZjb29raWVTaXplLCBOVUxMKTsKKyAgICAgICAgaWYgKChlcnJvciA9PSBub0VycikgJiYgISFj
b29raWVTaXplKSB7CisgICAgICAgICAgICBjb29raWUucmVzZXJ2ZUNhcGFjaXR5KGNvb2tpZVNp
emUpOworCisgICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJv
cGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWND
b29raWUsICZjb29raWVTaXplLCBjb29raWUuZGF0YSgpKSkgeworICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tpZSBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXN0aW5h
dGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQXVkaW9G
b3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmbV9kZXN0aW5hdGlv
bkZvcm1hdCwgMCwgTlVMTCwgY29va2llU2l6ZSwgY29va2llLmRhdGEoKSwgTlVMTCwgJmRlc3Rp
bmF0aW9uRm9ybWF0RGVzY3JpcHRpb24pKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAg
ICByZXR1cm4gbmlsOworICAgICAgICB9CisgICAgICAgIG1fZGVzdGluYXRpb25Gb3JtYXREZXNj
cmlwdGlvbiA9IGFkb3B0Q0YoZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbik7CisgICAgICAg
IG1fZ2RyQ291bnROdW0gPSBbc2VsZiBncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudF07CisgICAg
fQorCisgICAgY2hhciAqZGF0YSA9IHN0YXRpY19jYXN0PGNoYXIqPihmaWxsQnVmZmVyTGlzdC5t
QnVmZmVyc1swXS5tRGF0YSk7CisgICAgc2l6ZV90IGRhdGFTaXplID0gZmlsbEJ1ZmZlckxpc3Qu
bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZTsKKworICAgIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tC
dWZmZXI7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9y
eUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGRhdGFTaXplLCBrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBOVUxMLCAwLCBkYXRhU2l6ZSwga0NNQmxvY2tCdWZmZXJBc3N1cmVNZW1vcnlOb3dG
bGFnLCAmYmxvY2tCdWZmZXIpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3Ry
ZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQmxvY2tCdWZmZXJDcmVhdGVX
aXRoTWVtb3J5QmxvY2sgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBu
aWw7CisgICAgfQorICAgIGF1dG8gYnVmZmVyID0gYWRvcHRDRihibG9ja0J1ZmZlcik7CisKKyAg
ICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzKGRhdGEsIGJ1
ZmZlci5nZXQoKSwgMCwgZGF0YVNpemUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQmxvY2tCdWZmZXJS
ZXBsYWNlRGF0YUJ5dGVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4g
bmlsOworICAgIH0KKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKKyAgICBh
dXRvIGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlv
bnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLmdldCgpLCB0cnVlLCBOVUxMLCBOVUxMLCBt
X2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCksIG51bVBhY2tldHMsIG1fY3VycmVu
dE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCwgbV9kZXN0aW5hdGlvblBhY2tldERlc2NyaXB0
aW9ucy5kYXRhKCksICZzYW1wbGVCdWZmZXIpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBp
ZiAoW21fZ2RyQ291bnROdW0gaW50VmFsdWVdKQorICAgICAgICBDTVNldEF0dGFjaG1lbnQoc2Ft
cGxlQnVmZmVyLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0dyYWR1YWxEZWNvZGVyUmVm
cmVzaCwgKF9fYnJpZGdlIENGVHlwZVJlZiltX2dkckNvdW50TnVtLCBrQ01BdHRhY2htZW50TW9k
ZV9TaG91bGRQcm9wYWdhdGUpOworCisgICAgcmV0dXJuIHNhbXBsZUJ1ZmZlcjsKK30KKworLSAo
dm9pZClwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lOihDTVRpbWUpbG93V2F0
ZXJUaW1lCit7CisgICAgaWYgKCFtX2NvbnZlcnRlcikgeworICAgICAgICBhdXRvIGJ1ZmZlciA9
IChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZUdldEhl
YWQobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOworCisgICAgICAgIG1fY3VycmVudE5hdGl2
ZVByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGlt
ZVN0YW1wKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVT
dGFtcCA9IENNU2FtcGxlQnVmZmVyR2V0T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZl
cik7CisKKyAgICAgICAgYXV0byBmb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0
Rm9ybWF0RGVzY3JpcHRpb24oYnVmZmVyKTsKKyAgICAgICAgaWYgKCFbc2VsZiBpbml0QXVkaW9D
b252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbjpmb3JtYXREZXNjcmlwdGlvbiBvdXRw
dXRBdWRpb0Zvcm1hdElEOm1fb3V0cHV0Q29kZWNUeXBlXSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICB3aGlsZSAoQ01USU1FX0lTX0lOVkFMSUQobG93V2F0ZXJUaW1lKSB8fCBD
TVRJTUVfQ09NUEFSRV9JTkxJTkUobG93V2F0ZXJUaW1lLCA8LCBDTUJ1ZmZlclF1ZXVlR2V0RHVy
YXRpb24obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpIHsKKyAgICAgICAgQXVkaW9CdWZmZXJM
aXN0IGZpbGxCdWZmZXJMaXN0OworCisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1OdW1iZXJCdWZm
ZXJzID0gMTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5u
ZWxzID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKyAgICAgICAgZmls
bEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IChVSW50MzIpbV9kZXN0aW5h
dGlvbkJ1ZmZlci5jYXBhY2l0eSgpOworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1sw
XS5tRGF0YSA9IG1fZGVzdGluYXRpb25CdWZmZXIuZGF0YSgpOworCisgICAgICAgIFVJbnQzMiBv
dXRwdXRQYWNrZXRTaXplID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPyBt
X2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA6IG1fbWF4T3V0cHV0UGFja2V0U2l6
ZTsKKyAgICAgICAgVUludDMyIG51bU91dHB1dFBhY2tldHMgPSAoVUludDMyKW1fZGVzdGluYXRp
b25CdWZmZXIuY2FwYWNpdHkoKSAvIG91dHB1dFBhY2tldFNpemU7CisKKyAgICAgICAgYXV0byBl
cnJvciA9IEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIobV9jb252ZXJ0ZXIuZ2V0KCks
IGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MsIChfX2JyaWRnZSB2b2lkICopc2Vs
ZiwgJm51bU91dHB1dFBhY2tldHMsICZmaWxsQnVmZmVyTGlzdCwgbV9kZXN0aW5hdGlvblBhY2tl
dERlc2NyaXB0aW9ucy5kYXRhKCkpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW51
bU91dHB1dFBhY2tldHMpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFtzZWxmIHNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzOm51bU91dHB1dFBhY2tldHMgZmls
bEJ1ZmZlckxpc3Q6ZmlsbEJ1ZmZlckxpc3RdOworCisgICAgICAgIFtzZWxmIGF0dGFjaFByaW1p
bmdUcmltc0lmTmVlZGVkOmJ1ZmZlcl07CisKKyAgICAgICAgZXJyb3IgPSBDTVNhbXBsZUJ1ZmZl
clNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIsIG1fY3VycmVudE91dHB1dFBy
ZXNlbnRhdGlvblRpbWVTdGFtcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBDTVRpbWUgbmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1
ZmZlcik7CisgICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENN
VGltZUFkZChtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG5hdGl2ZUR1cmF0
aW9uKTsKKworICAgICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdl
dE91dHB1dER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1dFByZXNlbnRh
dGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1l
U3RhbXAsIG91dHB1dER1cmF0aW9uKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVldWVF
bnF1ZXVlKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAgIGlmIChl
cnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9
CisKKy0gKE9TU3RhdHVzKXByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0czooVUludDMy
ICopbnVtT3V0cHV0UGFja2V0c1B0ciBidWZmZXJMaXN0OihBdWRpb0J1ZmZlckxpc3QgKilhdWRp
b0J1ZmZlckxpc3QgcGFja2V0RGVzY3JpcHRpb246KEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRp
b24gKiopcGFja2V0RGVzY3JpcHRpb25PdXQKK3sKKyAgICBjb25zdCBVSW50MzIgbnVtUGFja2V0
c1RvQ29weSA9ICpudW1PdXRwdXRQYWNrZXRzUHRyOworICAgIHNpemVfdCBudW1CeXRlc1RvQ29w
eSA9IChudW1QYWNrZXRzVG9Db3B5ICogbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsK
KyAgICBzaXplX3QgY3VyT2Zmc2V0SW5TcmNCdWZmZXIgPSAwOworCisgICAgaWYgKGF1ZGlvQnVm
ZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnMgPT0gMSkgeworICAgICAgICBtX3NvdXJjZUJ1ZmZlci5y
ZXNlcnZlQ2FwYWNpdHkobnVtQnl0ZXNUb0NvcHkpOworCisgICAgICAgIHdoaWxlICgwIDwgbnVt
Qnl0ZXNUb0NvcHkpIHsKKyAgICAgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA8
PSBtX2N1ck9mZnNldEluU2FtcGxlQmJ1ZikgeworICAgICAgICAgICAgICAgIGlmIChtX3NhbXBs
ZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIg
PSBOVUxMOworICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJ
c0VtcHR5KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNh
bXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRS
ZXRhaW4obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsKKyAgICAgICAgICAgICAgICBtX3Nh
bXBsZUJsb2NrQnVmZmVyID0gYWRvcHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2
b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5n
ZXQoKSkpKSkpOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gQ01C
bG9ja0J1ZmZlckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgbV9jdXJPZmZzZXRJblNhbXBsZUJidWYgPSAwOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAg
IHNpemVfdCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmID0gc3RkOjptaW4obnVtQnl0ZXNU
b0NvcHksIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSAtIG1fY3VyT2Zmc2V0SW5TYW1wbGVCYnVm
KSk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURh
dGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1ck9mZnNldEluU2FtcGxlQmJ1
ZiwgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiwgKG1fc291cmNlQnVmZmVyLmRhdGEoKSAr
IGN1ck9mZnNldEluU3JjQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01C
bG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAg
ICAgICAgICAgICAgICBjdXJPZmZzZXRJblNyY0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21T
YW1wbGVCYnVmOworICAgICAgICAgICAgICAgIG1fY3VyT2Zmc2V0SW5TYW1wbGVCYnVmICs9IG51
bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IG1fc291cmNlQnVmZmVy
LmRhdGEoKTsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVT
aXplID0gY3VyT2Zmc2V0SW5TcmNCdWZmZXI7CisgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1
ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9zb3VyY2VGb3JtYXQubUNoYW5uZWxzUGVyRnJh
bWU7CisgICAgICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1
ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZl
cnMgPT0gMikKKyAgICAgICAgICAgIG51bUJ5dGVzVG9Db3B5ID0gbnVtQnl0ZXNUb0NvcHkgKiAy
OworCisgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVmZmVyUXVldWUu
Z2V0KCkpKSB7CisgICAgICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURh
dGFCeXRlU2l6ZSA9IDA7CisgICAgICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBd
Lm1OdW1iZXJDaGFubmVscyA9IDE7CisKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1
ZmZlcnNbMV0ubURhdGEgPSBudWxscHRyOworICAgICAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5t
QnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gMDsKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVyTGlz
dC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0gMTsKKworICAgICAgICAgICAgKm51bU91
dHB1dFBhY2tldHNQdHIgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byBz
YW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lk
Kj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgp
KSkpKTsKKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBhZG9wdENGKChDTUJsb2Nr
QnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDRlJldGFpbihDTVNhbXBsZUJ1ZmZlckdldERh
dGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKSkpKSk7CisgICAgICAgICAgICBtX3NhbXBsZUJs
b2NrQnVmZmVyU2l6ZSA9IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fc2FtcGxlQmxvY2tC
dWZmZXIuZ2V0KCkpOworICAgICAgICAgICAgbV9zb3VyY2VCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5
KG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGVycm9yID0g
Q01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSwgMCwg
bV9zYW1wbGVCbG9ja0J1ZmZlclNpemUsIG1fc291cmNlQnVmZmVyLmRhdGEoKSkpIHsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVybGVhdmVkIGRhdGEgYnkgdW5p
bnRlcmxlYXZpbmcgbV9zb3VyY2VCdWZmZXIgaWYgbmVlZGVkLgorICAgICAgICAgICAgQVNTRVJU
KG1fc291cmNlRm9ybWF0Lm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVy
bGVhdmVkKTsKKworICAgICAgICAgICAgYXV0byBidWZmZXJTaXplID0gbV9zYW1wbGVCbG9ja0J1
ZmZlclNpemUgLyAyOworICAgICAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5t
RGF0YSA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVyTGlz
dC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgICAgICAgICBh
dWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IDE7CisKKyAgICAg
ICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubURhdGEgPSBtX3NvdXJjZUJ1ZmZl
ci5kYXRhKCkgKyBidWZmZXJTaXplOworICAgICAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVm
ZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIGF1ZGlvQnVm
ZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0gMTsKKworICAgICAgICAgICAg
Km51bU91dHB1dFBhY2tldHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0
YUJ5dGVTaXplIC8gbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChwYWNrZXREZXNjcmlwdGlvbk91dCkgeworICAgICAgICAvLyBXZSBh
c3N1bWUgdGhhdCB0aGUgc291cmNlIGZvcm1hdCBpcyBQQ00sIHdoaWNoIGlzIG5vdCBWQlIsIGJ1
dCBDQlIuCisgICAgICAgIC8vIFNvLCB0aGVyZSBpcyBub3QgcGFja2V0IGRlc2NyaXB0aW9ucyBk
ZXNjcmliaW5nIHRoZSBsYXlvdXQgb2YgZWFjaCBwYWNrZXQuCisgICAgICAgICpwYWNrZXREZXNj
cmlwdGlvbk91dCA9IE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG5vRXJyOworfQorCistICh2
b2lkKXByb2Nlc3NTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNidWYKK3sKKyAgICBh
dXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgp
LCBzYnVmKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJX
ZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisKKyAgICBbc2VsZiBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGls
TG93V2F0ZXJUaW1lOm1fbG93V2F0ZXJUaW1lXTsKK30KKworLSAodm9pZClhZGRTYW1wbGVCdWZm
ZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNidWYKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFs
RGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykKKyAgICAgICAgICAg
IFtzZWxmIHByb2Nlc3NTYW1wbGVCdWZmZXI6c2J1Zl07CisgICAgfSk7Cit9CisKKy0gKENNU2Ft
cGxlQnVmZmVyUmVmKXBpY2tPdXRwdXRTYW1wbGVCdWZmZXIKK3sKKyAgICByZXR1cm4gKENNU2Ft
cGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0SGVhZChtX291
dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOworfQorCistIChDTVNhbXBsZUJ1ZmZlclJlZil0YWtl
T3V0cHV0U2FtcGxlQnVmZmVyCit7CisgICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZlclJlZikoY29u
c3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9vdXRwdXRCdWZm
ZXJRdWV1ZS5nZXQoKSkpKTsKK30KKworQGVuZAorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggYjE0N2NhMjg4MjliMGYxMDMw
YmRhNzRhMDg0MjZjNDU2NWU5ODcxZS4uNWMxYTlmMDA0ODkzN2M0ZDk5NDQxOGU2ZmVhOTg2NzUz
Y2IzY2JiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KQEAgLTM0LDExICszNSwxOCBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmlu
YXJ5U2VtYXBob3JlLmg+CisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+Cisj
aW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNh
bXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFx
dWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwordHlwZWRlZiBz
dHJ1Y3Qgb3BhcXVlQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiAqQ01CdWZmZXJRdWV1ZVRyaWdn
ZXJUb2tlbjsKIAogT0JKQ19DTEFTUyBBVkFzc2V0V3JpdGVyOwogT0JKQ19DTEFTUyBBVkFzc2V0
V3JpdGVySW5wdXQ7CitPQkpDX0NMQVNTIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZTsKK09CSkNf
Q0xBU1MgV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOworT0JKQ19DTEFTUyBXZWJWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWVkaWFU
aW1lOwpAQCAtNTAsNDEgKzU4LDU1IEBAIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiBj
bGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOwog
Ci1jbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV1RGOjpE
ZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcj4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdlYWtQdHJGYWN0b3J5SW5pdGlh
bGl6YXRpb246OkVhZ2VyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBh
dWRpb1RyYWNrLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdmlkZW9UcmFjayk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGJvb2wg
aGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgc3RhdGljIFJlZlB0cjxNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlk
ZW8pOwogICAgIH5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpOwogICAgIAotICAgIGJvb2wg
c2V0dXBXcml0ZXIoKTsKLSAgICBib29sIHNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KTsKLSAgICBib29sIHNldEF1ZGlvSW5wdXQoKTsKICAgICB2b2lkIGFwcGVuZFZpZGVvU2Ft
cGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxl
QnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNv
cmRpbmcoKTsKICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpPiYmKTsKIAorICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisK
IHByaXZhdGU6Ci0gICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNz
ZXRXcml0ZXI+JiYsIFN0cmluZyYmIHBhdGgpOworICAgIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiYmLCBib29sIGhhc0F1ZGlvLCBib29sIGhhc1Zp
ZGVvKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4g
bV93cml0ZXI7Ci0gICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV92aWRlb0lucHV0
OwotICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fYXVkaW9JbnB1dDsKLQotICAg
IFN0cmluZyBtX3BhdGg7Ci0gICAgTG9jayBtX3ZpZGVvTG9jazsKLSAgICBMb2NrIG1fYXVkaW9M
b2NrOwotICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmU7Ci0gICAg
QmluYXJ5U2VtYXBob3JlIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlOwotICAgIEJpbmFy
eVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZTsKKyAgICBzdGF0aWMgdm9p
ZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1
ZVRyaWdnZXJUb2tlbik7CisgICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVm
ZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOworCisgICAgdm9p
ZCBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAgdm9pZCBmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZm
ZXJzKCk7CisgICAgdm9pZCBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworCisgICAg
Ym9vbCBhcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKTsKKyAgICBib29sIGFwcGVu
ZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpOworCisgICAgdm9pZCBwcm9jZXNzTmV3Q29t
cHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOworICAgIHZvaWQgcHJvY2Vzc05ld0NvbXByZXNz
ZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKKwogICAgIGJvb2wgbV9oYXNTdGFydGVkV3JpdGluZyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU3RvcHBlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lz
Rmlyc3RBdWRpb1NhbXBsZSB7IHRydWUgfTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fYXVkaW9Q
dWxsUXVldWU7Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX3ZpZGVvUHVsbFF1ZXVlOwotICAgIERl
cXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4+IG1fdmlkZW9CdWZmZXJQb29sOwotICAg
IERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4+IG1fYXVkaW9CdWZmZXJQb29sOwor
CisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOworICAgIGJvb2wgbV9oYXNB
dWRpbzsKKyAgICBib29sIG1faGFzVmlkZW87CisKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNj
cmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOworICAgIFJldGFpblB0cjxXZWJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fYXVkaW9Db21wcmVzc29yOworICAgIFJldGFp
blB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fYXVkaW9Bc3NldFdyaXRlcklucHV0OworCisgICAg
UmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fdmlkZW9Gb3JtYXREZXNjcmlwdGlv
bjsKKyAgICBSZXRhaW5QdHI8V2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBtX3ZpZGVv
Q29tcHJlc3NvcjsKKyAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX3ZpZGVvQXNz
ZXRXcml0ZXJJbnB1dDsKKyAgICBDTVRpbWUgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1lOwor
ICAgIENNVGltZSBtX2xhc3RWaWRlb0RlY29kaW5nVGltZTsKKyAgICBib29sIG1faGFzRW5jb2Rl
ZFZpZGVvU2FtcGxlcyB7IGZhbHNlIH07CisKKyAgICBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRl
ckRlbGVnYXRlPiBtX3dyaXRlckRlbGVnYXRlOwogCiAgICAgYm9vbCBtX2lzU3RvcHBpbmcgeyBm
YWxzZSB9OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAyMzM1NGY0
Nzg0ZGUwOTJmMDQ4N2MxODU0ZmM1YjI2YTVlMjIxMWFjLi5hMDc4NGJiMDgzYTgwMWJhMzQ3ZWU3
NzQyMTNjNjQzMjViMGM4YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0yOCwxMTAgKzI4LDEzOCBAQAogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAorI2luY2x1ZGUgIkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaCIKKyNpbmNsdWRlICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNs
dWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3Nl
dFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQuaD4K
KyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcl9Qcml2YXRlLmg+CiAjaW5jbHVk
ZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvY2Yv
VHlwZUNhc3RzQ0YuaD4KIAogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5r
Lmg+CiAKLSN1bmRlZiBBVkVuY29kZXJCaXRSYXRlS2V5Ci0jZGVmaW5lIEFWRW5jb2RlckJpdFJh
dGVLZXkgZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZGb3Jt
YXRJREtleQotI2RlZmluZSBBVkZvcm1hdElES2V5IGdldEFWRm9ybWF0SURLZXlXaXRoRmFsbGJh
Y2soKQotI3VuZGVmIEFWTnVtYmVyT2ZDaGFubmVsc0tleQotI2RlZmluZSBBVk51bWJlck9mQ2hh
bm5lbHNLZXkgZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBB
VlNhbXBsZVJhdGVLZXkKLSNkZWZpbmUgQVZTYW1wbGVSYXRlS2V5IGdldEFWU2FtcGxlUmF0ZUtl
eVdpdGhGYWxsYmFjaygpCitAaW50ZXJmYWNlIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSA6IE5T
T2JqZWN0IDxBVkFzc2V0V3JpdGVyRGVsZWdhdGU+IHsKKyAgICBXZWFrUHRyPFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBtX3dyaXRlcjsKK30KIAotbmFtZXNwYWNlIFdlYkNv
cmUgeworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlciopd3JpdGVyOworLSAodm9pZCljbG9zZTsKKy0gKHZvaWQpZmluaXNo
OwogCi11c2luZyBuYW1lc3BhY2UgUEFMOworQGVuZAogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFW
Rm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQorQGltcGxlbWVudGF0aW9uIFdlYkFWQXNzZXRXcml0
ZXJEZWxlZ2F0ZSB7Cit9OworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKil3cml0ZXIKIHsKLSAgICBpZiAoUEFMOjpj
YW5Mb2FkX0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6
OmdldF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgpOworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoc2VsZikKKyAgICAgICAg
c2VsZi0+bV93cml0ZXIgPSBtYWtlV2Vha1B0cih3cml0ZXIpOwogCi0gICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkZvcm1hdElES2V5Iik7Ci0gICAgcmV0dXJu
IEAiQVZGb3JtYXRJREtleSI7CisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLXN0YXRpYyBOU1N0cmlu
ZyAqZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQpZGVhbGxv
YwogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVs
c0tleSgpKQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZD
aGFubmVsc0tleSgpOwotCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8g
bG9hZCBBVk51bWJlck9mQ2hhbm5lbHNLZXkiKTsKLSAgICByZXR1cm4gQCJBVk51bWJlck9mQ2hh
bm5lbHNLZXkiOworICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpn
ZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJhY2soKQorLSAodm9pZClhc3NldFdyaXRlcjooQVZB
c3NldFdyaXRlciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YToo
TlNEYXRhICopZnJhZ21lbnRlZEhlYWRlckRhdGEKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FW
Rm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FW
Rm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXkoKTsKKyAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0
ZXIpOworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2l6ZSA9
IFtmcmFnbWVudGVkSGVhZGVyRGF0YSBsZW5ndGhdKSB7CisgICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZT4oc2VsZiksIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgc2l6ZSldKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyKQor
ICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlci0+YXBwZW5kRGF0YShX
VEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxv
YWQgQVZTYW1wbGVSYXRlS2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZTYW1wbGVSYXRlS2V5IjsKKyAg
ICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRI
ZWFkZXJEYXRhIGxlbmd0aF0pOwogfQogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFWRW5jb2RlckJp
dFJhdGVLZXlXaXRoRmFsbGJhY2soKQorLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdyaXRl
ciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VGcmFnbWVudGVkTWVkaWFEYXRhOihOU0RhdGEgKilm
cmFnbWVudGVkTWVkaWFEYXRhIGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQ6KEFWRnJhZ21lbnRl
ZE1lZGlhRGF0YVJlcG9ydCAqKWZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQKIHsKLSAgICBpZiAo
UEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCkpCi0gICAgICAg
IHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgpOworICAg
IFVOVVNFRF9QQVJBTShhc3NldFdyaXRlcik7CisgICAgVU5VU0VEX1BBUkFNKGZyYWdtZW50ZWRN
ZWRpYURhdGFSZXBvcnQpOworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgaWYg
KGF1dG8gc2l6ZSA9IFtmcmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0pIHsKKyAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZBc3NldFdy
aXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkTWVkaWFEYXRhIGJ5dGVzXSks
IHNpemUpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLT5t
X3dyaXRlcikKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+bV93cml0ZXItPmFw
cGVuZERhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZh
aWxlZCB0byBsb2FkIEFWRW5jb2RlckJpdFJhdGVLZXkiKTsKLSAgICByZXR1cm4gQCJBVkVuY29k
ZXJCaXRSYXRlS2V5IjsKKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLT5hcHBl
bmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRl
c10pLCBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5ndGhdKTsKIH0KIAotUmVmUHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGNv
bnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBhdWRpb1RyYWNrLCBjb25zdCBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZSogdmlkZW9UcmFjaykKKy0gKHZvaWQpY2xvc2UKIHsKLSAgICBpbnQgd2lk
dGggPSAwLCBoZWlnaHQgPSAwOwotICAgIGlmICh2aWRlb1RyYWNrKSB7Ci0gICAgICAgIGF1dG8m
IHNldHRpbmdzID0gdmlkZW9UcmFjay0+c2V0dGluZ3MoKTsKLSAgICAgICAgd2lkdGggPSBzZXR0
aW5ncy53aWR0aCgpOwotICAgICAgICBoZWlnaHQgPSBzZXR0aW5ncy5oZWlnaHQoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIGNyZWF0ZSghIWF1ZGlvVHJhY2ssIHdpZHRoLCBoZWlnaHQpOworICAgIG1f
d3JpdGVyID0gbnVsbHB0cjsKIH0KIAotUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
PiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3
aWR0aCwgaW50IGhlaWdodCkKKy0gKHZvaWQpZmluaXNoCiB7Ci0gICAgTlNTdHJpbmcgKmRpcmVj
dG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAInZpZGVvcyIpOwot
ICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiLyVs
bGQubXA0IiwgQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSkudmFsdWVd
OwotICAgIE5TU3RyaW5nICpwYXRoID0gW2RpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmlu
ZzpmaWxlbmFtZV07CisgICAgbV93cml0ZXIgPSBudWxscHRyOworfQorCitAZW5kCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKIAotICAgIE5TVVJMICpvdXRwdXRVUkwgPSBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOnBhdGhdOwotICAgIFN0cmluZyBmaWxlUGF0aCA9IFtwYXRoIFVURjhTdHJpbmddOwor
dXNpbmcgbmFtZXNwYWNlIFBBTDsKKworUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
PiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGJvb2wg
aGFzVmlkZW8pCit7CiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgYXV0byBhdkFzc2V0
V3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRX
aXRoVVJMOm91dHB1dFVSTCBmaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7
CisgICAgYXV0byBhdkFzc2V0V3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0
ZXJJbnN0YW5jZSgpIGluaXRXaXRoRmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJv
cl0pOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNv
ZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29kZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpLCBXVEZNb3ZlKGZpbGVQYXRoKSkpOwotCi0g
ICAgaWYgKGhhc0F1ZGlvICYmICF3cml0ZXItPnNldEF1ZGlvSW5wdXQoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoV1RGTW92ZShhdkFzc2V0V3JpdGVyKSwgaGFzQXVkaW8sIGhhc1ZpZGVvKSk7Cit9
CiAKLSAgICBpZiAod2lkdGggJiYgaGVpZ2h0KSB7Ci0gICAgICAgIGlmICghd3JpdGVyLT5zZXRW
aWRlb0lucHV0KHdpZHRoLCBoZWlnaHQpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0
cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCAqbWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVm
ZmVyUXVldWVUcmlnZ2VyVG9rZW4pCit7CisgICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7
CisgICAgd3JpdGVyLT5wcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpOwor
fQogCi0gICAgcmV0dXJuIFdURk1vdmUod3JpdGVyKTsKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQgKm1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKQoreworICAg
IGF1dG8gKndyaXRlciA9IHN0YXRpY19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKj4o
bWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOworICAgIHdyaXRlci0+cHJvY2Vzc05ld0NvbXBy
ZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcnMoKTsKIH0KIAotTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiYm
IGF2QXNzZXRXcml0ZXIsIFN0cmluZyYmIGZpbGVQYXRoKQorTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVy
PiYmIGF2QXNzZXRXcml0ZXIsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pCiAgICAgOiBt
X3dyaXRlcihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpKQotICAgICwgbV9wYXRoKFdURk1vdmUoZmls
ZVBhdGgpKQorICAgICwgbV9oYXNBdWRpbyhoYXNBdWRpbykKKyAgICAsIG1faGFzVmlkZW8oaGFz
VmlkZW8pCiB7CisgICAgbV93cml0ZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJBVkFzc2V0V3Jp
dGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoV3JpdGVyOiB0aGlzXSk7CisgICAgW21fd3JpdGVy
LmdldCgpIHNldERlbGVnYXRlOm1fd3JpdGVyRGVsZWdhdGUuZ2V0KCldOworCisgICAgaWYgKG1f
aGFzVmlkZW8pCisgICAgICAgIG1fdmlkZW9Db21wcmVzc29yID0gYWRvcHROUyhbW1dlYlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBhbGxvY10gaW5pdFdpdGhDb2RlY1R5cGU6a0NNVmlkZW9D
b2RlY1R5cGVfSDI2NCBjYWxsYmFjazpjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFj
ayBjYWxsYmFja09iamVjdDp0aGlzXSk7CisgICAgCisgICAgaWYgKG1faGFzQXVkaW8pCisgICAg
ICAgIG1fYXVkaW9Db21wcmVzc29yID0gYWRvcHROUyhbW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZm
ZXJDYWxsYmFjayBjYWxsYmFja09iamVjdDp0aGlzXSk7CiB9CiAKIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQpAQCAtMTM5LDc5ICsxNjcs
MTQ2IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIoKQogICAgIGNsZWFyKCk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmNsZWFyKCkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdD
b21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCkKIHsKLSAgICBpZiAobV92aWRlb0lucHV0KSB7
Ci0gICAgICAgIG1fdmlkZW9JbnB1dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNl
KG1fdmlkZW9QdWxsUXVldWUpOwotICAgIH0KLSAgICBpZiAobV9hdWRpb0lucHV0KSB7Ci0gICAg
ICAgIG1fYXVkaW9JbnB1dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fYXVk
aW9QdWxsUXVldWUpOworICAgIEFTU0VSVChtX2hhc1ZpZGVvKTsKKyAgICBpZiAoIW1fdmlkZW9G
b3JtYXREZXNjcmlwdGlvbikgeworICAgICAgICBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24gPSBD
TVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKFttX3ZpZGVvQ29tcHJlc3NvciBwaWNr
T3V0cHV0U2FtcGxlQnVmZmVyXSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHIg
PSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10geworICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1f
aGFzQXVkaW8gJiYgIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgIHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICAgICAgfSk7CiAg
ICAgfQotICAgIGlmIChtX3dyaXRlcikKLSAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKyAgICBp
ZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21w
cmVzc2VkU2FtcGxlQnVmZmVycygpOworfQogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKLSAgICBp
ZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9u
SGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwordm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBsZUJ1
ZmZlcnMoKQoreworICAgIEFTU0VSVChtX2hhc0F1ZGlvKTsKKyAgICBpZiAoIW1fYXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbikgeworICAgICAgICBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNh
bXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKFttX2F1ZGlvQ29tcHJlc3NvciBwaWNrT3V0
cHV0U2FtcGxlQnVmZmVyXSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHIgPSBt
YWtlV2Vha1B0cih0aGlzKSwgdGhpc10geworICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1faGFz
VmlkZW8gJiYgIW1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbikKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICAgICAgfSk7CisgICAg
fQorICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGluZykKKyAgICAgICAgcmV0dXJuOworICAgIGFw
cGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CiB9CiAKLWJvb2wgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQordm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlcigpCiB7Ci0gICAgQVNT
RVJUKCFtX3ZpZGVvSW5wdXQpOwotICAgIAotICAgIE5TRGljdGlvbmFyeSAqY29tcHJlc3Npb25Q
cm9wZXJ0aWVzID0gQHsKLSAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDogW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAxMl0sCi0gICAgICAgIEFWVmlkZW9F
eHBlY3RlZFNvdXJjZUZyYW1lUmF0ZUtleSA6IEAoMzApLAotICAgICAgICBBVlZpZGVvTWF4S2V5
RnJhbWVJbnRlcnZhbEtleSA6IEAoMTIwKSwKLSAgICAgICAgQVZWaWRlb1Byb2ZpbGVMZXZlbEtl
eSA6IEFWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbAotICAgIH07Ci0KLSAgICBO
U0RpY3Rpb25hcnkgKnZpZGVvU2V0dGluZ3MgPSBAewotICAgICAgICBBVlZpZGVvQ29kZWNLZXk6
IEFWVmlkZW9Db2RlY0gyNjQsCi0gICAgICAgIEFWVmlkZW9XaWR0aEtleTogW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6d2lkdGhdLAotICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5OiBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpoZWlnaHRdLAotICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0
aWVzS2V5OiBjb21wcmVzc2lvblByb3BlcnRpZXMKLSAgICB9OworICAgIGlmIChtX2hhc1ZpZGVv
KSB7CisgICAgICAgIG1fdmlkZW9Bc3NldFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxv
Y0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5
cGVWaWRlbyBvdXRwdXRTZXR0aW5nczpuaWwgc291cmNlRm9ybWF0SGludDptX3ZpZGVvRm9ybWF0
RGVzY3JpcHRpb24uZ2V0KCldKTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRk
SW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpz
dGFydEFzc2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgdmlkZW8iKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6
bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBtX3ZpZGVv
SW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBp
bml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOnZpZGVvU2V0
dGluZ3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsKLSAgICBbbV92aWRlb0lucHV0IHNldEV4cGVj
dHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOworICAgIGlmIChtX2hhc0F1ZGlvKSB7CisgICAg
ICAgIG1fYXVkaW9Bc3NldFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRX
cml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBv
dXRwdXRTZXR0aW5nczpuaWwgc291cmNlRm9ybWF0SGludDptX2F1ZGlvRm9ybWF0RGVzY3JpcHRp
b24uZ2V0KCldKTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV9h
dWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0
V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgYXVkaW8iKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV9hdWRpb0Fz
c2V0V3JpdGVySW5wdXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBpZiAoIVttX3dyaXRlciBj
YW5BZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1dCA9
IG51bGxwdHI7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIHZp
ZGVvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgc3RhcnRXcml0
aW5nXSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBzdGFydFdyaXRpbmci
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92aWRl
b0lucHV0LmdldCgpXTsKLSAgICBtX3ZpZGVvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3Jl
YXRlKCJXZWJDb3JlVmlkZW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9RVUVV
RV9TRVJJQUwpOwotICAgIHJldHVybiB0cnVlOworCisgICAgW21fd3JpdGVyLmdldCgpIHN0YXJ0
U2Vzc2lvbkF0U291cmNlVGltZTprQ01UaW1lWmVyb107CisKKyAgICBhcHBlbmRDb21wcmVzc2Vk
U2FtcGxlQnVmZmVycygpOworCisgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7CiB9CiAK
LWJvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldEF1ZGlvSW5wdXQoKQorYm9vbCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVm
ZmVyKCkKIHsKLSAgICBBU1NFUlQoIW1fYXVkaW9JbnB1dCk7CisgICAgYXV0byBidWZmZXIgPSBh
ZG9wdENGKFttX2F1ZGlvQ29tcHJlc3NvciB0YWtlT3V0cHV0U2FtcGxlQnVmZmVyXSk7CisgICAg
aWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5TRGljdGlvbmFyeSAq
YXVkaW9TZXR0aW5ncyA9IEB7Ci0gICAgICAgIEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4MDAw
KSwKLSAgICAgICAgQVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAotICAg
ICAgICBBVk51bWJlck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAotICAgICAgICBBVlNhbXBsZVJhdGVL
ZXkgOiBAKDIyMDUwKQotICAgIH07CisgICAgaWYgKCFbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQg
aXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICBbbV93cml0ZXIgZmx1c2hdOworICAg
IFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVy
LmdldCgpXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIG1fYXVkaW9JbnB1dCA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFU
eXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6YXVkaW9TZXR0aW5ncyBzb3VyY2VG
b3JtYXRIaW50Om5pbF0pOwotICAgIFttX2F1ZGlvSW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUlu
UmVhbFRpbWU6dHJ1ZV07Ci0gICAgCi0gICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV9h
dWRpb0lucHV0LmdldCgpXSkgewotICAgICAgICBtX2F1ZGlvSW5wdXQgPSBudWxscHRyOwotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgInRoZSBhdWRpbyBpbnB1dCBpcyBu
b3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0ZXIiKTsKK2Jvb2wgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpCit7
CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKFttX3ZpZGVvQ29tcHJlc3NvciB0YWtlT3V0cHV0
U2FtcGxlQnVmZmVyXSk7CisgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgW21fd3JpdGVyIGFkZElucHV0Om1fYXVkaW9JbnB1dC5nZXQoKV07Ci0gICAg
bV9hdWRpb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUF1ZGlvUmVj
b3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKworICAgIG1f
bGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9u
VGltZVN0YW1wKGJ1ZmZlci5nZXQoKSk7CisgICAgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUgPSBD
TVNhbXBsZUJ1ZmZlckdldERlY29kZVRpbWVTdGFtcChidWZmZXIuZ2V0KCkpOworICAgIG1faGFz
RW5jb2RlZFZpZGVvU2FtcGxlcyA9IHRydWU7CisKKyAgICBpZiAoIVttX3ZpZGVvQXNzZXRXcml0
ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgIFttX3dyaXRlciBmbHVz
aF07CisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZl
cjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpCit7CisgICAg
d2hpbGUgKGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpIHx8IGFwcGVuZENvbXBy
ZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpKSB7IH07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBh
cHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3JpdGVySW5wdXQg
KmFzc2V0V3JpdGVySW5wdXQsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBk
ZWNvZGluZ1RpbWVTdGFtcCkKK3sKKyAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nSW5mbyA9
IHsga0NNVGltZUludmFsaWQsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZGVjb2RpbmdUaW1lU3Rh
bXB9OworCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyID0gTlVMTDsKKyAgICBhdXRvIGVy
cm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgdHJ1
ZSwgTlVMTCwgTlVMTCwgTlVMTCwgMCwgMSwgJnRpbWluZ0luZm8sIDAsIE5VTEwsICZidWZmZXIp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1
cmF0aW9uTWFya2VyIGZhaWxlZCBDTVNhbXBsZUJ1ZmZlckNyZWF0ZSB3aXRoICVkIiwgZXJyb3Ip
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRD
RihidWZmZXIpOworCisgICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NN
U2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwga0NG
Qm9vbGVhblRydWUsIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisgICAgaWYg
KCFbYXNzZXRXcml0ZXJJbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6c2FtcGxlQnVmZmVyLmdldCgp
XSkKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlciBhcHBlbmRTYW1wbGVCdWZmZXIgdG8gd3JpdGVyIGlucHV0IGZhaWxlZCIp
OworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRT
YW1wbGVCdWZmZXJzKCkKK3sKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOwor
ICAgIAorICAgIGlmIChtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMpCisgICAgICAgIGFwcGVuZEVu
ZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0Lmdl
dCgpLCBtX2xhc3RWaWRlb1ByZXNlbnRhdGlvblRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1l
KTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQoreworICAg
IGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKworICAgIG1fZGF0YSA9
IG51bGxwdHI7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0
Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsKK30KKwogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNv
cHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFtcChDTVNhbXBsZUJ1ZmZlclJlZiBvcmln
aW5hbEJ1ZmZlcikKIHsKICAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01D
bG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7CkBAIC0yMjEsNTggKzMxNiwyOSBAQCBzdGF0aWMgaW5s
aW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJy
ZW50VGltZVN0YW1wKAogICAgIFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWVJbmZvKGNv
dW50KTsKICAgICBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmlnaW5h
bEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJmNvdW50KTsKICAgICAKLSAgICBmb3Ig
KENNSXRlbUNvdW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgIGZvciAoYXV0byBpID0g
MDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1w
ID0ga0NNVGltZUludmFsaWQ7CiAgICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVT
dGFtcCA9IHN0YXJ0VGltZTsKICAgICB9CiAgICAgCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3
QnVmZmVyID0gbnVsbHB0cjsKLSAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVD
b3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291
bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcik7Ci0gICAgaWYgKGVycm9yKQorICAgIGlm
IChhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwg
Jm5ld0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3
VGltaW5nIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YobmV3QnVmZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZm
ZXJSZWYgc2FtcGxlQnVmZmVyKQogewotICAgIEFTU0VSVChtX3ZpZGVvSW5wdXQpOwotICAgIGlm
IChtX2lzU3RvcHBlZCkKKyAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29yKQogICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpIHsKLSAgICAgICAgaWYgKCFbbV93
cml0ZXIgc3RhcnRXcml0aW5nXSkgewotICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwot
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3Nl
dFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKVttX3dy
aXRlciBlcnJvcl0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIFtt
X3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dl
dEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsK
LSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlz
ID0gdGhpczsKLSAgICAgICAgW21fdmlkZW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5
T25RdWV1ZTptX3ZpZGVvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX3ZpZGVvTG9jayk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdmlkZW9CdWZmZXJQb29s
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBtX3ZpZGVvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsKLSAgICAgICAgICAg
ICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVv
SW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV0pCi0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAgICBpZiAo
bV9pc1N0b3BwZWQgJiYgbV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICAgICAgW21fdmlkZW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAgICAgICAgbV9m
aW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH1dOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIAogICAgIGF1dG8gYnVmZmVyV2l0
aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBs
ZUJ1ZmZlcik7CiAgICAgaWYgKCFidWZmZXJXaXRoQ3VycmVudFRpbWUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOwotICAgIG1fdmlk
ZW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcldpdGhDdXJyZW50VGltZSkpOworICAg
IFttX3ZpZGVvQ29tcHJlc3NvciBhZGRTYW1wbGVCdWZmZXI6YnVmZmVyV2l0aEN1cnJlbnRUaW1l
LmdldCgpXTsKIH0KIAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlv
blJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiBkZXNjcmlwdGlvbikKQEAgLTI4MCw4ICszNDYsMTAgQEAgc3RhdGljIGlubGluZSBS
ZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbihjb24KICAgICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25zdCBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9u
KCkuZGVzY3JpcHRpb24pOwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0ID0gbnVs
bHB0cjsKICAgICBhdXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24sIDAsIE5VTEwsIDAsIE5VTEwsIE5V
TEwsICZmb3JtYXQpOwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihmb3Jt
YXQpOwogfQogCkBAIC0yOTAsOTUgKzM1OCw2NiBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzYwog
ICAgIENNVGltZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVD
bG9jaygpKTsKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBudWxscHRyOwog
ICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2Ny
aXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgZm9y
bWF0LCBzYW1wbGVDb3VudCwgc3RhcnRUaW1lLCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsKLSAgICBp
ZiAoZXJyb3IpCisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgY3JlYXRlQXVkaW9TYW1wbGVC
dWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVm
ZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9T
YW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVf
dCBzYW1wbGVDb3VudCkKIHsKLSAgICBBU1NFUlQobV9hdWRpb0lucHV0KTsKLSAgICBpZiAoKCFt
X2hhc1N0YXJ0ZWRXcml0aW5nICYmIG1fdmlkZW9JbnB1dCkgfHwgbV9pc1N0b3BwZWQpCi0gICAg
ICAgIHJldHVybjsKICAgICBhdXRvIGZvcm1hdCA9IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRp
b24oZGVzY3JpcHRpb24pOwogICAgIGlmICghZm9ybWF0KQogICAgICAgICByZXR1cm47Ci0gICAg
aWYgKG1faXNGaXJzdEF1ZGlvU2FtcGxlKSB7Ci0gICAgICAgIGlmICghbV92aWRlb0lucHV0KSB7
Ci0gICAgICAgICAgICAvLyBhdWRpby1vbmx5IHJlY29yZGluZy4KLSAgICAgICAgICAgIGlmICgh
W21fd3JpdGVyIHN0YXJ0V3JpdGluZ10pIHsKLSAgICAgICAgICAgICAgICBtX2lzU3RvcHBlZCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgW21fd3JpdGVyIHN0YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNs
b2NrR2V0SG9zdFRpbWVDbG9jaygpKV07Ci0gICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5n
ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IGZhbHNl
OwotICAgICAgICBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRo
aXMgPSB0aGlzOwotICAgICAgICBbbV9hdWRpb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVh
ZHlPblF1ZXVlOm1fYXVkaW9QdWxsUXVldWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIVttX2F1ZGlvSW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fYXVkaW9Mb2NrKTsKLSAgICAgICAgICAgICAgICBpZiAobV9hdWRpb0J1ZmZlclBv
b2wuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBhdXRvIGJ1ZmZlciA9IG1fYXVkaW9CdWZmZXJQb29sLnRha2VGaXJzdCgpOwotICAgICAgICAg
ICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwotICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5w
dXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07Ci0gICAgICAgICAgICB9IHdoaWxl
ICh0cnVlKTsKLSAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX2F1ZGlvQnVmZmVyUG9v
bC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IG1hcmtBc0Zpbmlz
aGVkXTsKLSAgICAgICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS5zaWdu
YWwoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfV07Ci0gICAgfQogCiAgICAgYXV0byBzYW1w
bGVCdWZmZXIgPSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMo
Zm9ybWF0LmdldCgpLCBzYW1wbGVDb3VudCk7CiAgICAgaWYgKCFzYW1wbGVCdWZmZXIpCiAgICAg
ICAgIHJldHVybjsKKwogICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZm
ZXJGcm9tQXVkaW9CdWZmZXJMaXN0KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVm
YXVsdCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0
PihkYXRhKS5saXN0KCkpOwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlciBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0IGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7Ci0gICAgbV9hdWRpb0J1ZmZlclBvb2wuYXBw
ZW5kKFdURk1vdmUoc2FtcGxlQnVmZmVyKSk7CisgICAgW21fYXVkaW9Db21wcmVzc29yIGFkZFNh
bXBsZUJ1ZmZlcjpzYW1wbGVCdWZmZXIuZ2V0KCldOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKIHsKICAgICBpZiAobV9pc1N0b3BwZWQpCiAg
ICAgICAgIHJldHVybjsKLQorICAgIAogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKICAgICBpZiAo
IW1faGFzU3RhcnRlZFdyaXRpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoW21fd3Jp
dGVyIHN0YXR1c10gPT0gQVZBc3NldFdyaXRlclN0YXR1c1dyaXRpbmcpOwotICAgIGlmIChtX3Zp
ZGVvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLndhaXQoKTsK
IAotICAgIGlmIChtX2F1ZGlvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2Vt
YXBob3JlLndhaXQoKTsKKyAgICBbbV92aWRlb0NvbXByZXNzb3IgZmluaXNoXTsKKyAgICBbbV9h
dWRpb0NvbXByZXNzb3IgZmluaXNoXTsKKworICAgIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZl
cnMoKTsKKworICAgIFttX3dyaXRlciBmbHVzaF07CiAKICAgICBtX2lzU3RvcHBpbmcgPSB0cnVl
OwogICAgIFttX3dyaXRlciBmaW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlz
LCB3ZWFrUHRyID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgewotICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrUHRyID0gV1RGTW92ZSh3ZWFrUHRyKSwgYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1B0ciA9IFdURk1vdmUod2Vh
a1B0cildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKLSAgICAg
ICAgICAgIGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgaWYg
KG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1
ZmZlciA9IFdURk1vdmUobV9kYXRhKTsKICAgICAgICAgICAgICAgICBtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBtX2lzU3RvcHBlZCA9IGZhbHNlOwogICAgICAgICAgICAgbV9oYXNTdGFydGVkV3Jp
dGluZyA9IGZhbHNlOwotICAgICAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSB0cnVlOwog
ICAgICAgICAgICAgY2xlYXIoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIG1fZmluaXNoV3JpdGlu
Z1NlbWFwaG9yZS5zaWduYWwoKTsKICAgICB9XTsKLSAgICBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhv
cmUud2FpdCgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKQEAgLTM5Miw2ICs0MzEsMjUgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJl
ZEIKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCit2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKQoreworICAgIGlmICghbV9kYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAg
IGlmICghbV9kYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBtX2RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjdlYzA1OGY1YjI3NTllNTYxMjFhNTFi
YTFkNWIzOWRhYWVlYWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisKK3R5
cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKKwor
QGludGVyZmFjZSBXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgOiBOU09iamVjdAorCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlY1R5cGU6KENNVmlkZW9Db2RlY1R5cGUpIG91dHB1
dENvZGVjVHlwZSBjYWxsYmFjazooQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaykgY2FsbGJh
Y2sgY2FsbGJhY2tPYmplY3Q6KHZvaWQqKSBjYWxsYmFja09iamVjdDsKKy0gKHZvaWQpZmluaXNo
OworLSAodm9pZClhZGRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNidWY7CistIChD
TVNhbXBsZUJ1ZmZlclJlZilwaWNrT3V0cHV0U2FtcGxlQnVmZmVyOworLSAoQ01TYW1wbGVCdWZm
ZXJSZWYpdGFrZU91dHB1dFNhbXBsZUJ1ZmZlcjsKKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjgz
YmM5MmZmMGRhM2FmNzE3MWM0NDg3MjA2N2FlMjA5M2FhZTIzOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0
ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFZpZGVvVG9vbGJveC9WVENvbXByZXNz
aW9uU2Vzc2lvbi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGltcGxlbWVudGF0
aW9uIFdlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB7CisgICAgQ01CdWZmZXJRdWV1ZVJl
ZiBtX291dHB1dEJ1ZmZlclF1ZXVlOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNw
YXRjaFF1ZXVlOworICAgIEJPT0wgbV9pc0VuY29kaW5nOworICAgIFJldGFpblB0cjxWVENvbXBy
ZXNzaW9uU2Vzc2lvblJlZj4gbV92dFNlc3Npb247CisgICAgQ01WaWRlb0NvZGVjVHlwZSBtX291
dHB1dENvZGVjVHlwZTsKKyAgICBGbG9hdDY0IG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9u
OworICAgIE5TSW50ZWdlciBtX2V4cGVjdGVkRnJhbWVSYXRlOworfQorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhDb2RlY1R5cGU6KENNVmlkZW9Db2RlY1R5cGUpIG91dHB1dENvZGVjVHlwZSBj
YWxsYmFjazooQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaykgY2FsbGJhY2sgY2FsbGJhY2tP
YmplY3Q6KHZvaWQqKSBjYWxsYmFja09iamVjdAoreworICAgIEFTU0VSVChvdXRwdXRDb2RlY1R5
cGUpOworCisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRT
YW1wbGVCdWZmZXJzKCksICZtX291dHB1dEJ1ZmZlclF1ZXVlKTsKKyAgICBpZiAoZXJyb3IpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgdW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgcXVldWUgJWQiLCBlcnJvcik7
CisgICAgICAgIFtzZWxmIHJlbGVhc2VdOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKwor
ICAgIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcihtX291dHB1dEJ1ZmZlclF1ZXVlLCBjYWxs
YmFjaywgY2FsbGJhY2tPYmplY3QsIGtDTUJ1ZmZlclF1ZXVlVHJpZ2dlcl9XaGVuRGF0YUJlY29t
ZXNSZWFkeSwga0NNVGltZVplcm8sIE5VTEwpOworCisgICAgbV9zZXJpYWxEaXNwYXRjaFF1ZXVl
ID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKFtAImNvbS5hcHBsZS5XZWJWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IiIFVURjhTdHJpbmddLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworICAgIG1f
b3V0cHV0Q29kZWNUeXBlID0gb3V0cHV0Q29kZWNUeXBlOworICAgIG1fbWF4S2V5RnJhbWVJbnRl
cnZhbER1cmF0aW9uID0gMi4wOworICAgIG1fZXhwZWN0ZWRGcmFtZVJhdGUgPSAzMDsKKyAgICBt
X2lzRW5jb2RpbmcgPSBZRVM7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFs
bG9jCit7CisgICAgaWYgKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hf
cmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOworCisgICAgW3N1cGVyIGRlYWxsb2NdOwor
fQorCistICh2b2lkKWZpbmlzaAoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRj
aFF1ZXVlLCBeeworICAgICAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25Db21w
bGV0ZUZyYW1lcyhtX3Z0U2Vzc2lvbi5nZXQoKSwga0NNVGltZUludmFsaWQpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5k
T2ZEYXRhKG1fb3V0cHV0QnVmZmVyUXVldWUpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
RihlcnJvciwgTWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01C
dWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICAg
ICAgbV9pc0VuY29kaW5nID0gTk87CisgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIHZpZGVvQ29t
cHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cyBzdGF0dXMsIFZU
RW5jb2RlSW5mb0ZsYWdzLCBDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUYoc3RhdHVzLCBNZWRpYVN0cmVhbSwgIldlYlZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sgc3RhdHVzIGlzICVkIiwgc3RhdHVz
KTsKKyAgICBpZiAoc3RhdHVzICE9IG5vRXJyKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgKmNvbXByZXNzb3IgPSAoV2ViVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yICopcmVmQ29uOworCisgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVl
dWVFbnF1ZXVlKGNvbXByZXNzb3ItPm1fb3V0cHV0QnVmZmVyUXVldWUsIGJ1ZmZlcik7CisgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiV2ViVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVFbnF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworfQorCistIChCT09MKWluaXRDb21wcmVzc2lvblNlc3Npb246KENNVmlkZW9Gb3JtYXRE
ZXNjcmlwdGlvblJlZilmb3JtYXREZXNjcmlwdGlvbgoreworICAgIENNVmlkZW9EaW1lbnNpb25z
IGRpbWVuc2lvbnMgPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25zKGZvcm1h
dERlc2NyaXB0aW9uKTsKKyAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJTcGVjaWZpY2F0aW9ucyA9
IEB7KF9fYnJpZGdlIE5TU3RyaW5nICopa1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9FbmFi
bGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyOkBZRVN9OworCisgICAgVlRDb21wcmVz
c2lvblNlc3Npb25SZWYgdnRTZXNzaW9uOworICAgIGF1dG8gZXJyb3IgPSBWVENvbXByZXNzaW9u
U2Vzc2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkaW1lbnNpb25zLndpZHRoLCBkaW1l
bnNpb25zLmhlaWdodCwgbV9vdXRwdXRDb2RlY1R5cGUsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpZW5jb2RlclNwZWNpZmljYXRpb25zLCBOVUxMLCBOVUxMLCB2aWRlb0NvbXByZXNzaW9uQ2Fs
bGJhY2ssIChfX2JyaWRnZSB2b2lkICopc2VsZiwgJnZ0U2Vzc2lvbik7CisgICAgaWYgKGVycm9y
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorICAgIG1fdnRTZXNzaW9u
ID0gYWRvcHRDRih2dFNlc3Npb24pOworCisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0
eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwg
a0NGQm9vbGVhblRydWUpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0
cmVhbSwgIldlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0
eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCks
IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uLCAo
X19icmlkZ2UgQ0ZUeXBlUmVmKUAobV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24pKTsKKyAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9w
ZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwg
a1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdlIENG
VHlwZVJlZilAKG1fZXhwZWN0ZWRGcmFtZVJhdGUpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
RihlcnJvciwgTWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRT
ZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1l
UmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIGVycm9yID0gVlRDb21wcmVzc2lv
blNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCkpOworICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIldlYlZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKHZvaWQp
cHJvY2Vzc1NhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpYnVmZmVyCit7CisgICAgaWYg
KCFtX3Z0U2Vzc2lvbikgeworICAgICAgICBpZiAoIVtzZWxmIGluaXRDb21wcmVzc2lvblNlc3Np
b246Q01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpXSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gQ01TYW1wbGVCdWZm
ZXJHZXRJbWFnZUJ1ZmZlcihidWZmZXIpOworICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZVN0YW1w
ID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICBh
dXRvIGR1cmF0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgIGF1
dG8gZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKG1fdnRTZXNzaW9uLmdl
dCgpLCBpbWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgTlVMTCwg
KF9fYnJpZGdlIHZvaWQgKilzZWxmLCBOVUxMKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihl
cnJvciwgTWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21w
cmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKK30KKwor
LSAodm9pZClhZGRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKWJ1ZmZlcgoreworICAg
IGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBpZiAoIW1f
aXNFbmNvZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbc2VsZiBwcm9jZXNz
U2FtcGxlQnVmZmVyOmJ1ZmZlcl07CisgICAgfSk7Cit9CisKKy0gKENNU2FtcGxlQnVmZmVyUmVm
KXBpY2tPdXRwdXRTYW1wbGVCdWZmZXIKK3sKKyAgICByZXR1cm4gKENNU2FtcGxlQnVmZmVyUmVm
KShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0SGVhZChtX291dHB1dEJ1ZmZlclF1
ZXVlKSkpOworfQorCistIChDTVNhbXBsZUJ1ZmZlclJlZil0YWtlT3V0cHV0U2FtcGxlQnVmZmVy
Cit7CisgICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01C
dWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9vdXRwdXRCdWZmZXJRdWV1ZSkpKTsKK30KKwor
QGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IGNiMjRkZGJmMjc5ZmIyNjU5NDZhYTEy
MWNiMDcyMmI2MmI4YzZhZjcuLjc5YmIzMTgyZjNiZmZkYjAyYTU4ZWJjZTI4NzE1YWQ5NjEyMDU3
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXI+IFJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBNZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlY29yZEF1
ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7Ci0gICAgYXV0byB3cml0ZXIgPSBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKHJlY29yZEF1ZGlvLCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICBhdXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUocmVj
b3JkQXVkaW8sIHdpZHRoICYmIGhlaWdodCk7CiAgICAgaWYgKCF3cml0ZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNv
cmRlcj4obmV3IFJlbW90ZU1lZGlhUmVjb3JkZXIgeyBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBpZGVudGlmaWVyLCB3cml0ZXIucmVsZWFzZU5vbk51bGwoKSwgcmVjb3JkQXVkaW8gfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388428</attachid>
            <date>2020-01-22 09:15:41 -0800</date>
            <delta_ts>2020-01-22 10:01:23 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-206582-20200122181538.patch</filename>
            <type>text/plain</type>
            <size>99555</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE0ZjAwY2EzZGFkNjI1
MDkwYjYzMDVkNGE3ZGFjMzhjMWNmMjllNS4uZTRlODdiY2QxY2UyOGMzZDZhODAxNGZiMjYyZDZj
ZGIwZTRkMzM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIwLTAxLTIyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSBhbGxvd3MgdG8gZ3JhYiByZWNvcmRlZCBkYXRhIHdoZW5ldmVyIHdhbnRlZC4KKyAgICAgICAg
VGhpcyBkZWxlZ2F0ZSByZXF1aXJlcyBwYXNzaW5nIGNvbXByZXNzZWQgc2FtcGxlcyB0byBBVkFz
c2V0V3JpdGVyLgorICAgICAgICBJbXBsZW1lbnQgdmlkZW8gZW5jb2RpbmcgYW5kIGF1ZGlvIGVu
Y29kaW5nIGluIGRlZGljYXRlZCBjbGFzc2VzIGFuZCB1c2UgdGhlc2UgY2xhc3NlcyBiZWZvcmUg
YWRkaW5nIGJ1ZmZlcnMgdG8gQVZBc3NldFdyaXRlci4KKyAgICAgICAgU2luY2UgQVZBc3NldFdy
aXRlckRlbGVnYXRlIGlzIEFwcGxlIFNESyBvbmx5LCBrZWVwIHRoZSBleGlzdGluZyBmaWxlIGJh
c2VkIGltcGxlbWVudGF0aW9uIGFzIGEgZmFsbGJhY2suCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9B
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06IEFkZGVk
LgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgaW5pdFdpdGhDYWxs
YmFjazpjYWxsYmFja09iamVjdDpdKToKKyAgICAgICAgKC1bV2ViQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIGZpbmlzaF0pOgorICAgICAgICAoYXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRh
UHJvYyk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBpbml0QXVk
aW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbjpvdXRwdXRBdWRpb0Zvcm1hdElE
Ol0pOgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgY29tcHV0ZUJ1
ZmZlclNpemVGb3JBdWRpb0Zvcm1hdDptYXhPdXRwdXRQYWNrZXRTaXplOmR1cmF0aW9uOl0pOgor
ICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgYXR0YWNoUHJpbWluZ1Ry
aW1zSWZOZWVkZWQ6XSk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudF0pOgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3Igc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHM6ZmlsbEJ1ZmZlckxp
c3Q6XSk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBwcm9jZXNz
U2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lOl0pOgorICAgICAgICAoLVtXZWJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzOmJ1
ZmZlckxpc3Q6cGFja2V0RGVzY3JpcHRpb246XSk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBwcm9jZXNzU2FtcGxlQnVmZmVyOl0pOgorICAgICAgICAoLVtXZWJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgYWRkU2FtcGxlQnVmZmVyOl0pOgorICAgICAgICAo
LVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgcGlja091dHB1dFNhbXBsZUJ1ZmZlcl0p
OgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdGFrZU91dHB1dFNh
bXBsZUJ1ZmZlcl0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRWaWRlb091
dHB1dEJ1ZmZlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlv
U2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6c3RhcnRBc3NldFdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2Vk
VmlkZW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2VyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVC
dWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1l
U3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFw
cGVuZFZpZGVvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9TYW1wbGVCdWZm
ZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjphcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBpbml0V2l0aENvZGVjVHlwZTpjYWxsYmFjazpjYWxs
YmFja09iamVjdDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGZp
bmlzaF0pOgorICAgICAgICAodmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKToKKyAgICAgICAgKC1b
V2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGluaXRDb21wcmVzc2lvblNlc3Npb246XSk6
CisgICAgICAgICgtW1dlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBwcm9jZXNzU2FtcGxl
QnVmZmVyOl0pOgorICAgICAgICAoLVtXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgYWRk
U2FtcGxlQnVmZmVyOl0pOgorICAgICAgICAoLVtXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgcGlja091dHB1dFNhbXBsZUJ1ZmZlcl0pOgorICAgICAgICAoLVtXZWJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgdGFrZU91dHB1dFNhbXBsZUJ1ZmZlcl0pOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJQcm9jZXNzb3IuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxl
QnVmZmVyUHJvY2Vzc29yLm06IFJlbW92ZWQuCisKIDIwMjAtMDEtMjAgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBFWElGIG9yaWVudGF0aW9u
IGlzIGlnbm9yZWQgZm9yIHNvbWUgQ1NTIGltYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyZTRmNjI1YTIyZTBl
Mzk4ZmFiNzAyYzFmZjMxMDc5MjM5OTBiMmU5Li4zMGVhYzUyZGMyYzE4ODRjNWRhNDkzMDUwNzY2
MzA4NDA1MThiNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTIyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVj
b3JkZXI6OmNyZWF0ZSk6CisgICAgICAgIFVzZSBuZXcgY29uc3RydWN0b3IuCisKIDIwMjAtMDEt
MjAgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbWlz
c2luZyBoZWFkZXIgZ3VhcmRzIGFuZCBjbGVhbiB1cCBlbXB0eSBmaWxlcyBpbiBXZWJDb3JlLCBX
ZWJLaXRMZWdhY3ksIFdlYktpdCwgVG9vbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNWIzY2VhZWRlY2Q2MzA2ODNhOGQ4MGU5
ODIyYjNkZjQxZDc2MjBlLi45YTBjNmI5ZTFmYjk5NTljZGE4YmY0YjE4NDQzN2Q5MjFkNzZiNWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDk3LDYgKzEwOTcsNyBAQAogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyog
V3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFi
bGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRp
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MTZFNkZFOTFCQkQxMkU1MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEw
RDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTZGNzk5MDIzRDc1MENGMDA4MjlGQzEg
LyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8qIEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLzsgfTsKIAkJNDE3MjUzQUIxMzU0QkJCQzAwMzYw
RjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250
cm9sRWxlbWVudHMuaCAqLzsgfTsKIAkJNDE3NjEyQUYxRTNBOTk0MDAwQzNEODFEIC8qIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE3NjEyQUIxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwICovOyB9OwogCQk0MTc2MTJCMDFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE3NjEyQUMxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQu
aCAqLzsgfTsKQEAgLTExMzYsNiArMTEzNyw3IEBACiAJCTQxQjJBNjI2MUVGMUJGNkQwMDJCOUQ3
QSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUIyQTYyNTFFRjFCRjYwMDAyQjlEN0EgLyogV2ViQXVkaW9T
b3VyY2VQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxQkYyMDQ5MjJCQTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGMjA0
MDIyQjk0NzE2MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMx
NjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDRDZGOEMy
M0Q2RTgyMTAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQ0Q2RjhCMjNENkU4MUQw
MEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi87IH07CiAJCTQxRDAx
NUNBMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENv
bnRlbnRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDFEMTI5Q0UxRjNEMEVGNjAwRDE1RTQ3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCMjc4
RDFGMzRDMjgyMDA3OTU0ODcgLyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuaCAqLzsgfTsKIAkJ
NDFEMTI5RDAxRjNEMEYwNTAwRDE1RTQ3IC8qIENhY2hlUXVlcnlPcHRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCMjc5QjFGMzRDRUYwMDA3
OTU0ODcgLyogQ2FjaGVRdWVyeU9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzQwOCw2ICs3NDEwLDkgQEAKIAkJNDE2RDc1OUYyMEM2
NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTZFMEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUg
LyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV29ya2VyUmVwb3J0aW5nUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDE2Rjc5OEQyM0Q3NTBDQTAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2Rjc5OEYyM0Q3NTBDQjAw
ODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2Rjc5OTMyM0Q4QjY5QzAwODI5RkMxIC8q
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hRmlsZUJhc2VkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcwQTJFOTFE
OEMwQ0MwMDAzMTg0NTIgLyogSlNET01XcmFwcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRE9NV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxNzI1M0E4MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E5MTM1NEJCQkMw
MDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzUxNCw2ICs3NTE5LDggQEAKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8q
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQzdFMTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4OTIz
RDZFODFDMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyog
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUNGOEJFNTFE
NDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xODk5MSw4ICsxODk5OCwxMyBAQAogCQk0RDNDMDVENDIxQUY0ODA5
MDBGMjg5MEEgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTQxNkY3OThEMjNENzUwQ0EwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IuaCAqLywKKwkJCQk0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLm1tICovLAogCQkJCTRENzNGOTRDMjE4QzRBODcwMDNBM0VENiAv
KiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggKi8sCiAJCQkJNEQ3M0Y5NEQyMThD
NEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gKi8sCisJ
CQkJNDE2Rjc5OTMyM0Q4QjY5QzAwODI5RkMxIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2FGaWxlQmFzZWQubW0gKi8sCisJCQkJNDFDRDZGODkyM0Q2RTgxQzAwQjE2NDIxIC8qIFZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovLAorCQkJCTQxQ0Q2RjhCMjNENkU4MUQwMEIx
NjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxMzY4LDYgKzMxMzgw
LDcgQEAKIAkJCQkxMTk5RkE0NjIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2RjI2QkI2QzIzMzQzRTZGMDAyRjJCRUEgLyogTGF5b3V0Q29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTEzMTBDRjUyMEJBNEE0QzAwNjVBOEQwIC8qIExh
eW91dERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQxODAyNTUyM0Q0
NTQ5QjAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRBQkFCREQyMzYwODhGRTAwRkE0MzQ1IC8qIExheW91dEludGVncmF0aW9uTGluZUxh
eW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTEzMTBDRjQyMEJBNEEzRDAwNjVBOEQwIC8qIExh
eW91dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1RkU2OTUzMDBDNEMw
N0UgLyogTGF5b3V0TWlsZXN0b25lLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMDYyLDcgKzMyMDc1
LDYgQEAKIAkJCQk0NThGRTQwQTE1ODlERjBCMDA1NjA5RTYgLyogUmVuZGVyU2VhcmNoRmllbGQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTFBNTRGMEYzOTIzMzEwMEMzNzg4NCAvKiBSZW5kZXJT
ZWxlY3Rpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjI0N0E2RDBBRkQ2MzgzMDAzRkE1
RkQgLyogUmVuZGVyU2xpZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDE4MDI1NTIzRDQ1NDlC
MDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzMTk1NUE4ODE2MEQxOTkyMDA4NTgwMjUgLyogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCBp
biBIZWFkZXJzICovLAogCQkJCUJDOEM4RkFFMEREQ0QzMUIwMEI1OTJGNCAvKiBSZW5kZXJTdHls
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2NjgwRTgxQ0I3MTAwQjI1OTY1IC8qIFJlbmRl
clN0eWxlQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjI1LDYgKzMzNjM3LDcgQEAK
IAkJCQlBOTc4N0NCNDFGNUY1QzY2MDBDNTUxQzYgLyogQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENTU5NjkxMTQ3NUI2Nzgw
MDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE2
Rjc5OTAyM0Q3NTBDRjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBp
biBTb3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Np
b25JT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2NDMgLyog
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBE
ODE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM0
MzU2LDYgKzM0MzY5LDcgQEAKIAkJCQk3QzczRkIwNzE5MUVGNDE3MDA3REUwNjEgLyogVXNlck1l
c3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzRkJDNEFGMzE4
OTg4MTU2MDA0NkVFMzggLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1MkQ1QTE4RjFDNTQ1OTIzMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyT2JqQy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxQ0Q2RjhDMjNENkU4MjEw
MEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCRTg4RTBERTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCRTg4RTBFMTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzMzZGNjcxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJh
Y2tQcml2YXRlQVZGT2JqQy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsLmNwcAppbmRleCA3M2YxZDBhMTUxOWYyYzAzYjkxZDY5NTEwNTEzNWE0
ZjIwZDFkYTY0Li5kNDc5MzQ4ODM4NjE5MTdmNmIzNjBlZjE0ZGQ4MmMxZTM1M2IyYWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24uaCIKKyNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCiAj
aW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTY4LDcgKzY5LDE0IEBAIHN0ZDo6dW5pcXVl
X3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbDo6Y3JlYXRlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBh
dXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYXVkaW9UcmFj
aywgdmlkZW9UcmFjayk7CisKKyAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOworICAgIGlm
ICh2aWRlb1RyYWNrKSB7CisgICAgICAgIGF1dG8mIHNldHRpbmdzID0gdmlkZW9UcmFjay0+c2V0
dGluZ3MoKTsKKyAgICAgICAgd2lkdGggPSBzZXR0aW5ncy53aWR0aCgpOworICAgICAgICBoZWln
aHQgPSBzZXR0aW5ncy5oZWlnaHQoKTsKKyAgICB9CisgICAgYXV0byB3cml0ZXIgPSBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKCEhYXVkaW9UcmFjaywgd2lkdGgsIGhlaWdodCk7
CiAgICAgaWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjU1OTdi
YmQ1MDE2Yzk0NWUzZGU3MmU3NDNhMWFjMGVkODhjNTg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPENv
cmVNZWRpYS9Db3JlTWVkaWEuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZm
ZXIgKkNNU2FtcGxlQnVmZmVyUmVmOworCitAaW50ZXJmYWNlIFdlYkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENhbGxiYWNr
OihDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrKSBjYWxsYmFjayBjYWxsYmFja09iamVjdDoo
dm9pZCopIGNhbGxiYWNrT2JqZWN0OworLSAodm9pZClmaW5pc2g7CistICh2b2lkKWFkZFNhbXBs
ZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpYnVmZmVyOworLSAoQ01TYW1wbGVCdWZmZXJSZWYp
cGlja091dHB1dFNhbXBsZUJ1ZmZlcjsKKy0gKENNU2FtcGxlQnVmZmVyUmVmKXRha2VPdXRwdXRT
YW1wbGVCdWZmZXI7CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc5ZDVjZjQxZDZjOTBmYWJiZjlhZWY2NzJmMjkx
NGRjMDI0YzRmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0wLDAg
KzEsNDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db2RlYy5oPgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJv
eC9BdWRpb0NvbnZlcnRlci5oPgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0Zvcm1hdC5o
PgorI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCisjZGVmaW5lIExPV19XQVRF
Ul9USU1FX0lOX1NFQ09ORCAwLjEKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3R5cGVk
ZWYgc3RydWN0IE9wYXF1ZUF1ZGlvQ29udmVydGVyKiBBdWRpb0NvbnZlcnRlclJlZjsKKworQGlt
cGxlbWVudGF0aW9uIFdlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB7CisgICAgUmV0YWlu
UHRyPENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CisgICAgUmV0YWluUHRy
PENNQnVmZmVyUXVldWVSZWY+IG1faW5wdXRCdWZmZXJRdWV1ZTsKKyAgICBkaXNwYXRjaF9xdWV1
ZV90IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKKyAgICBDTVRpbWUgbV9sb3dXYXRlclRpbWU7Cisg
ICAgQk9PTCBtX2lzRW5jb2Rpbmc7CisKKyAgICBSZXRhaW5QdHI8QXVkaW9Db252ZXJ0ZXJSZWY+
IG1fY29udmVydGVyOworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX3NvdXJjZUZv
cm1hdDsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbV9kZXN0aW5hdGlvbkZvcm1h
dDsKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9kZXN0aW5hdGlvbkZv
cm1hdERlc2NyaXB0aW9uOworICAgIE5TTnVtYmVyICptX2dkckNvdW50TnVtOworICAgIFVJbnQz
MiBtX21heE91dHB1dFBhY2tldFNpemU7CisgICAgVmVjdG9yPEF1ZGlvU3RyZWFtUGFja2V0RGVz
Y3JpcHRpb24+IG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnM7CisKKyAgICBDTVRpbWUg
bV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wOworICAgIENNVGltZSBtX2N1cnJl
bnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXA7CisgICAgQ01UaW1lIG1fcmVtYWluaW5nUHJp
bWVEdXJhdGlvbjsKKworICAgIFZlY3RvcjxjaGFyPiBtX3NvdXJjZUJ1ZmZlcjsKKyAgICBWZWN0
b3I8Y2hhcj4gbV9kZXN0aW5hdGlvbkJ1ZmZlcjsKKworICAgIFJldGFpblB0cjxDTUJsb2NrQnVm
ZmVyUmVmPiBtX3NhbXBsZUJsb2NrQnVmZmVyOworICAgIHNpemVfdCBtX3NhbXBsZUJsb2NrQnVm
ZmVyU2l6ZTsKKyAgICBzaXplX3QgbV9jdXJPZmZzZXRJblNhbXBsZUJidWY7CisgICAgQXVkaW9G
b3JtYXRJRCBtX291dHB1dENvZGVjVHlwZTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q2FsbGJhY2s6KENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2spIGNhbGxiYWNrIGNhbGxiYWNr
T2JqZWN0Oih2b2lkKikgY2FsbGJhY2tPYmplY3QKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRd
OworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIENNQnVmZmVyUXVl
dWVSZWYgb3V0cHV0QnVmZmVyUXVldWU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1
ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFj
a3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX291dHB1dEJ1ZmZlclF1ZXVlIGZh
aWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICBbc2VsZiByZWxlYXNlXTsKKyAgICAgICAg
c2VsZiA9IG5pbDsKKyAgICB9CisgICAgbV9vdXRwdXRCdWZmZXJRdWV1ZSA9IGFkb3B0Q0Yob3V0
cHV0QnVmZmVyUXVldWUpOworCisgICAgQ01CdWZmZXJRdWV1ZVJlZiBpbnB1dEJ1ZmZlclF1ZXVl
OworICAgIGlmIChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZm
ZXJzKCksICZpbnB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVl
Q3JlYXRlIGZvciBtX2lucHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgIFtzZWxmIHJlbGVhc2VdOworICAgICAgICBzZWxmID0gbmlsOworICAgIH0KKyAgICBt
X2lucHV0QnVmZmVyUXVldWUgPSBhZG9wdENGKGlucHV0QnVmZmVyUXVldWUpOworCisgICAgbV9z
ZXJpYWxEaXNwYXRjaFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKFtAImNvbS5hcHBsZS5X
ZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiIFVURjhTdHJpbmddLCBESVNQQVRDSF9RVUVV
RV9TRVJJQUwpOworICAgIG1fbG93V2F0ZXJUaW1lID0gQ01UaW1lTWFrZVdpdGhTZWNvbmRzKExP
V19XQVRFUl9USU1FX0lOX1NFQ09ORCwgMTAwMCk7CisgICAgbV9vdXRwdXRDb2RlY1R5cGUgPSBr
QXVkaW9Gb3JtYXRNUEVHNEFBQzsKKyAgICBtX2lzRW5jb2RpbmcgPSBZRVM7CisKKyAgICBDTUJ1
ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgY2FsbGJh
Y2ssIGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hlbkRhdGFCZWNvbWVz
UmVhZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2
b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKQorICAgICAgICBk
aXNwYXRjaF9yZWxlYXNlKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSk7CisKKyAgICBbc3VwZXIgZGVh
bGxvY107Cit9CisKKy0gKHZvaWQpZmluaXNoCit7CisgICAgZGlzcGF0Y2hfc3luYyhtX3Nlcmlh
bERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIFtzZWxmIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50
aWxMb3dXYXRlclRpbWU6a0NNVGltZUludmFsaWRdOworICAgICAgICBhdXRvIGVycm9yID0gQ01C
dWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBmYWlsZWQgJWQi
LCBlcnJvcik7CisgICAgICAgIG1faXNFbmNvZGluZyA9IE5POworICAgIH0KKyAgICApOworfQor
CitzdGF0aWMgT1NTdGF0dXMgYXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYyhBdWRp
b0NvbnZlcnRlclJlZiwgVUludDMyICpudW1PdXRwdXRQYWNrZXRzUHRyLCBBdWRpb0J1ZmZlckxp
c3QgKmJ1ZmZlckxpc3QsIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24gKipwYWNrZXREZXNj
cmlwdGlvbk91dCwgdm9pZCAqd2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKQoreworICAg
IFdlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciAqY29tcHJlc3NvciA9IChXZWJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgKil3ZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7Cisg
ICAgcmV0dXJuIFtjb21wcmVzc29yIHByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0czpu
dW1PdXRwdXRQYWNrZXRzUHRyIGJ1ZmZlckxpc3Q6YnVmZmVyTGlzdCBwYWNrZXREZXNjcmlwdGlv
bjpwYWNrZXREZXNjcmlwdGlvbk91dF07Cit9CisKKy0gKEJPT0wpaW5pdEF1ZGlvQ29udmVydGVy
Rm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb246KENNRm9ybWF0RGVzY3JpcHRpb25SZWYpZm9ybWF0
RGVzY3JpcHRpb24gb3V0cHV0QXVkaW9Gb3JtYXRJRDooQXVkaW9Gb3JtYXRJRClvdXRwdXRGb3Jt
YXRJRAoreworICAgIGNvbnN0IGF1dG8gKmF1ZGlvRm9ybWF0TGlzdEl0ZW0gPSBDTUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0KGZvcm1hdERlc2NyaXB0aW9u
KTsKKyAgICBtX3NvdXJjZUZvcm1hdCA9IGF1ZGlvRm9ybWF0TGlzdEl0ZW0tPm1BU0JEOworCisg
ICAgbV9kZXN0aW5hdGlvbkZvcm1hdC5tRm9ybWF0SUQgPSBvdXRwdXRGb3JtYXRJRDsKKyAgICBt
X2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlID0gbV9zb3VyY2VGb3JtYXQubVNhbXBsZVJh
dGU7CisgICAgbV9kZXN0aW5hdGlvbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IG1fc291cmNl
Rm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lOworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKG1fZGVz
dGluYXRpb25Gb3JtYXQpOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Gb3JtYXRHZXRQcm9w
ZXJ0eShrQXVkaW9Gb3JtYXRQcm9wZXJ0eV9Gb3JtYXRJbmZvLCAwLCBOVUxMLCAmc2l6ZSwgJm1f
ZGVzdGluYXRpb25Gb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3Ry
ZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIEF1ZGlvRm9ybWF0R2V0UHJvcGVy
dHkgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisK
KyAgICBBdWRpb0NvbnZlcnRlclJlZiBjb252ZXJ0ZXI7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBB
dWRpb0NvbnZlcnRlck5ldygmbV9zb3VyY2VGb3JtYXQsICZtX2Rlc3RpbmF0aW9uRm9ybWF0LCAm
Y29udmVydGVyKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldl
YkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRpb0NvbnZlcnRlck5ldyBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKyAgICBtX2NvbnZlcnRl
ciA9IGFkb3B0Q0YoY29udmVydGVyKTsKKworICAgIHNpemVfdCBjb29raWVTaXplID0gMDsKKyAg
ICBjb25zdCB2b2lkICpjb29raWUgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nv
b2tpZShmb3JtYXREZXNjcmlwdGlvbiwgJmNvb2tpZVNpemUpOworICAgIGlmIChjb29raWVTaXpl
KSB7CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSht
X2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29va2ll
LCAoVUludDMyKWNvb2tpZVNpemUsIGNvb2tpZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRp
bmcga0F1ZGlvQ29udmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29va2llIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAgICB9CisgICAgfQorCisg
ICAgc2l6ZSA9IHNpemVvZihtX3NvdXJjZUZvcm1hdCk7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBB
dWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0
ZXJDdXJyZW50SW5wdXRTdHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX3NvdXJjZUZvcm1hdCkp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50SW5wdXRTdHJl
YW1EZXNjcmlwdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIE5P
OworICAgIH0KKworICAgIGlmICghbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAibUJ5dGVzUGVyUGFja2V0IHNo
b3VsZCBub3QgYmUgemVybyIpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorCisgICAgc2l6
ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1
ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRl
ckN1cnJlbnRPdXRwdXRTdHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9y
bWF0KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRPdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIE5POworICAgIH0KKworICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9
PSBrQXVkaW9Gb3JtYXRNUEVHNEFBQykgeworICAgICAgICBVSW50MzIgb3V0cHV0Qml0UmF0ZSA9
IDY0MDAwOworICAgICAgICBpZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA+PSA0
NDEwMCkKKyAgICAgICAgICAgIG91dHB1dEJpdFJhdGUgPSAxOTIwMDA7CisgICAgICAgIGVsc2Ug
aWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPCAyMjAwMCkKKyAgICAgICAgICAg
IG91dHB1dEJpdFJhdGUgPSAzMjAwMDsKKworICAgICAgICBzaXplID0gc2l6ZW9mKG91dHB1dEJp
dFJhdGUpOworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVy
dHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckVuY29kZUJpdFJhdGUsIHNpemUs
ICZvdXRwdXRCaXRSYXRlKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db252
ZXJ0ZXJFbmNvZGVCaXRSYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAg
cmV0dXJuIE5POworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9y
bWF0Lm1CeXRlc1BlclBhY2tldCkgeworICAgICAgICAvLyBJZiB0aGUgZGVzdGluYXRpb24gZm9y
bWF0IGlzIFZCUiwgd2UgbmVlZCB0byBnZXQgbWF4IHNpemUgcGVyIHBhY2tldCBmcm9tIHRoZSBj
b252ZXJ0ZXIuCisgICAgICAgIHNpemUgPSBzaXplb2YobV9tYXhPdXRwdXRQYWNrZXRTaXplKTsK
KworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9j
b252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlclByb3BlcnR5TWF4aW11bU91dHB1dFBhY2tl
dFNpemUsICZzaXplLCAmbV9tYXhPdXRwdXRQYWNrZXRTaXplKSkgeworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eU1heGltdW1PdXRwdXRQYWNrZXRTaXpl
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAg
ICB9CisgICAgfQorCisgICAgbV9zb3VyY2VCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KFtzZWxmIGNv
bXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQ6bV9zb3VyY2VGb3JtYXQgbWF4T3V0cHV0UGFj
a2V0U2l6ZTowIGR1cmF0aW9uOjAuMV0pOworICAgIG1fZGVzdGluYXRpb25CdWZmZXIucmVzZXJ2
ZUNhcGFjaXR5KFtzZWxmIGNvbXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQ6bV9kZXN0aW5h
dGlvbkZvcm1hdCBtYXhPdXRwdXRQYWNrZXRTaXplOm1fbWF4T3V0cHV0UGFja2V0U2l6ZSBkdXJh
dGlvbjowLjFdKTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0
KQorICAgICAgICBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLnJlc2VydmVDYXBhY2l0
eShtX2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5KCkgLyBtX21heE91dHB1dFBhY2tldFNpemUp
OworCisgICAgcmV0dXJuIFlFUzsKK30KKworLSAoc2l6ZV90KWNvbXB1dGVCdWZmZXJTaXplRm9y
QXVkaW9Gb3JtYXQ6KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbilmb3JtYXQgbWF4T3V0cHV0
UGFja2V0U2l6ZTooVUludDMyKW1heE91dHB1dFBhY2tldFNpemUgZHVyYXRpb246KEZsb2F0MzIp
ZHVyYXRpb24KK3sKKyAgICBVSW50MzIgbnVtUGFja2V0cyA9IChmb3JtYXQubVNhbXBsZVJhdGUg
KiBkdXJhdGlvbikgLyBmb3JtYXQubUZyYW1lc1BlclBhY2tldDsKKyAgICBVSW50MzIgb3V0cHV0
UGFja2V0U2l6ZSA9IGZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPyBmb3JtYXQubUJ5dGVzUGVyUGFj
a2V0IDogbWF4T3V0cHV0UGFja2V0U2l6ZTsKKyAgICBVSW50MzIgYnVmZmVyU2l6ZSA9IG51bVBh
Y2tldHMgKiBvdXRwdXRQYWNrZXRTaXplOworCisgICAgcmV0dXJuIGJ1ZmZlclNpemU7Cit9CisK
Ky0gKHZvaWQpYXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQ6KENNU2FtcGxlQnVmZmVyUmVmKWJ1
ZmZlcgoreworICAgIGlmIChDTVRJTUVfSVNfSU5WQUxJRChtX3JlbWFpbmluZ1ByaW1lRHVyYXRp
b24pKSB7CisgICAgICAgIEF1ZGlvQ29udmVydGVyUHJpbWVJbmZvIHByaW1lSW5mbyB7IDAsIDAg
fTsKKyAgICAgICAgVUludDMyIHNpemUgPSBzaXplb2YocHJpbWVJbmZvKTsKKworICAgICAgICBp
ZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0
KCksIGtBdWRpb0NvbnZlcnRlclByaW1lSW5mbywgJnNpemUsICZwcmltZUluZm8pKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiA9IENNVGltZU1ha2UocHJpbWVJbmZvLmxlYWRpbmdG
cmFtZXMsIG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUpOworICAgIH0KKworICAgIGlm
IChDTVRJTUVfQ09NUEFSRV9JTkxJTkUoa0NNVGltZVplcm8sIDwsIG1fcmVtYWluaW5nUHJpbWVE
dXJhdGlvbikpIHsKKyAgICAgICAgQ01UaW1lIHNhbXBsZUR1cmF0aW9uID0gQ01TYW1wbGVCdWZm
ZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgICAgICBDTVRpbWUgdHJpbUR1cmF0aW9uID0gQ01U
aW1lTWluaW11bShzYW1wbGVEdXJhdGlvbiwgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uKTsKKyAg
ICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHRyaW1BdFN0YXJ0RGljdCA9IENNVGltZUNvcHlBc0RpY3Rp
b25hcnkodHJpbUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKKyAgICAgICAgQ01TZXRB
dHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVyYXRp
b25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QsIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3Bh
Z2F0ZSk7CisgICAgICAgIENGUmVsZWFzZSh0cmltQXRTdGFydERpY3QpOworICAgICAgICBtX3Jl
bWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVTdWJ0cmFjdChtX3JlbWFpbmluZ1ByaW1lRHVy
YXRpb24sIHRyaW1EdXJhdGlvbik7CisgICAgfQorfQorCistIChOU051bWJlciAqKWdyYWR1YWxE
ZWNvZGVyUmVmcmVzaENvdW50Cit7CisgICAgVUludDMyIGRlbGF5U2l6ZSA9IHNpemVvZih1aW50
MzJfdCk7CisgICAgdWludDMyX3Qgb3JpZ2luYWxEZWxheU1vZGUgPSAwOworICAgIGlmIChhdXRv
IGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1
ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSwgJmRlbGF5U2l6ZSwgJm9yaWdpbmFsRGVsYXlNb2Rl
KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisg
ICAgdWludDMyX3Qgb3B0aW1hbERlbGF5TW9kZSA9IGtBdWRpb0NvZGVjRGVsYXlNb2RlX09wdGlt
YWw7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29u
dmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCBkZWxheVNpemUsICZv
cHRpbWFsRGVsYXlNb2RlKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvZGVjUHJv
cGVydHlEZWxheU1vZGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBu
aWw7CisgICAgfQorCisgICAgVUludDMyIHByaW1lU2l6ZSA9IHNpemVvZihBdWRpb0NvZGVjUHJp
bWVJbmZvKTsKKyAgICBBdWRpb0NvZGVjUHJpbWVJbmZvIHByaW1lSW5mbyB7IDAsIDAgfTsKKyAg
ICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIu
Z2V0KCksIGtBdWRpb0NvZGVjUHJvcGVydHlQcmltZUluZm8sICZwcmltZVNpemUsICZwcmltZUlu
Zm8pKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1lSW5m
byBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisK
KyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0
ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUsIGRlbGF5U2l6ZSwgJm9yaWdp
bmFsRGVsYXlNb2RlKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVy
dHlEZWxheU1vZGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7
CisgICAgfQorCisgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OihwcmltZUluZm8u
bGVhZGluZ0ZyYW1lcyAvIG1fZGVzdGluYXRpb25Gb3JtYXQubUZyYW1lc1BlclBhY2tldCldOwor
fQorCistIChDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXJXaXRoTnVtUGFja2V0czooVUlu
dDMyKW51bVBhY2tldHMgZmlsbEJ1ZmZlckxpc3Q6KEF1ZGlvQnVmZmVyTGlzdClmaWxsQnVmZmVy
TGlzdAoreworICAgIFZlY3RvcjxjaGFyPiBjb29raWU7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9u
Rm9ybWF0RGVzY3JpcHRpb24pIHsKKyAgICAgICAgVUludDMyIGNvb2tpZVNpemUgPSAwOworCisg
ICAgICAgIGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5SW5mbyhtX2NvbnZl
cnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgJmNvb2tp
ZVNpemUsIE5VTEwpOworICAgICAgICBpZiAoKGVycm9yID09IG5vRXJyKSAmJiAhIWNvb2tpZVNp
emUpIHsKKyAgICAgICAgICAgIGNvb2tpZS5yZXNlcnZlQ2FwYWNpdHkoY29va2llU2l6ZSk7CisK
KyAgICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSht
X2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tpZSwg
JmNvb2tpZVNpemUsIGNvb2tpZS5kYXRhKCkpKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0
dGluZyBrQXVkaW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc3RpbmF0aW9uRm9y
bWF0RGVzY3JpcHRpb247CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERl
c2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZtX2Rlc3RpbmF0aW9uRm9ybWF0
LCAwLCBOVUxMLCBjb29raWVTaXplLCBjb29raWUuZGF0YSgpLCBOVUxMLCAmZGVzdGluYXRpb25G
b3JtYXREZXNjcmlwdGlvbikpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvbkNyZWF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVy
biBuaWw7CisgICAgICAgIH0KKyAgICAgICAgbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9u
ID0gYWRvcHRDRihkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9nZHJD
b3VudE51bSA9IFtzZWxmIGdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50XTsKKyAgICB9CisKKyAg
ICBjaGFyICpkYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJz
WzBdLm1EYXRhKTsKKyAgICBzaXplX3QgZGF0YVNpemUgPSBmaWxsQnVmZmVyTGlzdC5tQnVmZmVy
c1swXS5tRGF0YUJ5dGVTaXplOworCisgICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja0J1ZmZlcjsK
KyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2so
a0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZGF0YVNpemUsIGtDRkFsbG9jYXRvckRlZmF1bHQs
IE5VTEwsIDAsIGRhdGFTaXplLCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5vd0ZsYWcsICZi
bG9ja0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJX
ZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1v
cnlCbG9jayBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKGJsb2NrQnVmZmVyKTsKKworICAgIGlmIChh
dXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMoZGF0YSwgYnVmZmVyLmdl
dCgpLCAwLCBkYXRhU2l6ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlclJlcGxhY2VE
YXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgfQorCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyOworICAgIGF1dG8gZXJy
b3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBidWZmZXIuZ2V0KCksIHRydWUsIE5VTEwsIE5VTEwsIG1fZGVzdGlu
YXRpb25Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgbnVtUGFja2V0cywgbV9jdXJyZW50TmF0aXZl
UHJlc2VudGF0aW9uVGltZVN0YW1wLCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLmRh
dGEoKSwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENN
QXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIGlmIChbbV9n
ZHJDb3VudE51bSBpbnRWYWx1ZV0pCisgICAgICAgIENNU2V0QXR0YWNobWVudChzYW1wbGVCdWZm
ZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERlY29kZXJSZWZyZXNoLCAo
X19icmlkZ2UgQ0ZUeXBlUmVmKW1fZ2RyQ291bnROdW0sIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3Vs
ZFByb3BhZ2F0ZSk7CisKKyAgICByZXR1cm4gc2FtcGxlQnVmZmVyOworfQorCistICh2b2lkKXBy
b2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWU6KENNVGltZSlsb3dXYXRlclRpbWUK
K3sKKyAgICBpZiAoIW1fY29udmVydGVyKSB7CisgICAgICAgIGF1dG8gYnVmZmVyID0gKENNU2Ft
cGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0SGVhZChtX2lu
cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7CisKKyAgICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2Vu
dGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAo
YnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0g
Q01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKwor
ICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXRE
ZXNjcmlwdGlvbihidWZmZXIpOworICAgICAgICBpZiAoIVtzZWxmIGluaXRBdWRpb0NvbnZlcnRl
ckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uOmZvcm1hdERlc2NyaXB0aW9uIG91dHB1dEF1ZGlv
Rm9ybWF0SUQ6bV9vdXRwdXRDb2RlY1R5cGVdKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHdoaWxlIChDTVRJTUVfSVNfSU5WQUxJRChsb3dXYXRlclRpbWUpIHx8IENNVElNRV9D
T01QQVJFX0lOTElORShsb3dXYXRlclRpbWUsIDwsIENNQnVmZmVyUXVldWVHZXREdXJhdGlvbiht
X2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkgeworICAgICAgICBBdWRpb0J1ZmZlckxpc3QgZmls
bEJ1ZmZlckxpc3Q7CisKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubU51bWJlckJ1ZmZlcnMgPSAx
OworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSBt
X2Rlc3RpbmF0aW9uRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lOworICAgICAgICBmaWxsQnVmZmVy
TGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gKFVJbnQzMiltX2Rlc3RpbmF0aW9uQnVm
ZmVyLmNhcGFjaXR5KCk7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRh
ID0gbV9kZXN0aW5hdGlvbkJ1ZmZlci5kYXRhKCk7CisKKyAgICAgICAgVUludDMyIG91dHB1dFBh
Y2tldFNpemUgPSBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA/IG1fZGVzdGlu
YXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0IDogbV9tYXhPdXRwdXRQYWNrZXRTaXplOworICAg
ICAgICBVSW50MzIgbnVtT3V0cHV0UGFja2V0cyA9IChVSW50MzIpbV9kZXN0aW5hdGlvbkJ1ZmZl
ci5jYXBhY2l0eSgpIC8gb3V0cHV0UGFja2V0U2l6ZTsKKworICAgICAgICBhdXRvIGVycm9yID0g
QXVkaW9Db252ZXJ0ZXJGaWxsQ29tcGxleEJ1ZmZlcihtX2NvbnZlcnRlci5nZXQoKSwgYXVkaW9D
b252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYywgKF9fYnJpZGdlIHZvaWQgKilzZWxmLCAmbnVt
T3V0cHV0UGFja2V0cywgJmZpbGxCdWZmZXJMaXN0LCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3Jp
cHRpb25zLmRhdGEoKSk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
QXVkaW9Db252ZXJ0ZXJGaWxsQ29tcGxleEJ1ZmZlciBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbnVtT3V0cHV0
UGFja2V0cykKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gYnVmZmVyID0gW3Nl
bGYgc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHM6bnVtT3V0cHV0UGFja2V0cyBmaWxsQnVmZmVy
TGlzdDpmaWxsQnVmZmVyTGlzdF07CisKKyAgICAgICAgW3NlbGYgYXR0YWNoUHJpbWluZ1RyaW1z
SWZOZWVkZWQ6YnVmZmVyXTsKKworICAgICAgICBlcnJvciA9IENNU2FtcGxlQnVmZmVyU2V0T3V0
cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlciwgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0
aW9uVGltZVN0YW1wKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBD
TVNhbXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIENN
VGltZSBuYXRpdmVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsK
KyAgICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01UaW1lQWRk
KG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCwgbmF0aXZlRHVyYXRpb24pOwor
CisgICAgICAgIENNVGltZSBvdXRwdXREdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0T3V0cHV0
RHVyYXRpb24oYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGlt
ZVN0YW1wID0gQ01UaW1lQWRkKG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCwg
b3V0cHV0RHVyYXRpb24pOworCisgICAgICAgIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUo
bV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgYnVmZmVyKTsKKyAgICAgICAgaWYgKGVycm9yKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKworLSAo
T1NTdGF0dXMpcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzOihVSW50MzIgKiludW1P
dXRwdXRQYWNrZXRzUHRyIGJ1ZmZlckxpc3Q6KEF1ZGlvQnVmZmVyTGlzdCAqKWF1ZGlvQnVmZmVy
TGlzdCBwYWNrZXREZXNjcmlwdGlvbjooQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbiAqKilw
YWNrZXREZXNjcmlwdGlvbk91dAoreworICAgIGNvbnN0IFVJbnQzMiBudW1QYWNrZXRzVG9Db3B5
ID0gKm51bU91dHB1dFBhY2tldHNQdHI7CisgICAgc2l6ZV90IG51bUJ5dGVzVG9Db3B5ID0gKG51
bVBhY2tldHNUb0NvcHkgKiBtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpOworICAgIHNp
emVfdCBjdXJPZmZzZXRJblNyY0J1ZmZlciA9IDA7CisKKyAgICBpZiAoYXVkaW9CdWZmZXJMaXN0
LT5tTnVtYmVyQnVmZmVycyA9PSAxKSB7CisgICAgICAgIG1fc291cmNlQnVmZmVyLnJlc2VydmVD
YXBhY2l0eShudW1CeXRlc1RvQ29weSk7CisKKyAgICAgICAgd2hpbGUgKDAgPCBudW1CeXRlc1Rv
Q29weSkgeworICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9IG1fY3Vy
T2Zmc2V0SW5TYW1wbGVCYnVmKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tC
dWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IE5VTEw7
CisgICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoQ01CdWZmZXJRdWV1ZUlzRW1wdHko
bV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0YoKENNU2FtcGxlQnVm
ZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbiht
X2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxv
Y2tCdWZmZXIgPSBhZG9wdENGKChDTUJsb2NrQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihD
RlJldGFpbihDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKSkp
KSk7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVm
ZmVyR2V0RGF0YUxlbmd0aChtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBtX2N1ck9mZnNldEluU2FtcGxlQmJ1ZiA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgc2l6ZV90
IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1CeXRlc1RvQ29weSwg
KG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIC0gbV9jdXJPZmZzZXRJblNhbXBsZUJidWYpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVz
KG1fc2FtcGxlQmxvY2tCdWZmZXIuZ2V0KCksIG1fY3VyT2Zmc2V0SW5TYW1wbGVCYnVmLCBudW1C
eXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAobV9zb3VyY2VCdWZmZXIuZGF0YSgpICsgY3VyT2Zm
c2V0SW5TcmNCdWZmZXIpKSkgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVm
ZmVyQ29weURhdGFCeXRlcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBu
dW1CeXRlc1RvQ29weSAtPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAg
ICAgICAgIGN1ck9mZnNldEluU3JjQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJi
dWY7CisgICAgICAgICAgICAgICAgbV9jdXJPZmZzZXRJblNhbXBsZUJidWYgKz0gbnVtQnl0ZXNU
b0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBh
dWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhID0gbV9zb3VyY2VCdWZmZXIuZGF0YSgp
OworICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBj
dXJPZmZzZXRJblNyY0J1ZmZlcjsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sw
XS5tTnVtYmVyQ2hhbm5lbHMgPSBtX3NvdXJjZUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKyAg
ICAgICAgKm51bU91dHB1dFBhY2tldHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sw
XS5tRGF0YUJ5dGVTaXplIC8gbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKKyAgICB9
IGVsc2UgeworICAgICAgICBpZiAoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAy
KQorICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgPSBudW1CeXRlc1RvQ29weSAqIDI7CisKKyAg
ICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkp
IHsKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGEgPSBudWxs
cHRyOworICAgICAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVT
aXplID0gMDsKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubU51bWJl
ckNoYW5uZWxzID0gMTsKKworICAgICAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sx
XS5tRGF0YSA9IG51bGxwdHI7CisgICAgICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJz
WzFdLm1EYXRhQnl0ZVNpemUgPSAwOworICAgICAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVm
ZmVyc1sxXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgICAgICAgICAqbnVtT3V0cHV0UGFj
a2V0c1B0ciA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIHNhbXBsZUJ1
ZmZlciA9IGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1
ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOwor
ICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJS
ZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZl
cihzYW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZm
ZXJTaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5n
ZXQoKSk7CisgICAgICAgICAgICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobV9zYW1w
bGVCbG9ja0J1ZmZlclNpemUpOworICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2Nr
QnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCAwLCBtX3NhbXBs
ZUJsb2NrQnVmZmVyU2l6ZSwgbV9zb3VyY2VCdWZmZXIuZGF0YSgpKSkgeworICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgaW50ZXJsZWF2ZWQgZGF0YSBieSB1bmludGVybGVh
dmluZyBtX3NvdXJjZUJ1ZmZlciBpZiBuZWVkZWQuCisgICAgICAgICAgICBBU1NFUlQobV9zb3Vy
Y2VGb3JtYXQubUZvcm1hdEZsYWdzICYga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQp
OworCisgICAgICAgICAgICBhdXRvIGJ1ZmZlclNpemUgPSBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6
ZSAvIDI7CisgICAgICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhID0g
bV9zb3VyY2VCdWZmZXIuZGF0YSgpOworICAgICAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVm
ZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIGF1ZGlvQnVm
ZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gMTsKKworICAgICAgICAgICAg
YXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YSA9IG1fc291cmNlQnVmZmVyLmRhdGEo
KSArIGJ1ZmZlclNpemU7CisgICAgICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzFd
Lm1EYXRhQnl0ZVNpemUgPSBidWZmZXJTaXplOworICAgICAgICAgICAgYXVkaW9CdWZmZXJMaXN0
LT5tQnVmZmVyc1sxXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgICAgICAgICAqbnVtT3V0
cHV0UGFja2V0c1B0ciA9IChhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNp
emUgLyBtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpOworICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKHBhY2tldERlc2NyaXB0aW9uT3V0KSB7CisgICAgICAgIC8vIFdlIGFzc3VtZSB0
aGF0IHRoZSBzb3VyY2UgZm9ybWF0IGlzIFBDTSwgd2hpY2ggaXMgbm90IFZCUiwgYnV0IENCUi4K
KyAgICAgICAgLy8gU28sIHRoZXJlIGlzIG5vdCBwYWNrZXQgZGVzY3JpcHRpb25zIGRlc2NyaWJp
bmcgdGhlIGxheW91dCBvZiBlYWNoIHBhY2tldC4KKyAgICAgICAgKnBhY2tldERlc2NyaXB0aW9u
T3V0ID0gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbm9FcnI7Cit9CisKKy0gKHZvaWQpcHJv
Y2Vzc1NhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpc2J1ZgoreworICAgIGF1dG8gZXJy
b3IgPSBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZShtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCksIHNidWYp
OworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIldlYkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKKworICAgIFtzZWxmIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRl
clRpbWU6bV9sb3dXYXRlclRpbWVdOworfQorCistICh2b2lkKWFkZFNhbXBsZUJ1ZmZlcjooQ01T
YW1wbGVCdWZmZXJSZWYpc2J1ZgoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRj
aFF1ZXVlLCBeeworICAgICAgICBpZiAobV9pc0VuY29kaW5nKQorICAgICAgICAgICAgW3NlbGYg
cHJvY2Vzc1NhbXBsZUJ1ZmZlcjpzYnVmXTsKKyAgICB9KTsKK30KKworLSAoQ01TYW1wbGVCdWZm
ZXJSZWYpcGlja091dHB1dFNhbXBsZUJ1ZmZlcgoreworICAgIHJldHVybiAoQ01TYW1wbGVCdWZm
ZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0QnVm
ZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisKKy0gKENNU2FtcGxlQnVmZmVyUmVmKXRha2VPdXRwdXRT
YW1wbGVCdWZmZXIKK3sKKyAgICByZXR1cm4gKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0
PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX291dHB1dEJ1ZmZlclF1ZXVl
LmdldCgpKSkpOworfQorCitAZW5kCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCBiMTQ3Y2EyODgyOWIwZjEwMzBiZGE3NGEw
ODQyNmM0NTY1ZTk4NzFlLi5kNzVmZmVmNTk5ZDA3NGYzZTQ5NTNkNzE5M2VjYmNmY2UyM2IwYjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaApAQCAtMjUsNiArMjUsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKIAogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAt
MzQsMTEgKzM1LDE4IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1h
cGhvcmUuaD4KKyNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KKyNpbmNsdWRl
IDxDb3JlTWVkaWEvQ01UaW1lLmg+CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVm
ZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9y
bWF0RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7Cit0eXBlZGVmIHN0cnVjdCBv
cGFxdWVDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuICpDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2Vu
OwogCiBPQkpDX0NMQVNTIEFWQXNzZXRXcml0ZXI7CiBPQkpDX0NMQVNTIEFWQXNzZXRXcml0ZXJJ
bnB1dDsKK09CSkNfQ0xBU1MgV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlOworT0JKQ19DTEFTUyBX
ZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CitPQkpDX0NMQVNTIFdlYlZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvcjsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNZWRpYVRpbWU7CkBA
IC01MCwyNSArNTgsNzMgQEAgY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNsYXNzIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXVEY6OkRlc3RydWN0
aW9uVGhyZWFkOjpNYWluPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyPiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlv
bjo6RWFnZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJh
Y2ssIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKTsKICAgICBzdGF0
aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoYm9vbCBoYXNBdWRp
bywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXIoKTsKLSAgICAKLSAgICBib29sIHNldHVwV3JpdGVyKCk7Ci0gICAgYm9vbCBzZXRWaWRlb0lu
cHV0KGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgYm9vbCBzZXRBdWRpb0lucHV0KCk7CisK
ICAgICB2b2lkIGFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKICAg
ICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwg
Y29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6
ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKICAgICB2b2lkIGZldGNoRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmKTsKIAorI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqLCBz
aXplX3QpOworICAgIHZvaWQgYXBwZW5kRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyNlbmRp
ZgorCiBwcml2YXRlOgorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYsIGJvb2wgaGFzQXVk
aW8sIGJvb2wgaGFzVmlkZW8pOworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIHN0YXRpYyB2b2lk
IGNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBDTUJ1ZmZlclF1ZXVl
VHJpZ2dlclRva2VuKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZm
ZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CisKKyAgICB2b2lk
IHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICB2b2lkIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZl
cnMoKTsKKyAgICB2b2lkIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisKKyAgICBi
b29sIGFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpOworICAgIGJvb2wgYXBwZW5k
Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKCk7CisKKyAgICB2b2lkIHByb2Nlc3NOZXdDb21w
cmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCk7CisgICAgdm9pZCBwcm9jZXNzTmV3Q29tcHJlc3Nl
ZFZpZGVvU2FtcGxlQnVmZmVycygpOworI2Vsc2UKICAgICBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcihSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4mJiwgU3RyaW5nJiYgcGF0aCk7CiAgICAgdm9p
ZCBjbGVhcigpOwogCisgICAgYm9vbCBzZXR1cFdyaXRlcigpOworICAgIGJvb2wgc2V0VmlkZW9J
bnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIGJvb2wgc2V0QXVkaW9JbnB1dCgpOwor
I2VuZGlmCisKKyAgICBib29sIG1faGFzU3RhcnRlZFdyaXRpbmcgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9pc1N0b3BwZWQgeyBmYWxzZSB9OworCiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+
IG1fd3JpdGVyOworCisgICAgYm9vbCBtX2lzU3RvcHBpbmcgeyBmYWxzZSB9OworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOworCisjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyAgICBib29sIG1faGFzQXVkaW87CisgICAgYm9vbCBt
X2hhc1ZpZGVvOworCisgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVk
aW9Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICBSZXRhaW5QdHI8V2ViQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKKyAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRl
cklucHV0PiBtX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dDsKKworICAgIFJldGFpblB0cjxDTUZvcm1h
dERlc2NyaXB0aW9uUmVmPiBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb247CisgICAgUmV0YWluUHRy
PFdlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV92aWRlb0NvbXByZXNzb3I7CisgICAg
UmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQ7Cisg
ICAgQ01UaW1lIG1fbGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZTsKKyAgICBDTVRpbWUgbV9sYXN0
VmlkZW9EZWNvZGluZ1RpbWU7CisgICAgYm9vbCBtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMgeyBm
YWxzZSB9OworCisgICAgUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4gbV93cml0
ZXJEZWxlZ2F0ZTsKKyNlbHNlCiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV92
aWRlb0lucHV0OwogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fYXVkaW9JbnB1
dDsKIApAQCAtNzgsMTcgKzEzNCwxMyBAQCBwcml2YXRlOgogICAgIEJpbmFyeVNlbWFwaG9yZSBt
X2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmU7CiAgICAgQmluYXJ5U2VtYXBob3JlIG1fZmluaXNoV3Jp
dGluZ0F1ZGlvU2VtYXBob3JlOwogICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdW
aWRlb1NlbWFwaG9yZTsKLSAgICBib29sIG1faGFzU3RhcnRlZFdyaXRpbmcgeyBmYWxzZSB9Owot
ICAgIGJvb2wgbV9pc1N0b3BwZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0ZpcnN0QXVkaW9T
YW1wbGUgeyB0cnVlIH07CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX2F1ZGlvUHVsbFF1ZXVlOwog
ICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV92aWRlb1B1bGxRdWV1ZTsKICAgICBEZXF1ZTxSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX3ZpZGVvQnVmZmVyUG9vbDsKICAgICBEZXF1ZTxSZXRh
aW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX2F1ZGlvQnVmZmVyUG9vbDsKIAotICAgIGJvb2wg
bV9pc1N0b3BwaW5nIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7
Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4gbV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCmluZGV4IDIzMzU0ZjQ3ODRkZTA5MmYwNDg3YzE4NTRmYzViMjZhNWUyMjExYWMu
LjZiYmY5NzQ4MDM4NzJlZmMyZDdmZDczZDM2OGNhMTgwOGU3Y2ZjNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTI2LDEx
MiArMjYsMTQ0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5oIgogCisjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCisj
aW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbSIKKyNl
bHNlCisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCisj
aW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCiAjaW5jbHVkZSAiQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5oIgogI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgogI2luY2x1ZGUgPEFWRm91
bmRhdGlvbi9BVkFzc2V0V3JpdGVyLmg+CiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRX
cml0ZXJJbnB1dC5oPgorI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyX1ByaXZh
dGUuaD4KICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2lu
Y2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3Vu
ZGF0aW9uU29mdExpbmsuaD4KIAotI3VuZGVmIEFWRW5jb2RlckJpdFJhdGVLZXkKLSNkZWZpbmUg
QVZFbmNvZGVyQml0UmF0ZUtleSBnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkK
LSN1bmRlZiBBVkZvcm1hdElES2V5Ci0jZGVmaW5lIEFWRm9ybWF0SURLZXkgZ2V0QVZGb3JtYXRJ
REtleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZOdW1iZXJPZkNoYW5uZWxzS2V5Ci0jZGVmaW5l
IEFWTnVtYmVyT2ZDaGFubmVsc0tleSBnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJh
Y2soKQotI3VuZGVmIEFWU2FtcGxlUmF0ZUtleQotI2RlZmluZSBBVlNhbXBsZVJhdGVLZXkgZ2V0
QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKK0BpbnRlcmZhY2UgV2ViQVZBc3NldFdyaXRl
ckRlbGVnYXRlIDogTlNPYmplY3QgPEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4geworICAgIFdlYWtQ
dHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IG1fd3JpdGVyOworfQogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKil3cml0ZXI7CistICh2b2lkKWNsb3NlOwor
LSAodm9pZClmaW5pc2g7CiAKLXVzaW5nIG5hbWVzcGFjZSBQQUw7CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgeworfTsKIAotc3RhdGljIE5TU3RyaW5n
ICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqKXdyaXRlcgogewot
ICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKSkKLSAgICAg
ICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCk7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmIChz
ZWxmKQorICAgICAgICBzZWxmLT5tX3dyaXRlciA9IG1ha2VXZWFrUHRyKHdyaXRlcik7CiAKLSAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRm9ybWF0SURLZXki
KTsKLSAgICByZXR1cm4gQCJBVkZvcm1hdElES2V5IjsKKyAgICByZXR1cm4gc2VsZjsKIH0KIAot
c3RhdGljIE5TU3RyaW5nICpnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2soKQor
LSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZO
dW1iZXJPZkNoYW5uZWxzS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRp
b25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCk7Ci0KLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YSwgIkZhaWxlZCB0byBsb2FkIEFWTnVtYmVyT2ZDaGFubmVsc0tleSIpOwotICAgIHJldHVybiBA
IkFWTnVtYmVyT2ZDaGFubmVsc0tleSI7CisgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi1zdGF0
aWMgTlNTdHJpbmcgKmdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCistICh2b2lkKWFz
c2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50
ZWRIZWFkZXJEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkSGVhZGVyRGF0YQogewotICAgIGlmIChQ
QUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpKQotICAgICAgICByZXR1
cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpOworICAgIFVOVVNFRF9Q
QVJBTShhc3NldFdyaXRlcik7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBp
ZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pIHsKKyAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZBc3Nl
dFdyaXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRl
c10pLCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkU2Vs
Zi0+bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPm1fd3JpdGVy
LT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEs
ICJGYWlsZWQgdG8gbG9hZCBBVlNhbXBsZVJhdGVLZXkiKTsKLSAgICByZXR1cm4gQCJBVlNhbXBs
ZVJhdGVLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93cml0ZXItPmFwcGVuZERh
dGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRlc10p
LCBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3RoXSk7CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAq
Z2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCistICh2b2lkKWFzc2V0V3JpdGVy
OihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRNZWRpYURh
dGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRNZWRpYURhdGEgZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9y
dDooQVZGcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0ICopZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9y
dAogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVL
ZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRS
YXRlS2V5KCk7CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKKyAgICBVTlVTRURfUEFS
QU0oZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCk7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkg
eworICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSkg
eworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0
cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRNZWRp
YURhdGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKHBy
b3RlY3RlZFNlbGYtPm1fd3JpdGVyKQorICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxm
LT5tX3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZFbmNvZGVyQml0UmF0ZUtleSIpOwotICAgIHJl
dHVybiBAIkFWRW5jb2RlckJpdFJhdGVLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAg
bV93cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVk
TWVkaWFEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0pOwogfQogCi1S
ZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNv
bnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKQorLSAodm9pZCljbG9zZQog
ewotICAgIGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7Ci0gICAgaWYgKHZpZGVvVHJhY2spIHsK
LSAgICAgICAgYXV0byYgc2V0dGluZ3MgPSB2aWRlb1RyYWNrLT5zZXR0aW5ncygpOwotICAgICAg
ICB3aWR0aCA9IHNldHRpbmdzLndpZHRoKCk7Ci0gICAgICAgIGhlaWdodCA9IHNldHRpbmdzLmhl
aWdodCgpOwotICAgIH0KLSAgICByZXR1cm4gY3JlYXRlKCEhYXVkaW9UcmFjaywgd2lkdGgsIGhl
aWdodCk7CisgICAgbV93cml0ZXIgPSBudWxscHRyOwogfQogCi1SZWZQdHI8TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBo
YXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorLSAodm9pZClmaW5pc2gKIHsKLSAgICBO
U1N0cmluZyAqZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KEAidmlkZW9zIik7Ci0gICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIvJWxsZC5tcDQiLCBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVD
bG9jaygpKS52YWx1ZV07Ci0gICAgTlNTdHJpbmcgKnBhdGggPSBbZGlyZWN0b3J5IHN0cmluZ0J5
QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1lXTsKKyAgICBtX3dyaXRlciA9IG51bGxwdHI7Cit9CisK
K0BlbmQKIAotICAgIE5TVVJMICpvdXRwdXRVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBh
dGhdOwotICAgIFN0cmluZyBmaWxlUGF0aCA9IFtwYXRoIFVURjhTdHJpbmddOworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgUEFMOworCitSZWZQdHI8TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBo
YXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorewogICAgIE5TRXJyb3IgKmVycm9yID0g
bmlsOwotICAgIGF1dG8gYXZBc3NldFdyaXRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0
V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0aFVSTDpvdXRwdXRVUkwgZmlsZVR5cGU6QVZGaWxlVHlw
ZU1QRUc0IGVycm9yOiZlcnJvcl0pOworICAgIGF1dG8gYXZBc3NldFdyaXRlciA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0aEZpbGVUeXBlOkFWRmls
ZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5j
ZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKWVycm9yLmNvZGUpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHdyaXRlciA9IGFkb3B0UmVmKCpu
ZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoV1RGTW92ZShhdkFzc2V0V3JpdGVyKSwgV1RG
TW92ZShmaWxlUGF0aCkpKTsKLQotICAgIGlmIChoYXNBdWRpbyAmJiAhd3JpdGVyLT5zZXRBdWRp
b0lucHV0KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRlciksIGhh
c0F1ZGlvLCB3aWR0aCAmJiBoZWlnaHQpKTsKK30KIAotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQp
IHsKLSAgICAgICAgaWYgKCF3cml0ZXItPnNldFZpZGVvSW5wdXQod2lkdGgsIGhlaWdodCkpCi0g
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkICptZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbikKK3sKKyAg
ICBhdXRvICp3cml0ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcio+
KG1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKTsKKyAgICB3cml0ZXItPnByb2Nlc3NOZXdDb21w
cmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCk7Cit9CiAKLSAgICByZXR1cm4gV1RGTW92ZSh3cml0
ZXIpOwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZEF1ZGlvT3V0
cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCAqbWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVm
ZmVyUXVldWVUcmlnZ2VyVG9rZW4pCit7CisgICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7
CisgICAgd3JpdGVyLT5wcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOwog
fQogCi1NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYgYXZBc3NldFdyaXRlciwgU3RyaW5nJiYgZmls
ZVBhdGgpCitNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYgYXZBc3NldFdyaXRlciwgYm9vbCBoYXNB
dWRpbywgYm9vbCBoYXNWaWRlbykKICAgICA6IG1fd3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRl
cikpCi0gICAgLCBtX3BhdGgoV1RGTW92ZShmaWxlUGF0aCkpCisgICAgLCBtX2hhc0F1ZGlvKGhh
c0F1ZGlvKQorICAgICwgbV9oYXNWaWRlbyhoYXNWaWRlbykKIHsKKyAgICBtX3dyaXRlckRlbGVn
YXRlID0gYWRvcHROUyhbW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhX
cml0ZXI6IHRoaXNdKTsKKyAgICBbbV93cml0ZXIuZ2V0KCkgc2V0RGVsZWdhdGU6bV93cml0ZXJE
ZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBpZiAobV9oYXNWaWRlbykKKyAgICAgICAgbV92aWRlb0Nv
bXByZXNzb3IgPSBhZG9wdE5TKFtbV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGFsbG9j
XSBpbml0V2l0aENvZGVjVHlwZTprQ01WaWRlb0NvZGVjVHlwZV9IMjY0IGNhbGxiYWNrOmNvbXBy
ZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrIGNhbGxiYWNrT2JqZWN0OnRoaXNdKTsKKyAg
ICAKKyAgICBpZiAobV9oYXNBdWRpbykKKyAgICAgICAgbV9hdWRpb0NvbXByZXNzb3IgPSBhZG9w
dE5TKFtbV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGFsbG9jXSBpbml0V2l0aENhbGxi
YWNrOmNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrIGNhbGxiYWNrT2JqZWN0OnRo
aXNdKTsKIH0KIAogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcigpCkBAIC0xMzksNzkgKzE3MSwxNDYgQEAgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgY2xlYXIoKTsKIH0KIAot
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMo
KQogewotICAgIGlmIChtX3ZpZGVvSW5wdXQpIHsKLSAgICAgICAgbV92aWRlb0lucHV0LmNsZWFy
KCk7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV92aWRlb1B1bGxRdWV1ZSk7Ci0gICAgfQot
ICAgIGlmIChtX2F1ZGlvSW5wdXQpIHsKLSAgICAgICAgbV9hdWRpb0lucHV0LmNsZWFyKCk7Ci0g
ICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9hdWRpb1B1bGxRdWV1ZSk7CisgICAgQVNTRVJUKG1f
aGFzVmlkZW8pOworICAgIGlmICghbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAg
IG1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3Jp
cHRpb24oW21fdmlkZW9Db21wcmVzc29yIHBpY2tPdXRwdXRTYW1wbGVCdWZmZXJdKTsKKyAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1B0ciA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzXSB7
CisgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAobV9oYXNBdWRpbyAmJiAhbV9hdWRpb0Zvcm1hdERl
c2NyaXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc3RhcnRB
c3NldFdyaXRlcigpOworICAgICAgICB9KTsKICAgICB9Ci0gICAgaWYgKG1fd3JpdGVyKQotICAg
ICAgICBtX3dyaXRlci5jbGVhcigpOworICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGluZykKKyAg
ICAgICAgcmV0dXJuOworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7Cit9CiAK
LSAgICBtX2RhdGEgPSBudWxscHRyOwotICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobnVsbHB0cik7Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9j
ZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpCit7CisgICAgQVNTRVJUKG1faGFz
QXVkaW8pOworICAgIGlmICghbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIG1f
YXVkaW9Gb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRp
b24oW21fYXVkaW9Db21wcmVzc29yIHBpY2tPdXRwdXRTYW1wbGVCdWZmZXJdKTsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbd2Vha1B0ciA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzXSB7Cisg
ICAgICAgICAgICBpZiAoIXdlYWtQdHIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAobV9oYXNWaWRlbyAmJiAhbV92aWRlb0Zvcm1hdERlc2Ny
aXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc3RhcnRBc3Nl
dFdyaXRlcigpOworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0
aW5nKQorICAgICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMo
KTsKIH0KIAotYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0VmlkZW9JbnB1dChp
bnQgd2lkdGgsIGludCBoZWlnaHQpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpz
dGFydEFzc2V0V3JpdGVyKCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9JbnB1dCk7Ci0gICAgCi0g
ICAgTlNEaWN0aW9uYXJ5ICpjb21wcmVzc2lvblByb3BlcnRpZXMgPSBAewotICAgICAgICBBVlZp
ZGVvQXZlcmFnZUJpdFJhdGVLZXkgOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0aCAqIGhl
aWdodCAqIDEyXSwKLSAgICAgICAgQVZWaWRlb0V4cGVjdGVkU291cmNlRnJhbWVSYXRlS2V5IDog
QCgzMCksCi0gICAgICAgIEFWVmlkZW9NYXhLZXlGcmFtZUludGVydmFsS2V5IDogQCgxMjApLAot
ICAgICAgICBBVlZpZGVvUHJvZmlsZUxldmVsS2V5IDogQVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRN
YWluQXV0b0xldmVsCi0gICAgfTsKLQotICAgIE5TRGljdGlvbmFyeSAqdmlkZW9TZXR0aW5ncyA9
IEB7Ci0gICAgICAgIEFWVmlkZW9Db2RlY0tleTogQVZWaWRlb0NvZGVjSDI2NCwKLSAgICAgICAg
QVZWaWRlb1dpZHRoS2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0aF0sCi0gICAgICAg
IEFWVmlkZW9IZWlnaHRLZXk6IFtOU051bWJlciBudW1iZXJXaXRoSW50OmhlaWdodF0sCi0gICAg
ICAgIEFWVmlkZW9Db21wcmVzc2lvblByb3BlcnRpZXNLZXk6IGNvbXByZXNzaW9uUHJvcGVydGll
cwotICAgIH07CisgICAgaWYgKG1faGFzVmlkZW8pIHsKKyAgICAgICAgbV92aWRlb0Fzc2V0V3Jp
dGVySW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2Uo
KSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOm5pbCBz
b3VyY2VGb3JtYXRIaW50Om1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKV0pOworICAgICAg
ICBpZiAoIVttX3dyaXRlci5nZXQoKSBjYW5BZGRJbnB1dDptX3ZpZGVvQXNzZXRXcml0ZXJJbnB1
dC5nZXQoKV0pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIGNhbkFk
ZElucHV0IGZvciB2aWRlbyIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIFttX3dyaXRlci5nZXQoKSBhZGRJbnB1dDptX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQo
KV07CisgICAgfQogICAgIAotICAgIG1fdmlkZW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NB
VkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBl
VmlkZW8gb3V0cHV0U2V0dGluZ3M6dmlkZW9TZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5pbF0p
OwotICAgIFttX3ZpZGVvSW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07
CisgICAgaWYgKG1faGFzQXVkaW8pIHsKKyAgICAgICAgbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0
aE1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdzOm5pbCBzb3VyY2VGb3Jt
YXRIaW50Om1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKV0pOworICAgICAgICBpZiAoIVtt
X3dyaXRlci5nZXQoKSBjYW5BZGRJbnB1dDptX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0p
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIGNhbkFkZElucHV0IGZv
ciBhdWRpbyIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFttX3dy
aXRlci5nZXQoKSBhZGRJbnB1dDptX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV07CisgICAg
fQogICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElucHV0Om1fdmlkZW9JbnB1dC5nZXQo
KV0pIHsKLSAgICAgICAgbV92aWRlb0lucHV0ID0gbnVsbHB0cjsKLSAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgdmlkZW8gaW5wdXQgaXMgbm90IGFsbG93ZWQgdG8g
YWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIVttX3dyaXRlci5nZXQoKSBzdGFydFdyaXRpbmddKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNz
ZXRXcml0ZXIgZmFpbGVkIHN0YXJ0V3JpdGluZyIpOworICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIFttX3dyaXRlciBhZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldOwotICAgIG1fdmlkZW9Q
dWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVWaWRlb1JlY29yZGluZ1B1
bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Ci0gICAgcmV0dXJuIHRydWU7
CisKKyAgICBbbV93cml0ZXIuZ2V0KCkgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOmtDTVRpbWVa
ZXJvXTsKKworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisKKyAgICBtX2hh
c1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKIH0KIAotYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6c2V0QXVkaW9JbnB1dCgpCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjph
cHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKQogewotICAgIEFTU0VSVCghbV9hdWRp
b0lucHV0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0Q0YoW21fYXVkaW9Db21wcmVzc29yIHRh
a2VPdXRwdXRTYW1wbGVCdWZmZXJdKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgTlNEaWN0aW9uYXJ5ICphdWRpb1NldHRpbmdzID0gQHsKLSAgICAgICAg
QVZFbmNvZGVyQml0UmF0ZUtleSA6IEAoMjgwMDApLAotICAgICAgICBBVkZvcm1hdElES2V5IDog
QChrQXVkaW9Gb3JtYXRNUEVHNEFBQyksCi0gICAgICAgIEFWTnVtYmVyT2ZDaGFubmVsc0tleSA6
IEAoMSksCi0gICAgICAgIEFWU2FtcGxlUmF0ZUtleSA6IEAoMjIwNTApCi0gICAgfTsKKyAgICBp
ZiAoIVttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisg
ICAgICAgIFttX3dyaXRlciBmbHVzaF07CisgICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0Lmdl
dCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOworICAgIHJldHVybiB0cnVlOwor
fQogCi0gICAgbV9hdWRpb0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJ
bnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRT
ZXR0aW5nczphdWRpb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7Ci0gICAgW21fYXVk
aW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKLSAgICAKLSAgICBp
ZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAg
IG1fYXVkaW9JbnB1dCA9IG51bGxwdHI7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAidGhlIGF1ZGlvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZB
c3NldFdyaXRlciIpOworYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29t
cHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKCkKK3sKKyAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0Q0Yo
W21fdmlkZW9Db21wcmVzc29yIHRha2VPdXRwdXRTYW1wbGVCdWZmZXJdKTsKKyAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBbbV93cml0ZXIgYWRkSW5w
dXQ6bV9hdWRpb0lucHV0LmdldCgpXTsKLSAgICBtX2F1ZGlvUHVsbFF1ZXVlID0gZGlzcGF0Y2hf
cXVldWVfY3JlYXRlKCJXZWJDb3JlQXVkaW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQ
QVRDSF9RVUVVRV9TRVJJQUwpOworCisgICAgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1lID0g
Q01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyLmdldCgpKTsKKyAg
ICBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0RGVjb2RlVGltZVN0
YW1wKGJ1ZmZlci5nZXQoKSk7CisgICAgbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzID0gdHJ1ZTsK
KworICAgIGlmICghW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFE
YXRhXSkKKyAgICAgICAgW21fd3JpdGVyIGZsdXNoXTsKKyAgICBbbV92aWRlb0Fzc2V0V3JpdGVy
SW5wdXQuZ2V0KCkgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXBy
ZXNzZWRTYW1wbGVCdWZmZXJzKCkKK3sKKyAgICB3aGlsZSAoYXBwZW5kQ29tcHJlc3NlZFZpZGVv
U2FtcGxlQnVmZmVyKCkgfHwgYXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKCkpIHsg
fTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0
aW9uTWFya2VyKEFWQXNzZXRXcml0ZXJJbnB1dCAqYXNzZXRXcml0ZXJJbnB1dCwgQ01UaW1lIHBy
ZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lIGRlY29kaW5nVGltZVN0YW1wKQoreworICAgIENN
U2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvID0geyBrQ01UaW1lSW52YWxpZCwgcHJlc2VudGF0
aW9uVGltZVN0YW1wLCBkZWNvZGluZ1RpbWVTdGFtcH07CisKKyAgICBDTVNhbXBsZUJ1ZmZlclJl
ZiBidWZmZXIgPSBOVUxMOworICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCB0cnVlLCBOVUxMLCBOVUxMLCBOVUxMLCAwLCAxLCAm
dGltaW5nSW5mbywgMCwgTlVMTCwgJmJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXIgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIgZmFpbGVkIENNU2FtcGxl
QnVmZmVyQ3JlYXRlIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKGJ1ZmZlcik7CisKKyAgICBDTVNldEF0dGFj
aG1lbnQoc2FtcGxlQnVmZmVyLmdldCgpLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0Vu
ZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uLCBrQ0ZCb29sZWFuVHJ1ZSwga0NNQXR0YWNobWVudE1v
ZGVfU2hvdWxkUHJvcGFnYXRlKTsKKyAgICBpZiAoIVthc3NldFdyaXRlcklucHV0IGFwcGVuZFNh
bXBsZUJ1ZmZlcjpzYW1wbGVCdWZmZXIuZ2V0KCldKQorICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZFNhbXBsZUJ1
ZmZlciB0byB3cml0ZXIgaW5wdXQgZmFpbGVkIik7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKQoreworICAgIGFwcGVu
ZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisgICAgCisgICAgaWYgKG1faGFzRW5jb2RlZFZp
ZGVvU2FtcGxlcykKKyAgICAgICAgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJr
ZXIobV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCksIG1fbGFzdFZpZGVvUHJlc2VudGF0aW9u
VGltZSwgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpjbGVhcigpCit7CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dy
aXRlci5jbGVhcigpOworCisgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworfQorCiBzdGF0aWMgaW5saW5lIFJl
dGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGlt
ZVN0YW1wKENNU2FtcGxlQnVmZmVyUmVmIG9yaWdpbmFsQnVmZmVyKQogewogICAgIENNVGltZSBz
dGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsKQEAg
LTIyMSw1OCArMzIwLDI5IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPiBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoCiAgICAgVmVjdG9yPENN
U2FtcGxlVGltaW5nSW5mbz4gdGltZUluZm8oY291bnQpOwogICAgIENNU2FtcGxlQnVmZmVyR2V0
U2FtcGxlVGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0
YSgpLCAmY291bnQpOwogICAgIAotICAgIGZvciAoQ01JdGVtQ291bnQgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKSB7CisgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAg
ICB0aW1lSW5mb1tpXS5kZWNvZGVUaW1lU3RhbXAgPSBrQ01UaW1lSW52YWxpZDsKICAgICAgICAg
dGltZUluZm9baV0ucHJlc2VudGF0aW9uVGltZVN0YW1wID0gc3RhcnRUaW1lOwogICAgIH0KICAg
ICAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdCdWZmZXIgPSBudWxscHRyOwotICAgIGF1dG8g
ZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAmbmV3QnVm
ZmVyKTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZl
ckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVm
ZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAmbmV3QnVmZmVyKSkgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIENN
U2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihu
ZXdCdWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRW
aWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIpCiB7Ci0gICAg
QVNTRVJUKG1fdmlkZW9JbnB1dCk7Ci0gICAgaWYgKG1faXNTdG9wcGVkKQorICAgIGlmICghbV92
aWRlb0NvbXByZXNzb3IpCiAgICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9oYXNTdGFydGVk
V3JpdGluZykgewotICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7Ci0gICAg
ICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRo
IGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpW21fd3JpdGVyIGVycm9yXSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgW21fd3JpdGVyIHN0YXJ0U2Vzc2lvbkF0U291cmNl
VGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKV07Ci0gICAgICAg
IG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOwotICAgICAgICBSZWZQdHI8TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwotICAgICAgICBbbV92aWRlb0lu
cHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fdmlkZW9QdWxsUXVldWUgdXNp
bmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsK
LSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgaXNS
ZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2NrKTsKLSAgICAgICAg
ICAgICAgICBpZiAobV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fdmlkZW9CdWZmZXJQ
b29sLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwot
ICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6YnVm
ZmVyLmdldCgpXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IHdo
aWxlICh0cnVlKTsKLSAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX3ZpZGVvQnVmZmVy
UG9vbC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBbbV92aWRlb0lucHV0IG1hcmtBc0Zp
bmlzaGVkXTsKLSAgICAgICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZS5z
aWduYWwoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfV07Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgCiAgICAgYXV0byBidWZmZXJXaXRoQ3VycmVudFRpbWUgPSBjb3B5U2FtcGxlQnVm
ZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2FtcGxlQnVmZmVyKTsKICAgICBpZiAoIWJ1ZmZlcldp
dGhDdXJyZW50VGltZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX3ZpZGVvTG9jayk7Ci0gICAgbV92aWRlb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUo
YnVmZmVyV2l0aEN1cnJlbnRUaW1lKSk7CisgICAgW21fdmlkZW9Db21wcmVzc29yIGFkZFNhbXBs
ZUJ1ZmZlcjpidWZmZXJXaXRoQ3VycmVudFRpbWUuZ2V0KCldOwogfQogCiBzdGF0aWMgaW5saW5l
IFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uKGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQpAQCAtMjgw
LDggKzM1MCwxMCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9u
UmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbgogICAgIGF1dG8gYmFzaWNEZXNj
cmlwdGlvbiA9IFdURjo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRl
c2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CiAgICAgQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZiBmb3JtYXQgPSBudWxscHRyOwogICAgIGF1dG8gZXJyb3IgPSBDTUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzaWNEZXNj
cmlwdGlvbiwgMCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdCk7Ci0gICAgaWYgKGVycm9y
KQorICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNy
ZWF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQogICAgIHJldHVybiBhZG9wdENGKGZvcm1hdCk7CiB9CiAKQEAgLTI5MCw5NSArMzYyLDY2
IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVBdWRp
b1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjCiAgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNQ2xv
Y2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOwogICAgIENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7CiAgICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1w
bGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQs
IE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQsIHNhbXBsZUNvdW50LCBzdGFydFRpbWUs
IE5VTEwsICZzYW1wbGVCdWZmZXIpOwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlciBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
ICAgICByZXR1cm4gYWRvcHRDRihzYW1wbGVCdWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjphcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1
ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90IHNhbXBsZUNvdW50KQogewotICAgIEFTU0VS
VChtX2F1ZGlvSW5wdXQpOwotICAgIGlmICgoIW1faGFzU3RhcnRlZFdyaXRpbmcgJiYgbV92aWRl
b0lucHV0KSB8fCBtX2lzU3RvcHBlZCkKLSAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gZm9ybWF0
ID0gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7CiAgICAgaWYgKCFm
b3JtYXQpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAobV9pc0ZpcnN0QXVkaW9TYW1wbGUpIHsK
LSAgICAgICAgaWYgKCFtX3ZpZGVvSW5wdXQpIHsKLSAgICAgICAgICAgIC8vIGF1ZGlvLW9ubHkg
cmVjb3JkaW5nLgotICAgICAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewot
ICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRT
b3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKLSAg
ICAgICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IG1faXNGaXJzdEF1ZGlvU2FtcGxlID0gZmFsc2U7Ci0gICAgICAgIFJlZlB0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7Ci0gICAgICAgIFttX2F1ZGlv
SW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6bV9hdWRpb1B1bGxRdWV1ZSB1
c2luZ0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0g
ewotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIGlmICghW21fYXVkaW9JbnB1dCBp
c1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb0xvY2spOwotICAgICAg
ICAgICAgICAgIGlmIChtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9hdWRpb0J1ZmZl
clBvb2wudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7
Ci0gICAgICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVy
LmdldCgpXTsKLSAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpOwotICAgICAgICAgICAgaWYgKG1f
aXNTdG9wcGVkICYmIG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
ICAgIFttX2F1ZGlvSW5wdXQgbWFya0FzRmluaXNoZWRdOwotICAgICAgICAgICAgICAgIG1fZmlu
aXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLnNpZ25hbCgpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9XTsKLSAgICB9CiAKICAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxl
QnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50KTsK
ICAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOworCiAgICAgYXV0byBlcnJv
ciA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3Qoc2FtcGxl
QnVmZmVyLmdldCgpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
LCBkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxpc3Q+KGRhdGEpLmxpc3QoKSk7Ci0gICAgaWYgKGVy
cm9yKQorICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1
ZmZlckZyb21BdWRpb0J1ZmZlckxpc3QgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAg
IHJldHVybjsKKyAgICB9CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2Nr
KTsKLSAgICBtX2F1ZGlvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShzYW1wbGVCdWZmZXIpKTsK
KyAgICBbbV9hdWRpb0NvbXByZXNzb3IgYWRkU2FtcGxlQnVmZmVyOnNhbXBsZUJ1ZmZlci5nZXQo
KV07CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmco
KQogewogICAgIGlmIChtX2lzU3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwotCisgICAgCiAgICAg
bV9pc1N0b3BwZWQgPSB0cnVlOwogICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGluZykKICAgICAg
ICAgcmV0dXJuOwogICAgIEFTU0VSVChbbV93cml0ZXIgc3RhdHVzXSA9PSBBVkFzc2V0V3JpdGVy
U3RhdHVzV3JpdGluZyk7Ci0gICAgaWYgKG1fdmlkZW9JbnB1dCkKLSAgICAgICAgbV9maW5pc2hX
cml0aW5nVmlkZW9TZW1hcGhvcmUud2FpdCgpOwogCi0gICAgaWYgKG1fYXVkaW9JbnB1dCkKLSAg
ICAgICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUud2FpdCgpOworICAgIFttX3ZpZGVv
Q29tcHJlc3NvciBmaW5pc2hdOworICAgIFttX2F1ZGlvQ29tcHJlc3NvciBmaW5pc2hdOworCisg
ICAgZmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworCisgICAgW21fd3JpdGVyIGZsdXNo
XTsKIAogICAgIG1faXNTdG9wcGluZyA9IHRydWU7CiAgICAgW21fd3JpdGVyIGZpbmlzaFdyaXRp
bmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhp
cyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIg
PSBXVEZNb3ZlKHdlYWtQdHIpLCBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShtX3BhdGgpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCB3ZWFrUHRyID0gV1RGTW92ZSh3ZWFrUHRyKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmICghd2Vha1B0cikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAg
IG1faXNTdG9wcGluZyA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKG1fZmV0Y2hEYXRhQ29tcGxl
dGlvbkhhbmRsZXIpCisgICAgICAgICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxl
cikgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV1RGTW92ZShtX2RhdGEpOwogICAg
ICAgICAgICAgICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIp
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGJ1
ZmZlcik7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7
CiAgICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBt
X2lzRmlyc3RBdWRpb1NhbXBsZSA9IHRydWU7CiAgICAgICAgICAgICBjbGVhcigpOwogICAgICAg
ICB9KTsKLSAgICAgICAgbV9maW5pc2hXcml0aW5nU2VtYXBob3JlLnNpZ25hbCgpOwogICAgIH1d
OwotICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZS53YWl0KCk7CiB9CiAKIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMzkyLDYgKzQz
NSwyNSBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoYnVmZmVyKSk7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFw
cGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKCFtX2Rh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7
Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAgICAgICAgbV9k
YXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZGF0
YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43M2ZiMWVlYWU3ZDRhNDU1ZTM1
NGExNmViNmE2ODQ2OGVkNDEyZTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hRmlsZUJhc2VkLm1tCkBAIC0wLDAgKzEsMzgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlICJBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCisj
aW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXIuaD4KKyNpbmNsdWRlIDxBVkZvdW5k
YXRpb24vQVZBc3NldFdyaXRlcklucHV0Lmg+CisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRM
aW5rLmg+CisKKyN1bmRlZiBBVkVuY29kZXJCaXRSYXRlS2V5CisjZGVmaW5lIEFWRW5jb2RlckJp
dFJhdGVLZXkgZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCisjdW5kZWYgQVZG
b3JtYXRJREtleQorI2RlZmluZSBBVkZvcm1hdElES2V5IGdldEFWRm9ybWF0SURLZXlXaXRoRmFs
bGJhY2soKQorI3VuZGVmIEFWTnVtYmVyT2ZDaGFubmVsc0tleQorI2RlZmluZSBBVk51bWJlck9m
Q2hhbm5lbHNLZXkgZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxiYWNrKCkKKyN1bmRl
ZiBBVlNhbXBsZVJhdGVLZXkKKyNkZWZpbmUgQVZTYW1wbGVSYXRlS2V5IGdldEFWU2FtcGxlUmF0
ZUtleVdpdGhGYWxsYmFjaygpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNw
YWNlIFBBTDsKKworc3RhdGljIE5TU3RyaW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNr
KCkKK3sKKyAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCkp
CisgICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgpOwor
CisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkZvcm1hdElE
S2V5Iik7CisgICAgcmV0dXJuIEAiQVZGb3JtYXRJREtleSI7Cit9CisKK3N0YXRpYyBOU1N0cmlu
ZyAqZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxiYWNrKCkKK3sKKyAgICBpZiAoUEFM
OjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5lbHNLZXkoKSkKKyAgICAgICAg
cmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5lbHNLZXkoKTsKKwor
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZOdW1iZXJPZkNo
YW5uZWxzS2V5Iik7CisgICAgcmV0dXJuIEAiQVZOdW1iZXJPZkNoYW5uZWxzS2V5IjsKK30KKwor
c3RhdGljIE5TU3RyaW5nICpnZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJhY2soKQoreworICAg
IGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpKQorICAgICAg
ICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpOworCisgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVlNhbXBsZVJhdGVLZXki
KTsKKyAgICByZXR1cm4gQCJBVlNhbXBsZVJhdGVLZXkiOworfQorCitzdGF0aWMgTlNTdHJpbmcg
KmdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2soKQoreworICAgIGlmIChQQUw6OmNh
bkxvYWRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVLZXkoKSkKKyAgICAgICAgcmV0dXJu
IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCk7CisKKyAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRW5jb2RlckJpdFJhdGVLZXki
KTsKKyAgICByZXR1cm4gQCJBVkVuY29kZXJCaXRSYXRlS2V5IjsKK30KKworUmVmUHRyPE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRl
KGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBOU1N0cmluZyAq
ZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAidmlkZW9z
Iik7CisgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIvJWxsZC5tcDQiLCBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKS52
YWx1ZV07CisgICAgTlNTdHJpbmcgKnBhdGggPSBbZGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5n
U3RyaW5nOmZpbGVuYW1lXTsKKworICAgIE5TVVJMICpvdXRwdXRVUkwgPSBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOnBhdGhdOworICAgIFN0cmluZyBmaWxlUGF0aCA9IFtwYXRoIFVURjhTdHJpbmdd
OworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIGF1dG8gYXZBc3NldFdyaXRlciA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0aFVSTDpvdXRw
dXRVUkwgZmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOworICAgIGlmIChl
cnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBB
VkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcp
ZXJyb3IuY29kZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8g
d3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihXVEZNb3Zl
KGF2QXNzZXRXcml0ZXIpLCBXVEZNb3ZlKGZpbGVQYXRoKSkpOworCisgICAgaWYgKGhhc0F1ZGlv
ICYmICF3cml0ZXItPnNldEF1ZGlvSW5wdXQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBpZiAod2lkdGggJiYgaGVpZ2h0KSB7CisgICAgICAgIGlmICghd3JpdGVyLT5zZXRWaWRl
b0lucHV0KHdpZHRoLCBoZWlnaHQpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgcmV0dXJuIFdURk1vdmUod3JpdGVyKTsKK30KKworTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3Jp
dGVyPiYmIGF2QXNzZXRXcml0ZXIsIFN0cmluZyYmIGZpbGVQYXRoKQorICAgIDogbV93cml0ZXIo
V1RGTW92ZShhdkFzc2V0V3JpdGVyKSkKKyAgICAsIG1fcGF0aChXVEZNb3ZlKGZpbGVQYXRoKSkK
K3sKK30KKworTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcigpCit7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6Y2xlYXIoKQoreworICAgIGlmIChtX3ZpZGVvSW5wdXQpIHsKKyAgICAgICAgbV92
aWRlb0lucHV0LmNsZWFyKCk7CisgICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV92aWRlb1B1bGxR
dWV1ZSk7CisgICAgfQorICAgIGlmIChtX2F1ZGlvSW5wdXQpIHsKKyAgICAgICAgbV9hdWRpb0lu
cHV0LmNsZWFyKCk7CisgICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9hdWRpb1B1bGxRdWV1ZSk7
CisgICAgfQorICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKwor
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyKTsKK30KKworYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
c2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgQVNTRVJUKCFtX3Zp
ZGVvSW5wdXQpOworICAgIAorICAgIE5TRGljdGlvbmFyeSAqY29tcHJlc3Npb25Qcm9wZXJ0aWVz
ID0gQHsKKyAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDogW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAxMl0sCisgICAgICAgIEFWVmlkZW9FeHBlY3RlZFNv
dXJjZUZyYW1lUmF0ZUtleSA6IEAoMzApLAorICAgICAgICBBVlZpZGVvTWF4S2V5RnJhbWVJbnRl
cnZhbEtleSA6IEAoMTIwKSwKKyAgICAgICAgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSA6IEFWVmlk
ZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbAorICAgIH07CisKKyAgICBOU0RpY3Rpb25h
cnkgKnZpZGVvU2V0dGluZ3MgPSBAeworICAgICAgICBBVlZpZGVvQ29kZWNLZXk6IEFWVmlkZW9D
b2RlY0gyNjQsCisgICAgICAgIEFWVmlkZW9XaWR0aEtleTogW05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6d2lkdGhdLAorICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpoZWlnaHRdLAorICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5OiBj
b21wcmVzc2lvblByb3BlcnRpZXMKKyAgICB9OworICAgIAorICAgIG1fdmlkZW9JbnB1dCA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVk
aWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6dmlkZW9TZXR0aW5ncyBzb3Vy
Y2VGb3JtYXRIaW50Om5pbF0pOworICAgIFttX3ZpZGVvSW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0
YUluUmVhbFRpbWU6dHJ1ZV07CisgICAgCisgICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6
bV92aWRlb0lucHV0LmdldCgpXSkgeworICAgICAgICBtX3ZpZGVvSW5wdXQgPSBudWxscHRyOwor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgInRoZSB2aWRlbyBpbnB1dCBp
cyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0ZXIiKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92aWRlb0lucHV0Lmdl
dCgpXTsKKyAgICBtX3ZpZGVvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJD
b3JlVmlkZW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwp
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpzZXRBdWRpb0lucHV0KCkKK3sKKyAgICBBU1NFUlQoIW1fYXVkaW9JbnB1dCk7CisKKyAgICBO
U0RpY3Rpb25hcnkgKmF1ZGlvU2V0dGluZ3MgPSBAeworICAgICAgICBBVkVuY29kZXJCaXRSYXRl
S2V5IDogQCgyODAwMCksCisgICAgICAgIEFWRm9ybWF0SURLZXkgOiBAKGtBdWRpb0Zvcm1hdE1Q
RUc0QUFDKSwKKyAgICAgICAgQVZOdW1iZXJPZkNoYW5uZWxzS2V5IDogQCgxKSwKKyAgICAgICAg
QVZTYW1wbGVSYXRlS2V5IDogQCgyMjA1MCkKKyAgICB9OworCisgICAgbV9hdWRpb0lucHV0ID0g
YWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhN
ZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczphdWRpb1NldHRpbmdzIHNv
dXJjZUZvcm1hdEhpbnQ6bmlsXSk7CisgICAgW21fYXVkaW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFE
YXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICAKKyAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1
dDptX2F1ZGlvSW5wdXQuZ2V0KCldKSB7CisgICAgICAgIG1fYXVkaW9JbnB1dCA9IG51bGxwdHI7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIGF1ZGlvIGlucHV0
IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFttX3dyaXRlciBhZGRJbnB1dDptX2F1ZGlvSW5wdXQu
Z2V0KCldOworICAgIG1fYXVkaW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldl
YkNvcmVBdWRpb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklB
TCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPiBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoQ01TYW1w
bGVCdWZmZXJSZWYgb3JpZ2luYWxCdWZmZXIpCit7CisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENN
Q2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOworICAgIENNSXRlbUNvdW50
IGNvdW50ID0gMDsKKyAgICBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShv
cmlnaW5hbEJ1ZmZlciwgMCwgbmlsLCAmY291bnQpOworICAgIAorICAgIFZlY3RvcjxDTVNhbXBs
ZVRpbWluZ0luZm8+IHRpbWVJbmZvKGNvdW50KTsKKyAgICBDTVNhbXBsZUJ1ZmZlckdldFNhbXBs
ZVRpbWluZ0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwg
JmNvdW50KTsKKyAgICAKKyAgICBmb3IgKENNSXRlbUNvdW50IGkgPSAwOyBpIDwgY291bnQ7IGkr
KykgeworICAgICAgICB0aW1lSW5mb1tpXS5kZWNvZGVUaW1lU3RhbXAgPSBrQ01UaW1lSW52YWxp
ZDsKKyAgICAgICAgdGltZUluZm9baV0ucHJlc2VudGF0aW9uVGltZVN0YW1wID0gc3RhcnRUaW1l
OworICAgIH0KKyAgICAKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdCdWZmZXIgPSBudWxscHRy
OworICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0
YSgpLCAmbmV3QnVmZmVyKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBhZG9wdENGKG5ld0J1ZmZlcik7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZUJ1ZmZlcikKK3sKKyAgICBBU1NFUlQobV92aWRlb0lucHV0KTsKKyAgICBpZiAobV9p
c1N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGlu
ZykgeworICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7CisgICAgICAgICAg
ICBtX2lzU3RvcHBlZCA9IHRydWU7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9y
IGNvZGUgJWxkIiwgKGxvbmcpW21fd3JpdGVyIGVycm9yXSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgW21fd3JpdGVyIHN0YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpD
TUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKV07CisgICAgICAgIG1faGFz
U3RhcnRlZFdyaXRpbmcgPSB0cnVlOworICAgICAgICBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOworICAgICAgICBbbV92aWRlb0lucHV0IHJl
cXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fdmlkZW9QdWxsUXVldWUgdXNpbmdCbG9j
azpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKKyAgICAg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgaXNSZWFkeUZv
ck1vcmVNZWRpYURhdGFdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2NrKTsKKyAgICAgICAgICAgICAg
ICBpZiAobV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fdmlkZW9CdWZmZXJQb29sLnRh
a2VGaXJzdCgpOworICAgICAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOworICAgICAg
ICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdl
dCgpXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IHdoaWxlICh0
cnVlKTsKKyAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX3ZpZGVvQnVmZmVyUG9vbC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBbbV92aWRlb0lucHV0IG1hcmtBc0ZpbmlzaGVk
XTsKKyAgICAgICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZS5zaWduYWwo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfV07CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYXV0byBidWZmZXJXaXRoQ3VycmVudFRpbWUgPSBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJl
bnRUaW1lU3RhbXAoc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoIWJ1ZmZlcldpdGhDdXJyZW50VGlt
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVv
TG9jayk7CisgICAgbV92aWRlb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUoYnVmZmVyV2l0aEN1
cnJlbnRUaW1lKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNRm9ybWF0RGVzY3Jp
cHRpb25SZWY+IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29uc3QgQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCit7CisgICAgYXV0byBiYXNpY0Rlc2NyaXB0aW9uID0g
V1RGOjpnZXQ8Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRpb24u
cGxhdGZvcm1EZXNjcmlwdGlvbigpLmRlc2NyaXB0aW9uKTsKKyAgICBDTUZvcm1hdERlc2NyaXB0
aW9uUmVmIGZvcm1hdCA9IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBiYXNpY0Rlc2NyaXB0aW9uLCAw
LCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0KTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdENGKGZvcm1hdCk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVBdWRpb1NhbXBsZUJ1
ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXQs
IHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dl
dFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7CisgICAgQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1
ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVM
TCwgZmFsc2UsIE5VTEwsIE5VTEwsIGZvcm1hdCwgc2FtcGxlQ291bnQsIHN0YXJ0VGltZSwgTlVM
TCwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gYWRvcHRDRihzYW1wbGVCdWZmZXIpOworfQorCit2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9y
bUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIEFT
U0VSVChtX2F1ZGlvSW5wdXQpOworICAgIGlmICgoIW1faGFzU3RhcnRlZFdyaXRpbmcgJiYgbV92
aWRlb0lucHV0KSB8fCBtX2lzU3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZm9y
bWF0ID0gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7CisgICAgaWYg
KCFmb3JtYXQpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9pc0ZpcnN0QXVkaW9TYW1wbGUp
IHsKKyAgICAgICAgaWYgKCFtX3ZpZGVvSW5wdXQpIHsKKyAgICAgICAgICAgIC8vIGF1ZGlvLW9u
bHkgcmVjb3JkaW5nLgorICAgICAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkg
eworICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBbbV93cml0ZXIgc3RhcnRTZXNzaW9u
QXRTb3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpXTsK
KyAgICAgICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOworICAgICAgICB9CisgICAg
ICAgIG1faXNGaXJzdEF1ZGlvU2FtcGxlID0gZmFsc2U7CisgICAgICAgIFJlZlB0cjxNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7CisgICAgICAgIFttX2F1
ZGlvSW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6bV9hdWRpb1B1bGxRdWV1
ZSB1c2luZ0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KV0geworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGlmICghW21fYXVkaW9JbnB1
dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb0xvY2spOworICAg
ICAgICAgICAgICAgIGlmIChtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9hdWRpb0J1
ZmZlclBvb2wudGFrZUZpcnN0KCk7CisgICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5
KCk7CisgICAgICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6YnVm
ZmVyLmdldCgpXTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpOworICAgICAgICAgICAgaWYg
KG1faXNTdG9wcGVkICYmIG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgICAgIFttX2F1ZGlvSW5wdXQgbWFya0FzRmluaXNoZWRdOworICAgICAgICAgICAgICAgIG1f
ZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9XTsKKyAgICB9CisKKyAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2Ft
cGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50
KTsKKyAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZXJy
b3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0KHNhbXBs
ZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkpOworICAgIGlmIChl
cnJvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1
ZGlvTG9jayk7CisgICAgbV9hdWRpb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUoc2FtcGxlQnVm
ZmVyKSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRp
bmcoKQoreworICAgIGlmIChtX2lzU3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9p
c1N0b3BwZWQgPSB0cnVlOworICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGluZykKKyAgICAgICAg
cmV0dXJuOworICAgIEFTU0VSVChbbV93cml0ZXIgc3RhdHVzXSA9PSBBVkFzc2V0V3JpdGVyU3Rh
dHVzV3JpdGluZyk7CisgICAgaWYgKG1fdmlkZW9JbnB1dCkKKyAgICAgICAgbV9maW5pc2hXcml0
aW5nVmlkZW9TZW1hcGhvcmUud2FpdCgpOworCisgICAgaWYgKG1fYXVkaW9JbnB1dCkKKyAgICAg
ICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUud2FpdCgpOworCisgICAgbV9pc1N0b3Bw
aW5nID0gdHJ1ZTsKKyAgICBbbV93cml0ZXIgZmluaXNoV3JpdGluZ1dpdGhDb21wbGV0aW9uSGFu
ZGxlcjpbdGhpcywgd2Vha1B0ciA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1B0ciA9IFdURk1vdmUod2Vha1B0ciks
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCld
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKKyAgICAgICAgICAg
IGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgICAgIG1fZmV0
Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisKKyAgICAgICAg
ICAgIG1faXNTdG9wcGVkID0gZmFsc2U7CisgICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5n
ID0gZmFsc2U7CisgICAgICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IHRydWU7CisgICAg
ICAgICAgICBjbGVhcigpOworICAgICAgICB9KTsKKyAgICAgICAgbV9maW5pc2hXcml0aW5nU2Vt
YXBob3JlLnNpZ25hbCgpOworICAgIH1dOworICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZS53
YWl0KCk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGlmIChtX2lzU3RvcHBpbmcpIHsKKyAgICAgICAgbV9mZXRjaERh
dGFDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBidWZmZXIgPSBXVEZNb3ZlKG1fZGF0YSk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9V
TkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE2N2VjMDU4ZjViMjc1OWU1NjEyMWE1MWJhMWQ1YjM5ZGFhZWVhZWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisK
KyNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVl
Q01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOworCitAaW50ZXJmYWNlIFdlYlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENvZGVjVHlwZTooQ01WaWRlb0NvZGVjVHlwZSkgb3V0cHV0Q29kZWNUeXBlIGNhbGxiYWNr
OihDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrKSBjYWxsYmFjayBjYWxsYmFja09iamVjdDoo
dm9pZCopIGNhbGxiYWNrT2JqZWN0OworLSAodm9pZClmaW5pc2g7CistICh2b2lkKWFkZFNhbXBs
ZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpc2J1ZjsKKy0gKENNU2FtcGxlQnVmZmVyUmVmKXBp
Y2tPdXRwdXRTYW1wbGVCdWZmZXI7CistIChDTVNhbXBsZUJ1ZmZlclJlZil0YWtlT3V0cHV0U2Ft
cGxlQnVmZmVyOworCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWFkZjQ5MzBlMjQ1OTlkMzU3ODRk
NWQzYjcyYzFkNzUzZDU3ZTM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0K
QEAgLTAsMCArMSwxNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBv
cnQgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgorI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25TZXNzaW9uLmg+CisjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0Bp
bXBsZW1lbnRhdGlvbiBXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgeworICAgIENNQnVm
ZmVyUXVldWVSZWYgbV9vdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
c2VyaWFsRGlzcGF0Y2hRdWV1ZTsKKyAgICBCT09MIG1faXNFbmNvZGluZzsKKyAgICBSZXRhaW5Q
dHI8VlRDb21wcmVzc2lvblNlc3Npb25SZWY+IG1fdnRTZXNzaW9uOworICAgIENNVmlkZW9Db2Rl
Y1R5cGUgbV9vdXRwdXRDb2RlY1R5cGU7CisgICAgRmxvYXQ2NCBtX21heEtleUZyYW1lSW50ZXJ2
YWxEdXJhdGlvbjsKKyAgICBOU0ludGVnZXIgbV9leHBlY3RlZEZyYW1lUmF0ZTsKK30KKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZWNUeXBlOihDTVZpZGVvQ29kZWNUeXBlKSBvdXRwdXRD
b2RlY1R5cGUgY2FsbGJhY2s6KENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2spIGNhbGxiYWNr
IGNhbGxiYWNrT2JqZWN0Oih2b2lkKikgY2FsbGJhY2tPYmplY3QKK3sKKyAgICBBU1NFUlQob3V0
cHV0Q29kZWNUeXBlKTsKKworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxm
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0Zv
clVuc29ydGVkU2FtcGxlQnVmZmVycygpLCAmbV9vdXRwdXRCdWZmZXJRdWV1ZSk7CisgICAgaWYg
KGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIHF1ZXVlICVk
IiwgZXJyb3IpOworICAgICAgICBbc2VsZiByZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICB9CisKKyAgICBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJR
dWV1ZSwgY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hl
bkRhdGFCZWNvbWVzUmVhZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKKworICAgIG1fc2VyaWFsRGlz
cGF0Y2hRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZShbQCJjb20uYXBwbGUuV2ViVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIiBVVEY4U3RyaW5nXSwgRElTUEFUQ0hfUVVFVUVfU0VSSUFM
KTsKKyAgICBtX291dHB1dENvZGVjVHlwZSA9IG91dHB1dENvZGVjVHlwZTsKKyAgICBtX21heEtl
eUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiA9IDIuMDsKKyAgICBtX2V4cGVjdGVkRnJhbWVSYXRlID0g
MzA7CisgICAgbV9pc0VuY29kaW5nID0gWUVTOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KHZvaWQpZGVhbGxvYworeworICAgIGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAgICAg
IGRpc3BhdGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKKworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KKworLSAodm9pZClmaW5pc2gKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25T
ZXNzaW9uQ29tcGxldGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiV2ViVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFt
ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICAgICAgZXJyb3IgPSBDTUJ1ZmZlclF1
ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVlKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OworCisgICAgICAgIG1faXNFbmNvZGluZyA9IE5POworICAgIH0pOworfQorCitzdGF0aWMgdm9p
ZCB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwgT1NTdGF0dXMg
c3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQorewor
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKHN0YXR1cywgTWVkaWFTdHJlYW0sICJXZWJWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrIHN0YXR1cyBpcyAl
ZCIsIHN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyAhPSBub0VycikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yICpjb21wcmVzc29yID0gKFdlYlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciAqKXJlZkNvbjsKKworICAgIGF1dG8gZXJyb3IgPSBD
TUJ1ZmZlclF1ZXVlRW5xdWV1ZShjb21wcmVzc29yLT5tX291dHB1dEJ1ZmZlclF1ZXVlLCBidWZm
ZXIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIldlYlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKK30KKworLSAoQk9PTClpbml0Q29tcHJlc3Npb25TZXNzaW9uOihDTVZp
ZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYpZm9ybWF0RGVzY3JpcHRpb24KK3sKKyAgICBDTVZpZGVv
RGltZW5zaW9ucyBkaW1lbnNpb25zID0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5z
aW9ucyhmb3JtYXREZXNjcmlwdGlvbik7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIE5TRGljdGlv
bmFyeSAqZW5jb2RlclNwZWNpZmljYXRpb25zID0gbmlsOworI2Vsc2UKKyAgICBOU0RpY3Rpb25h
cnkgKmVuY29kZXJTcGVjaWZpY2F0aW9ucyA9IEB7KF9fYnJpZGdlIE5TU3RyaW5nICopa1ZUVmlk
ZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNv
ZGVyOkBZRVN9OworI2VuZGlmCisKKyAgICBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiB2dFNlc3Np
b247CisgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBtX291dHB1
dENvZGVjVHlwZSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZillbmNvZGVyU3BlY2lmaWNhdGlv
bnMsIE5VTEwsIE5VTEwsIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjaywgKF9fYnJpZGdlIHZvaWQg
KilzZWxmLCAmdnRTZXNzaW9uKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRD
b21wcmVzc2lvblNlc3Npb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAg
IHJldHVybiBOTzsKKyAgICB9CisgICAgbV92dFNlc3Npb24gPSBhZG9wdENGKHZ0U2Vzc2lvbik7
CisKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBr
VlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiV2ViVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENvbXByZXNzaW9uUHJvcGVy
dHlLZXlfUmVhbFRpbWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgZXJyb3IgPSBWVFNl
c3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0
eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24sIChfX2JyaWRnZSBDRlR5cGVSZWYpQCht
X21heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbikpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
KGVycm9yLCBNZWRpYVN0cmVhbSwgIldlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNl
c3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50
ZXJ2YWxEdXJhdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICBlcnJvciA9IFZUU2Vz
c2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5
S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKUAobV9leHBlY3RlZEZy
YW1lUmF0ZSkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwg
IldlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRD
b21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworCisgICAgZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29k
ZUZyYW1lcyhtX3Z0U2Vzc2lvbi5nZXQoKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJy
b3IsIE1lZGlhU3RyZWFtLCAiV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJl
c3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OworCisgICAgcmV0dXJuIFlFUzsKK30KKworLSAodm9pZClwcm9jZXNzU2FtcGxlQnVmZmVyOihD
TVNhbXBsZUJ1ZmZlclJlZilidWZmZXIKK3sKKyAgICBpZiAoIW1fdnRTZXNzaW9uKSB7CisgICAg
ICAgIGlmICghW3NlbGYgaW5pdENvbXByZXNzaW9uU2Vzc2lvbjpDTVNhbXBsZUJ1ZmZlckdldEZv
cm1hdERlc2NyaXB0aW9uKGJ1ZmZlcildKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKGJ1ZmZl
cik7CisgICAgYXV0byBwcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldFBy
ZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIpOworICAgIGF1dG8gZHVyYXRpb24gPSBDTVNhbXBs
ZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7CisgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Np
b25TZXNzaW9uRW5jb2RlRnJhbWUobV92dFNlc3Npb24uZ2V0KCksIGltYWdlQnVmZmVyLCBwcmVz
ZW50YXRpb25UaW1lU3RhbXAsIGR1cmF0aW9uLCBOVUxMLCAoX19icmlkZ2Ugdm9pZCAqKXNlbGYs
IE5VTEwpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIldl
YlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZy
YW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworfQorCistICh2b2lkKWFkZFNhbXBsZUJ1ZmZl
cjooQ01TYW1wbGVCdWZmZXJSZWYpYnVmZmVyCit7CisgICAgZGlzcGF0Y2hfc3luYyhtX3Nlcmlh
bERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGlmICghbV9pc0VuY29kaW5nKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIFtzZWxmIHByb2Nlc3NTYW1wbGVCdWZmZXI6YnVmZmVyXTsK
KyAgICB9KTsKK30KKworLSAoQ01TYW1wbGVCdWZmZXJSZWYpcGlja091dHB1dFNhbXBsZUJ1ZmZl
cgoreworICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENN
QnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUpKSk7Cit9CisKKy0gKENNU2Ft
cGxlQnVmZmVyUmVmKXRha2VPdXRwdXRTYW1wbGVCdWZmZXIKK3sKKyAgICByZXR1cm4gKENNU2Ft
cGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJl
dGFpbihtX291dHB1dEJ1ZmZlclF1ZXVlKSkpOworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5jcHAKaW5kZXggY2IyNGRkYmYyNzlmYjI2NTk0NmFhMTIxY2IwNzIyYjYyYjhjNmFmNy4uNzli
YjMxODJmM2JmZmRiMDJhNThlYmNlMjg3MTVhZDk2MTIwNTc4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTWVkaWFSZWNvcmRlcj4gUmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIE1lZGlhUmVjb3JkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGludCB3aWR0aCwgaW50IGhl
aWdodCkKIHsKLSAgICBhdXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpj
cmVhdGUocmVjb3JkQXVkaW8sIHdpZHRoLCBoZWlnaHQpOworICAgIGF1dG8gd3JpdGVyID0gTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShyZWNvcmRBdWRpbywgd2lkdGggJiYgaGVp
Z2h0KTsKICAgICBpZiAoIXdyaXRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyPihuZXcgUmVtb3RlTWVkaWFS
ZWNvcmRlciB7IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZpZXIsIHdyaXRlci5y
ZWxlYXNlTm9uTnVsbCgpLCByZWNvcmRBdWRpbyB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388434</attachid>
            <date>2020-01-22 10:01:34 -0800</date>
            <delta_ts>2020-01-22 11:47:01 -0800</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-206582-20200122190128.patch</filename>
            <type>text/plain</type>
            <size>98545</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ5ZDcxZDkzNTM5YzNm
ZWU2NGY3NWEyZWM2MThkNzZiYmQ0ZmVkMS4uNmYxNmYzZDIyMGVmNzE0YmZmMjMwNDZhZjIzMDk4
OGRiOTE4ZWIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIwLTAxLTIyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSBhbGxvd3MgdG8gZ3JhYiByZWNvcmRlZCBkYXRhIHdoZW5ldmVyIHdhbnRlZC4KKyAgICAgICAg
VGhpcyBkZWxlZ2F0ZSByZXF1aXJlcyBwYXNzaW5nIGNvbXByZXNzZWQgc2FtcGxlcyB0byBBVkFz
c2V0V3JpdGVyLgorICAgICAgICBJbXBsZW1lbnQgdmlkZW8gZW5jb2RpbmcgYW5kIGF1ZGlvIGVu
Y29kaW5nIGluIGRlZGljYXRlZCBjbGFzc2VzIGFuZCB1c2UgdGhlc2UgY2xhc3NlcyBiZWZvcmUg
YWRkaW5nIGJ1ZmZlcnMgdG8gQVZBc3NldFdyaXRlci4KKyAgICAgICAgU2luY2UgQVZBc3NldFdy
aXRlckRlbGVnYXRlIGlzIEFwcGxlIFNESyBvbmx5LCBrZWVwIHRoZSBleGlzdGluZyBmaWxlIGJh
c2VkIGltcGxlbWVudGF0aW9uIGFzIGEgZmFsbGJhY2suCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9B
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06IEFkZGVk
LgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgaW5pdFdpdGhDYWxs
YmFjazpjYWxsYmFja09iamVjdDpdKToKKyAgICAgICAgKC1bV2ViQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIGZpbmlzaF0pOgorICAgICAgICAoYXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRh
UHJvYyk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBpbml0QXVk
aW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbjpvdXRwdXRBdWRpb0Zvcm1hdElE
Ol0pOgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgY29tcHV0ZUJ1
ZmZlclNpemVGb3JBdWRpb0Zvcm1hdDptYXhPdXRwdXRQYWNrZXRTaXplOmR1cmF0aW9uOl0pOgor
ICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgYXR0YWNoUHJpbWluZ1Ry
aW1zSWZOZWVkZWQ6XSk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudF0pOgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3Igc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHM6ZmlsbEJ1ZmZlckxp
c3Q6XSk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBwcm9jZXNz
U2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lOl0pOgorICAgICAgICAoLVtXZWJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzOmJ1
ZmZlckxpc3Q6cGFja2V0RGVzY3JpcHRpb246XSk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBwcm9jZXNzU2FtcGxlQnVmZmVyOl0pOgorICAgICAgICAoLVtXZWJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgYWRkU2FtcGxlQnVmZmVyOl0pOgorICAgICAgICAo
LVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgcGlja091dHB1dFNhbXBsZUJ1ZmZlcl0p
OgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdGFrZU91dHB1dFNh
bXBsZUJ1ZmZlcl0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRWaWRlb091
dHB1dEJ1ZmZlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlv
U2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6c3RhcnRBc3NldFdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2Vk
VmlkZW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2VyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVC
dWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1l
U3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFw
cGVuZFZpZGVvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9TYW1wbGVCdWZm
ZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjphcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBpbml0V2l0aENvZGVjVHlwZTpjYWxsYmFjazpjYWxs
YmFja09iamVjdDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGZp
bmlzaF0pOgorICAgICAgICAodmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKToKKyAgICAgICAgKC1b
V2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGluaXRDb21wcmVzc2lvblNlc3Npb246XSk6
CisgICAgICAgICgtW1dlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBwcm9jZXNzU2FtcGxl
QnVmZmVyOl0pOgorICAgICAgICAoLVtXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgYWRk
U2FtcGxlQnVmZmVyOl0pOgorICAgICAgICAoLVtXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgcGlja091dHB1dFNhbXBsZUJ1ZmZlcl0pOgorICAgICAgICAoLVtXZWJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgdGFrZU91dHB1dFNhbXBsZUJ1ZmZlcl0pOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJQcm9jZXNzb3IuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxl
QnVmZmVyUHJvY2Vzc29yLm06IFJlbW92ZWQuCisKIDIwMjAtMDEtMjIgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBEbyBub3QgY3JlYXRlIGEgRm9ybWF0
dGluZ0NvbnRleHQgdW5sZXNzIHRoZXJlJ3MgY29udGVudCB0byBsYXlvdXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDRkMzU1ZTc4MDExOGE5ODgxZjA5YmVlNTRhZTY1ZTM0ZTk3ZTU1MjYuLmY5MDkyYWFmZDc5NDgy
MWY0ZTNlOTQ2MTg0MTUyNzI1YmM0MTA1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjAtMDEtMjIgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtD
b2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKToKKyAgICAgICAgVXNlIG5ldyBjb25zdHJ1Y3Rv
ci4KKwogMjAyMC0wMS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtJUEMgSGFyZGVuaW5nXSBPbmx5IHByb2Nlc3MgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
IG1lc3NhZ2VzIHdoZW4gc2VudCBieSB0aGUgVUlQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGE5MmNkZTkxZWI3YWU4
NGE1ZjFlN2ZkNWFmMjcyMTc1YTRjODM0NC4uZGI1Y2ZkYjMwMTQwYzRmMWY3Mjk5YTRjNmVkMjA1
MTZkODg3NjNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTA5Nyw2ICsxMDk3LDcgQEAKIAkJNDE2RTZGRTgxQkJEMTJERjAw
MEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRF
OSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQz
IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0
cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNE
ODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE2Rjc5OTAyM0Q3NTBD
RjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkY3OThGMjNENzUwQ0IwMDgyOUZD
MSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi87IH07CiAJCTQxNzI1M0FCMTM1
NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi87IH07CiAJCTQxNzYxMkFGMUUzQTk5NDAwMEMzRDgx
RCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFCMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJS
VENNZWRpYUVuZHBvaW50LmNwcCAqLzsgfTsKIAkJNDE3NjEyQjAxRTNBOTk0MDAwQzNEODFEIC8q
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRp
YUVuZHBvaW50LmggKi87IH07CkBAIC0xMTM2LDYgKzExMzcsNyBAQAogCQk0MUIyQTYyNjFFRjFC
RjZEMDAyQjlEN0EgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCMkE2MjUxRUYxQkY2MDAwMkI5RDdBIC8q
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MUJGMjA0OTIyQkE3QkU4MDAwNEY4MTIgLyogUmVhbHRpbWVW
aWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUM3NjBCMTBF
REUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRT
dGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTQxQ0Q2RjhDMjNENkU4MjEwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUNENkY4
QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9
OwogCQk0MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRB
NjYyRiAvKiBDb250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxRDEyOUNFMUYzRDBFRjYwMEQxNUU0NyAvKiBXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFGQjI3OEQxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmgg
Ki87IH07CiAJCTQxRDEyOUQwMUYzRDBGMDUwMEQxNUU0NyAvKiBDYWNoZVF1ZXJ5T3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OUIx
RjM0Q0VGMDAwNzk1NDg3IC8qIENhY2hlUXVlcnlPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc0MTAsNiArNzQxMiw5IEBACiAJCTQx
NkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZl
dGNoSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaElk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTI5QTUxMDJGQTk2
MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdvcmtlclJlcG9ydGluZ1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxNkY3OThEMjNENzUwQ0EwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkY3OThG
MjNENzUwQ0IwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkY3OTkzMjNEOEI2OUMw
MDgyOUZDMSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE3MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNB
OTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTc1MTYsNiArNzUyMSw4IEBACiAJCTQxQzdFMTA1MUU2QTU0MzYw
MDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdFMTA2MUU2QTU0MzYwMDI3QjRE
RSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwODFFNkFBMzdDMDAyN0I0REUgLyogQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFDRDZGODkyM0Q2RTgxQzAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRDZGOEIyM0Q2RTgxRDAw
QjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8q
IEZldGNoQm9keUNvbnN1bWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZldGNoQm9keUNvbnN1bWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFDRjhCRTUxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkwMDEsOCArMTkwMDgsMTMgQEAKIAkJNEQzQzA1
RDQyMUFGNDgwOTAwRjI4OTBBIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLmggKi8sCisJCQkJNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8q
IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLywKIAkJCQk0RDczRjk0QzIxOEM0QTg3
MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oICovLAogCQkJCTRE
NzNGOTREMjE4QzRBODcwMDNBM0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tICovLAorCQkJCTQxNkY3OTkzMjNEOEI2OUMwMDgyOUZDMSAvKiBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tICovLAorCQkJCTQxQ0Q2Rjg5MjNENkU4MUMwMEIx
NjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAqLywKKwkJCQk0MUNENkY4QjIz
RDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovLAogCQkJ
KTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzY0
NSw2ICszMzY1Nyw3IEBACiAJCQkJQTk3ODdDQjQxRjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2li
aWxpdHlNZWRpYU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDBFRUUwRTE0NzQzRjM5
MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RDU1OTY5MTE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxNkY3OTkwMjNENzUwQ0YwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVD
NTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3
MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkU4OEUwRDgxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zNDM3Niw2ICszNDM4OSw3IEBACiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAw
N0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJM0ZCQzRBRjMxODk4ODE1NjAwNDZFRTM4IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJENUExOEYxQzU0NTkyMzAwREUzNEEzIC8q
IFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0
MUNENkY4QzIzRDZFODIxMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwREUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJh
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZp
ZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMzM2RjY3MTdGQTBBQzYwMERE
RENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggNzNmMWQwYTE1MTlmMmMw
M2I5MWQ2OTUxMDUxMzVhNGYyMGQxZGE2NC4uZDQ3OTM0ODgzODYxOTE3ZjZiMzYwZWYxNGRkODJj
MWUzNTNiMmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC02OCw3ICs2OSwx
NCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
Y3JlYXRlKGF1ZGlvVHJhY2ssIHZpZGVvVHJhY2spOworCisgICAgaW50IHdpZHRoID0gMCwgaGVp
Z2h0ID0gMDsKKyAgICBpZiAodmlkZW9UcmFjaykgeworICAgICAgICBhdXRvJiBzZXR0aW5ncyA9
IHZpZGVvVHJhY2stPnNldHRpbmdzKCk7CisgICAgICAgIHdpZHRoID0gc2V0dGluZ3Mud2lkdGgo
KTsKKyAgICAgICAgaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7CisgICAgfQorICAgIGF1dG8g
d3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSghIWF1ZGlvVHJhY2ss
IHdpZHRoLCBoZWlnaHQpOwogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzY1NTk3YmJkNTAxNmM5NDVlM2RlNzJlNzQzYTFhYzBlZDg4YzU4NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisKK3R5cGVkZWYgc3RydWN0IG9w
YXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKKworQGludGVyZmFjZSBXZWJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhDYWxsYmFjazooQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaykgY2FsbGJhY2sg
Y2FsbGJhY2tPYmplY3Q6KHZvaWQqKSBjYWxsYmFja09iamVjdDsKKy0gKHZvaWQpZmluaXNoOwor
LSAodm9pZClhZGRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKWJ1ZmZlcjsKKy0gKENN
U2FtcGxlQnVmZmVyUmVmKXBpY2tPdXRwdXRTYW1wbGVCdWZmZXI7CistIChDTVNhbXBsZUJ1ZmZl
clJlZil0YWtlT3V0cHV0U2FtcGxlQnVmZmVyOworCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3OWQ1Y2Y0MWQ2Yzkw
ZmFiYmY5YWVmNjcyZjI5MTRkYzAyNGM0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQpAQCAtMCwwICsxLDQ5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29kZWMuaD4KKyNpbmNs
dWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxBdWRpb1Rvb2xi
b3gvQXVkaW9Gb3JtYXQuaD4KKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKwor
I2RlZmluZSBMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQgMC4xCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCit0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252
ZXJ0ZXJSZWY7CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgeworICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVl
OworICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX2lucHV0QnVmZmVyUXVldWU7Cisg
ICAgZGlzcGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgQ01UaW1lIG1f
bG93V2F0ZXJUaW1lOworICAgIEJPT0wgbV9pc0VuY29kaW5nOworCisgICAgUmV0YWluUHRyPEF1
ZGlvQ29udmVydGVyUmVmPiBtX2NvbnZlcnRlcjsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gbV9zb3VyY2VGb3JtYXQ7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1f
ZGVzdGluYXRpb25Gb3JtYXQ7CisgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+
IG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICBOU051bWJlciAqbV9nZHJDb3Vu
dE51bTsKKyAgICBVSW50MzIgbV9tYXhPdXRwdXRQYWNrZXRTaXplOworICAgIFZlY3RvcjxBdWRp
b1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25z
OworCisgICAgQ01UaW1lIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAg
ICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wOworICAgIENNVGlt
ZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb247CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9zb3VyY2VC
dWZmZXI7CisgICAgVmVjdG9yPGNoYXI+IG1fZGVzdGluYXRpb25CdWZmZXI7CisKKyAgICBSZXRh
aW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsKKyAgICBzaXplX3Qg
bV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7CisgICAgc2l6ZV90IG1fY3VyT2Zmc2V0SW5TYW1wbGVC
YnVmOworICAgIEF1ZGlvRm9ybWF0SUQgbV9vdXRwdXRDb2RlY1R5cGU7Cit9CisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aENhbGxiYWNrOihDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrKSBj
YWxsYmFjayBjYWxsYmFja09iamVjdDoodm9pZCopIGNhbGxiYWNrT2JqZWN0Cit7CisgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBDTUJ1ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVy
cm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZl
clF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZvdXRwdXRCdWZm
ZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBmb3IgbV9vdXRw
dXRCdWZmZXJRdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgW3NlbGYgcmVs
ZWFzZV07CisgICAgICAgIHNlbGYgPSBuaWw7CisgICAgfQorICAgIG1fb3V0cHV0QnVmZmVyUXVl
dWUgPSBhZG9wdENGKG91dHB1dEJ1ZmZlclF1ZXVlKTsKKworICAgIENNQnVmZmVyUXVldWVSZWYg
aW5wdXRCdWZmZXJRdWV1ZTsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVu
c29ydGVkU2FtcGxlQnVmZmVycygpLCAmaW5wdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBmb3IgbV9pbnB1dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICBbc2VsZiByZWxlYXNlXTsKKyAgICAgICAgc2VsZiA9IG5p
bDsKKyAgICB9CisgICAgbV9pbnB1dEJ1ZmZlclF1ZXVlID0gYWRvcHRDRihpbnB1dEJ1ZmZlclF1
ZXVlKTsKKworICAgIG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0
ZShbQCJjb20uYXBwbGUuV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiBVVEY4U3RyaW5n
XSwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKyAgICBtX2xvd1dhdGVyVGltZSA9IENNVGltZU1h
a2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQsIDEwMDApOworICAgIG1fb3V0
cHV0Q29kZWNUeXBlID0ga0F1ZGlvRm9ybWF0TVBFRzRBQUM7CisgICAgbV9pc0VuY29kaW5nID0g
WUVTOworCisgICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0cHV0QnVmZmVyUXVl
dWUuZ2V0KCksIGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVyUXVldWVUcmlnZ2Vy
X1doZW5EYXRhQmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywgTlVMTCk7CisKKyAgICByZXR1cm4g
c2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKG1fc2VyaWFsRGlzcGF0Y2hR
dWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOwor
CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWZpbmlzaAoreworICAgIGRpc3Bh
dGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBbc2VsZiBwcm9jZXNz
U2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lOmtDTVRpbWVJbnZhbGlkXTsKKyAgICAgICAg
YXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0cHV0QnVmZmVyUXVl
dWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJl
YW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZU1hcmtFbmRP
ZkRhdGEgZmFpbGVkICVkIiwgZXJyb3IpOworICAgICAgICBtX2lzRW5jb2RpbmcgPSBOTzsKKyAg
ICB9CisgICAgKTsKK30KKworc3RhdGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElu
cHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiAqbnVtT3V0cHV0UGFja2V0c1B0
ciwgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0
aW9uICoqcGFja2V0RGVzY3JpcHRpb25PdXQsIHZvaWQgKndlYkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvcikKK3sKKyAgICBXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgKmNvbXByZXNz
b3IgPSAoV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yICopd2ViQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOworICAgIHJldHVybiBbY29tcHJlc3NvciBwcm92aWRlU291cmNlRGF0YU51
bU91dHB1dFBhY2tldHM6bnVtT3V0cHV0UGFja2V0c1B0ciBidWZmZXJMaXN0OmJ1ZmZlckxpc3Qg
cGFja2V0RGVzY3JpcHRpb246cGFja2V0RGVzY3JpcHRpb25PdXRdOworfQorCistIChCT09MKWlu
aXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uOihDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmKWZvcm1hdERlc2NyaXB0aW9uIG91dHB1dEF1ZGlvRm9ybWF0SUQ6KEF1ZGlvRm9y
bWF0SUQpb3V0cHV0Rm9ybWF0SUQKK3sKKyAgICBjb25zdCBhdXRvICphdWRpb0Zvcm1hdExpc3RJ
dGVtID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdChm
b3JtYXREZXNjcmlwdGlvbik7CisgICAgbV9zb3VyY2VGb3JtYXQgPSBhdWRpb0Zvcm1hdExpc3RJ
dGVtLT5tQVNCRDsKKworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUZvcm1hdElEID0gb3V0cHV0
Rm9ybWF0SUQ7CisgICAgbV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fc291cmNl
Rm9ybWF0Lm1TYW1wbGVSYXRlOworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVy
RnJhbWUgPSBtX3NvdXJjZUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKyAgICBVSW50MzIgc2l6
ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1
ZGlvRm9ybWF0R2V0UHJvcGVydHkoa0F1ZGlvRm9ybWF0UHJvcGVydHlfRm9ybWF0SW5mbywgMCwg
TlVMTCwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRp
b0Zvcm1hdEdldFByb3BlcnR5IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1
cm4gTk87CisgICAgfQorCisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgY29udmVydGVyOworICAgIGlm
IChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJOZXcoJm1fc291cmNlRm9ybWF0LCAmbV9kZXN0
aW5hdGlvbkZvcm1hdCwgJmNvbnZlcnRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0
ZXJOZXcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9
CisgICAgbV9jb252ZXJ0ZXIgPSBhZG9wdENGKGNvbnZlcnRlcik7CisKKyAgICBzaXplX3QgY29v
a2llU2l6ZSA9IDA7CisgICAgY29uc3Qgdm9pZCAqY29va2llID0gQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uR2V0TWFnaWNDb29raWUoZm9ybWF0RGVzY3JpcHRpb24sICZjb29raWVTaXplKTsKKyAg
ICBpZiAoY29va2llU2l6ZSkgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVy
dGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckRlY29tcHJl
c3Npb25NYWdpY0Nvb2tpZSwgKFVJbnQzMiljb29raWVTaXplLCBjb29raWUpKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tp
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9zb3VyY2VGb3JtYXQpOworICAgIGlm
IChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQo
KSwga0F1ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAm
bV9zb3VyY2VGb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVy
Q3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgIHJldHVybiBOTzsKKyAgICB9CisKKyAgICBpZiAoIW1fc291cmNlRm9ybWF0Lm1CeXRl
c1BlclBhY2tldCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIm1C
eXRlc1BlclBhY2tldCBzaG91bGQgbm90IGJlIHplcm8iKTsKKyAgICAgICAgcmV0dXJuIE5POwor
ICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlvbkZvcm1hdCk7CisgICAgaWYg
KGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgp
LCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAm
bV9kZXN0aW5hdGlvbkZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252
ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZv
cm1hdC5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TVBFRzRBQUMpIHsKKyAgICAgICAgVUludDMy
IG91dHB1dEJpdFJhdGUgPSA2NDAwMDsKKyAgICAgICAgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQu
bVNhbXBsZVJhdGUgPj0gNDQxMDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMTkyMDAw
OworICAgICAgICBlbHNlIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlIDwgMjIw
MDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMzIwMDA7CisKKyAgICAgICAgc2l6ZSA9
IHNpemVvZihvdXRwdXRCaXRSYXRlKTsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0Nv
bnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJFbmNv
ZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNl
dHRpbmcga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgh
bV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpIHsKKyAgICAgICAgLy8gSWYgdGhl
IGRlc3RpbmF0aW9uIGZvcm1hdCBpcyBWQlIsIHdlIG5lZWQgdG8gZ2V0IG1heCBzaXplIHBlciBw
YWNrZXQgZnJvbSB0aGUgY29udmVydGVyLgorICAgICAgICBzaXplID0gc2l6ZW9mKG1fbWF4T3V0
cHV0UGFja2V0U2l6ZSk7CisKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRl
ckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eU1h
eGltdW1PdXRwdXRQYWNrZXRTaXplLCAmc2l6ZSwgJm1fbWF4T3V0cHV0UGFja2V0U2l6ZSkpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVt
T3V0cHV0UGFja2V0U2l6ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJl
dHVybiBOTzsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fc291cmNlQnVmZmVyLnJlc2VydmVD
YXBhY2l0eShbc2VsZiBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0Om1fc291cmNlRm9y
bWF0IG1heE91dHB1dFBhY2tldFNpemU6MCBkdXJhdGlvbjowLjFdKTsKKyAgICBtX2Rlc3RpbmF0
aW9uQnVmZmVyLnJlc2VydmVDYXBhY2l0eShbc2VsZiBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlv
Rm9ybWF0Om1fZGVzdGluYXRpb25Gb3JtYXQgbWF4T3V0cHV0UGFja2V0U2l6ZTptX21heE91dHB1
dFBhY2tldFNpemUgZHVyYXRpb246MC4xXSk7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0
Lm1CeXRlc1BlclBhY2tldCkKKyAgICAgICAgbV9kZXN0aW5hdGlvblBhY2tldERlc2NyaXB0aW9u
cy5yZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpIC8gbV9tYXhP
dXRwdXRQYWNrZXRTaXplKTsKKworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKHNpemVfdCljb21w
dXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0OihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24p
Zm9ybWF0IG1heE91dHB1dFBhY2tldFNpemU6KFVJbnQzMiltYXhPdXRwdXRQYWNrZXRTaXplIGR1
cmF0aW9uOihGbG9hdDMyKWR1cmF0aW9uCit7CisgICAgVUludDMyIG51bVBhY2tldHMgPSAoZm9y
bWF0Lm1TYW1wbGVSYXRlICogZHVyYXRpb24pIC8gZm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQ7Cisg
ICAgVUludDMyIG91dHB1dFBhY2tldFNpemUgPSBmb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gZm9y
bWF0Lm1CeXRlc1BlclBhY2tldCA6IG1heE91dHB1dFBhY2tldFNpemU7CisgICAgVUludDMyIGJ1
ZmZlclNpemUgPSBudW1QYWNrZXRzICogb3V0cHV0UGFja2V0U2l6ZTsKKworICAgIHJldHVybiBi
dWZmZXJTaXplOworfQorCistICh2b2lkKWF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkOihDTVNh
bXBsZUJ1ZmZlclJlZilidWZmZXIKK3sKKyAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQobV9yZW1h
aW5pbmdQcmltZUR1cmF0aW9uKSkgeworICAgICAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBw
cmltZUluZm8geyAwLCAwIH07CisgICAgICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKHByaW1lSW5m
byk7CisKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5
KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8sICZzaXplLCAmcHJp
bWVJbmZvKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJX
ZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcmlt
ZUluZm8gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVNYWtlKHBy
aW1lSW5mby5sZWFkaW5nRnJhbWVzLCBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlKTsK
KyAgICB9CisKKyAgICBpZiAoQ01USU1FX0NPTVBBUkVfSU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBt
X3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7CisgICAgICAgIENNVGltZSBzYW1wbGVEdXJhdGlv
biA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsKKyAgICAgICAgQ01UaW1lIHRy
aW1EdXJhdGlvbiA9IENNVGltZU1pbmltdW0oc2FtcGxlRHVyYXRpb24sIG1fcmVtYWluaW5nUHJp
bWVEdXJhdGlvbik7CisgICAgICAgIENGRGljdGlvbmFyeVJlZiB0cmltQXRTdGFydERpY3QgPSBD
TVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCk7
CisgICAgICAgIENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1l
bnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnREaWN0LCBrQ01BdHRhY2htZW50
TW9kZV9TaG91bGRQcm9wYWdhdGUpOworICAgICAgICBDRlJlbGVhc2UodHJpbUF0U3RhcnREaWN0
KTsKKyAgICAgICAgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uID0gQ01UaW1lU3VidHJhY3QobV9y
ZW1haW5pbmdQcmltZUR1cmF0aW9uLCB0cmltRHVyYXRpb24pOworICAgIH0KK30KKworLSAoTlNO
dW1iZXIgKilncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudAoreworICAgIFVJbnQzMiBkZWxheVNp
emUgPSBzaXplb2YodWludDMyX3QpOworICAgIHVpbnQzMl90IG9yaWdpbmFsRGVsYXlNb2RlID0g
MDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252
ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUsICZkZWxheVNpemUsICZv
cmlnaW5hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1By
b3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4g
bmlsOworICAgIH0KKworICAgIHVpbnQzMl90IG9wdGltYWxEZWxheU1vZGUgPSBrQXVkaW9Db2Rl
Y0RlbGF5TW9kZV9PcHRpbWFsOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJT
ZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9k
ZSwgZGVsYXlTaXplLCAmb3B0aW1hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGlu
ZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
ICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIFVJbnQzMiBwcmltZVNpemUgPSBzaXpl
b2YoQXVkaW9Db2RlY1ByaW1lSW5mbyk7CisgICAgQXVkaW9Db2RlY1ByaW1lSW5mbyBwcmltZUlu
Zm8geyAwLCAwIH07CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3Bl
cnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZvLCAmcHJp
bWVTaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvZGVj
UHJvcGVydHlQcmltZUluZm8gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVy
biBuaWw7CisgICAgfQorCisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFBy
b3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCBk
ZWxheVNpemUsICZvcmlnaW5hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBr
QXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDoocHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMgLyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1GcmFt
ZXNQZXJQYWNrZXQpXTsKK30KKworLSAoQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyV2l0
aE51bVBhY2tldHM6KFVJbnQzMiludW1QYWNrZXRzIGZpbGxCdWZmZXJMaXN0OihBdWRpb0J1ZmZl
ckxpc3QpZmlsbEJ1ZmZlckxpc3QKK3sKKyAgICBWZWN0b3I8Y2hhcj4gY29va2llOworICAgIGlm
ICghbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIFVJbnQzMiBjb29r
aWVTaXplID0gMDsKKworICAgICAgICBhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9w
ZXJ0eUluZm8obV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFn
aWNDb29raWUsICZjb29raWVTaXplLCBOVUxMKTsKKyAgICAgICAgaWYgKChlcnJvciA9PSBub0Vy
cikgJiYgISFjb29raWVTaXplKSB7CisgICAgICAgICAgICBjb29raWUucmVzZXJ2ZUNhcGFjaXR5
KGNvb2tpZVNpemUpOworCisgICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVy
dGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNz
aW9uTWFnaWNDb29raWUsICZjb29raWVTaXplLCBjb29raWUuZGF0YSgpKSkgeworICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tp
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJl
ZiBkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAgICAgICBpZiAoYXV0byBlcnJvciA9
IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmbV9k
ZXN0aW5hdGlvbkZvcm1hdCwgMCwgTlVMTCwgY29va2llU2l6ZSwgY29va2llLmRhdGEoKSwgTlVM
TCwgJmRlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24pKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBD
TUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICB9CisgICAgICAgIG1fZGVzdGluYXRpb25G
b3JtYXREZXNjcmlwdGlvbiA9IGFkb3B0Q0YoZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbik7
CisgICAgICAgIG1fZ2RyQ291bnROdW0gPSBbc2VsZiBncmFkdWFsRGVjb2RlclJlZnJlc2hDb3Vu
dF07CisgICAgfQorCisgICAgY2hhciAqZGF0YSA9IHN0YXRpY19jYXN0PGNoYXIqPihmaWxsQnVm
ZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSk7CisgICAgc2l6ZV90IGRhdGFTaXplID0gZmlsbEJ1
ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZTsKKworICAgIENNQmxvY2tCdWZmZXJS
ZWYgYmxvY2tCdWZmZXI7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ3JlYXRl
V2l0aE1lbW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGRhdGFTaXplLCBrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBOVUxMLCAwLCBkYXRhU2l6ZSwga0NNQmxvY2tCdWZmZXJBc3N1cmVN
ZW1vcnlOb3dGbGFnLCAmYmxvY2tCdWZmZXIpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQmxvY2tCdWZm
ZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2sgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAg
IHJldHVybiBuaWw7CisgICAgfQorICAgIGF1dG8gYnVmZmVyID0gYWRvcHRDRihibG9ja0J1ZmZl
cik7CisKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVz
KGRhdGEsIGJ1ZmZlci5nZXQoKSwgMCwgZGF0YVNpemUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQmxv
Y2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAg
ICByZXR1cm4gbmlsOworICAgIH0KKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZl
cjsKKyAgICBhdXRvIGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXRE
ZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLmdldCgpLCB0cnVlLCBOVUxM
LCBOVUxMLCBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCksIG51bVBhY2tldHMs
IG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCwgbV9kZXN0aW5hdGlvblBhY2tl
dERlc2NyaXB0aW9ucy5kYXRhKCksICZzYW1wbGVCdWZmZXIpOworICAgIGlmIChlcnJvcikgewor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0
aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9
CisKKyAgICBpZiAoW21fZ2RyQ291bnROdW0gaW50VmFsdWVdKQorICAgICAgICBDTVNldEF0dGFj
aG1lbnQoc2FtcGxlQnVmZmVyLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0dyYWR1YWxE
ZWNvZGVyUmVmcmVzaCwgKF9fYnJpZGdlIENGVHlwZVJlZiltX2dkckNvdW50TnVtLCBrQ01BdHRh
Y2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOworCisgICAgcmV0dXJuIHNhbXBsZUJ1ZmZlcjsK
K30KKworLSAodm9pZClwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lOihDTVRp
bWUpbG93V2F0ZXJUaW1lCit7CisgICAgaWYgKCFtX2NvbnZlcnRlcikgeworICAgICAgICBhdXRv
IGJ1ZmZlciA9IChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJR
dWV1ZUdldEhlYWQobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOworCisgICAgICAgIG1fY3Vy
cmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2Vu
dGF0aW9uVGltZVN0YW1wKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1dFByZXNlbnRh
dGlvblRpbWVTdGFtcCA9IENNU2FtcGxlQnVmZmVyR2V0T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0
YW1wKGJ1ZmZlcik7CisKKyAgICAgICAgYXV0byBmb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxl
QnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24oYnVmZmVyKTsKKyAgICAgICAgaWYgKCFbc2VsZiBp
bml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbjpmb3JtYXREZXNjcmlw
dGlvbiBvdXRwdXRBdWRpb0Zvcm1hdElEOm1fb3V0cHV0Q29kZWNUeXBlXSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB3aGlsZSAoQ01USU1FX0lTX0lOVkFMSUQobG93V2F0ZXJU
aW1lKSB8fCBDTVRJTUVfQ09NUEFSRV9JTkxJTkUobG93V2F0ZXJUaW1lLCA8LCBDTUJ1ZmZlclF1
ZXVlR2V0RHVyYXRpb24obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpIHsKKyAgICAgICAgQXVk
aW9CdWZmZXJMaXN0IGZpbGxCdWZmZXJMaXN0OworCisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1O
dW1iZXJCdWZmZXJzID0gMTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51
bWJlckNoYW5uZWxzID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKyAg
ICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IChVSW50MzIp
bV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpOworICAgICAgICBmaWxsQnVmZmVyTGlzdC5t
QnVmZmVyc1swXS5tRGF0YSA9IG1fZGVzdGluYXRpb25CdWZmZXIuZGF0YSgpOworCisgICAgICAg
IFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQ
YWNrZXQgPyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA6IG1fbWF4T3V0cHV0
UGFja2V0U2l6ZTsKKyAgICAgICAgVUludDMyIG51bU91dHB1dFBhY2tldHMgPSAoVUludDMyKW1f
ZGVzdGluYXRpb25CdWZmZXIuY2FwYWNpdHkoKSAvIG91dHB1dFBhY2tldFNpemU7CisKKyAgICAg
ICAgYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIobV9jb252ZXJ0
ZXIuZ2V0KCksIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MsIChfX2JyaWRnZSB2
b2lkICopc2VsZiwgJm51bU91dHB1dFBhY2tldHMsICZmaWxsQnVmZmVyTGlzdCwgbV9kZXN0aW5h
dGlvblBhY2tldERlc2NyaXB0aW9ucy5kYXRhKCkpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIW51bU91dHB1dFBhY2tldHMpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBh
dXRvIGJ1ZmZlciA9IFtzZWxmIHNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzOm51bU91dHB1dFBh
Y2tldHMgZmlsbEJ1ZmZlckxpc3Q6ZmlsbEJ1ZmZlckxpc3RdOworCisgICAgICAgIFtzZWxmIGF0
dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkOmJ1ZmZlcl07CisKKyAgICAgICAgZXJyb3IgPSBDTVNh
bXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIsIG1fY3VycmVu
dE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3Rh
bXAgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBDTVRpbWUgbmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1
cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVT
dGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG5h
dGl2ZUR1cmF0aW9uKTsKKworICAgICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24gPSBDTVNhbXBs
ZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1
dFByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRwdXRQcmVzZW50
YXRpb25UaW1lU3RhbXAsIG91dHB1dER1cmF0aW9uKTsKKworICAgICAgICBlcnJvciA9IENNQnVm
ZmVyUXVldWVFbnF1ZXVlKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAg
ICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9Cit9CisKKy0gKE9TU3RhdHVzKXByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0
czooVUludDMyICopbnVtT3V0cHV0UGFja2V0c1B0ciBidWZmZXJMaXN0OihBdWRpb0J1ZmZlckxp
c3QgKilhdWRpb0J1ZmZlckxpc3QgcGFja2V0RGVzY3JpcHRpb246KEF1ZGlvU3RyZWFtUGFja2V0
RGVzY3JpcHRpb24gKiopcGFja2V0RGVzY3JpcHRpb25PdXQKK3sKKyAgICBjb25zdCBVSW50MzIg
bnVtUGFja2V0c1RvQ29weSA9ICpudW1PdXRwdXRQYWNrZXRzUHRyOworICAgIHNpemVfdCBudW1C
eXRlc1RvQ29weSA9IChudW1QYWNrZXRzVG9Db3B5ICogbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVy
UGFja2V0KTsKKyAgICBzaXplX3QgY3VyT2Zmc2V0SW5TcmNCdWZmZXIgPSAwOworCisgICAgaWYg
KGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnMgPT0gMSkgeworICAgICAgICBtX3NvdXJj
ZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobnVtQnl0ZXNUb0NvcHkpOworCisgICAgICAgIHdoaWxl
ICgwIDwgbnVtQnl0ZXNUb0NvcHkpIHsKKyAgICAgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVm
ZmVyU2l6ZSA8PSBtX2N1ck9mZnNldEluU2FtcGxlQmJ1ZikgeworICAgICAgICAgICAgICAgIGlm
IChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxv
Y2tCdWZmZXIgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVy
U2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKENNQnVm
ZmVyUXVldWVJc0VtcHR5KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9w
dENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURl
cXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsKKyAgICAgICAgICAg
ICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29u
c3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBs
ZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJT
aXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQo
KSk7CisgICAgICAgICAgICAgICAgbV9jdXJPZmZzZXRJblNhbXBsZUJidWYgPSAwOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAg
ICAgICAgICAgIHNpemVfdCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmID0gc3RkOjptaW4o
bnVtQnl0ZXNUb0NvcHksIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSAtIG1fY3VyT2Zmc2V0SW5T
YW1wbGVCYnVmKSk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVm
ZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1ck9mZnNldElu
U2FtcGxlQmJ1ZiwgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiwgKG1fc291cmNlQnVmZmVy
LmRhdGEoKSArIGN1ck9mZnNldEluU3JjQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxl
QmJ1ZjsKKyAgICAgICAgICAgICAgICBjdXJPZmZzZXRJblNyY0J1ZmZlciArPSBudW1CeXRlc1Rv
Q29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgICAgIG1fY3VyT2Zmc2V0SW5TYW1wbGVC
YnVmICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IG1fc291
cmNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5t
RGF0YUJ5dGVTaXplID0gY3VyT2Zmc2V0SW5TcmNCdWZmZXI7CisgICAgICAgIGF1ZGlvQnVmZmVy
TGlzdC0+bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9zb3VyY2VGb3JtYXQubUNoYW5u
ZWxzUGVyRnJhbWU7CisgICAgICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVy
TGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1Bl
clBhY2tldCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1ZGlvQnVmZmVyTGlzdC0+bU51
bWJlckJ1ZmZlcnMgPT0gMikKKyAgICAgICAgICAgIG51bUJ5dGVzVG9Db3B5ID0gbnVtQnl0ZXNU
b0NvcHkgKiAyOworCisgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVm
ZmVyUXVldWUuZ2V0KCkpKSB7CisgICAgICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJz
WzBdLm1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZl
cnNbMF0ubURhdGFCeXRlU2l6ZSA9IDA7CisgICAgICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1C
dWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IDE7CisKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVy
TGlzdC0+bUJ1ZmZlcnNbMV0ubURhdGEgPSBudWxscHRyOworICAgICAgICAgICAgYXVkaW9CdWZm
ZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gMDsKKyAgICAgICAgICAgIGF1ZGlv
QnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0gMTsKKworICAgICAgICAg
ICAgKm51bU91dHB1dFBhY2tldHNQdHIgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3Rf
Y2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1
ZXVlLmdldCgpKSkpKTsKKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBhZG9wdENG
KChDTUJsb2NrQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDRlJldGFpbihDTVNhbXBsZUJ1
ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKSkpKSk7CisgICAgICAgICAgICBt
X3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fc2Ft
cGxlQmxvY2tCdWZmZXIuZ2V0KCkpOworICAgICAgICAgICAgbV9zb3VyY2VCdWZmZXIucmVzZXJ2
ZUNhcGFjaXR5KG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplKTsKKyAgICAgICAgICAgIGlmIChhdXRv
IGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5n
ZXQoKSwgMCwgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUsIG1fc291cmNlQnVmZmVyLmRhdGEoKSkp
IHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVybGVhdmVkIGRh
dGEgYnkgdW5pbnRlcmxlYXZpbmcgbV9zb3VyY2VCdWZmZXIgaWYgbmVlZGVkLgorICAgICAgICAg
ICAgQVNTRVJUKG1fc291cmNlRm9ybWF0Lm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJ
c05vbkludGVybGVhdmVkKTsKKworICAgICAgICAgICAgYXV0byBidWZmZXJTaXplID0gbV9zYW1w
bGVCbG9ja0J1ZmZlclNpemUgLyAyOworICAgICAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVm
ZmVyc1swXS5tRGF0YSA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgICAgIGF1ZGlv
QnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAg
ICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IDE7
CisKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubURhdGEgPSBtX3Nv
dXJjZUJ1ZmZlci5kYXRhKCkgKyBidWZmZXJTaXplOworICAgICAgICAgICAgYXVkaW9CdWZmZXJM
aXN0LT5tQnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsKKyAgICAgICAgICAg
IGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0gMTsKKworICAg
ICAgICAgICAgKm51bU91dHB1dFBhY2tldHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVy
c1swXS5tRGF0YUJ5dGVTaXplIC8gbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChwYWNrZXREZXNjcmlwdGlvbk91dCkgeworICAgICAg
ICAvLyBXZSBhc3N1bWUgdGhhdCB0aGUgc291cmNlIGZvcm1hdCBpcyBQQ00sIHdoaWNoIGlzIG5v
dCBWQlIsIGJ1dCBDQlIuCisgICAgICAgIC8vIFNvLCB0aGVyZSBpcyBub3QgcGFja2V0IGRlc2Ny
aXB0aW9ucyBkZXNjcmliaW5nIHRoZSBsYXlvdXQgb2YgZWFjaCBwYWNrZXQuCisgICAgICAgICpw
YWNrZXREZXNjcmlwdGlvbk91dCA9IE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG5vRXJyOwor
fQorCistICh2b2lkKXByb2Nlc3NTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNidWYK
K3sKKyAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUobV9pbnB1dEJ1ZmZlclF1
ZXVlLmdldCgpLCBzYnVmKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFT
dHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVl
dWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICBbc2VsZiBwcm9jZXNzU2FtcGxlQnVm
ZmVyc1VudGlsTG93V2F0ZXJUaW1lOm1fbG93V2F0ZXJUaW1lXTsKK30KKworLSAodm9pZClhZGRT
YW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNidWYKK3sKKyAgICBkaXNwYXRjaF9zeW5j
KG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykKKyAg
ICAgICAgICAgIFtzZWxmIHByb2Nlc3NTYW1wbGVCdWZmZXI6c2J1Zl07CisgICAgfSk7Cit9CisK
Ky0gKENNU2FtcGxlQnVmZmVyUmVmKXBpY2tPdXRwdXRTYW1wbGVCdWZmZXIKK3sKKyAgICByZXR1
cm4gKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0
SGVhZChtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOworfQorCistIChDTVNhbXBsZUJ1ZmZl
clJlZil0YWtlT3V0cHV0U2FtcGxlQnVmZmVyCit7CisgICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZl
clJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9v
dXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKK30KKworQGVuZAorCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggYjE0N2NhMjg4
MjliMGYxMDMwYmRhNzRhMDg0MjZjNDU2NWU5ODcxZS4uZDc1ZmZlZjU5OWQwNzRmM2U0OTUzZDcx
OTNlY2JjZmNlMjNiMGIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9u
LmgiCiAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KQEAgLTM0LDExICszNSwxOCBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Ro
cmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5
cGVzLmg+CisjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogCiB0eXBlZGVmIHN0cnVjdCBv
cGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0
cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwor
dHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiAqQ01CdWZmZXJR
dWV1ZVRyaWdnZXJUb2tlbjsKIAogT0JKQ19DTEFTUyBBVkFzc2V0V3JpdGVyOwogT0JKQ19DTEFT
UyBBVkFzc2V0V3JpdGVySW5wdXQ7CitPQkpDX0NMQVNTIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZTsKK09CSkNfQ0xBU1MgV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOworT0JKQ19DTEFT
UyBXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiAKIG5hbWVzcGFjZSBXVEYgewogY2xh
c3MgTWVkaWFUaW1lOwpAQCAtNTAsMjUgKzU4LDczIEBAIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb247CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVk
aW9EYXRhOwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdlYWtQdHJGYWN0
b3J5SW5pdGlhbGl6YXRpb246OkVhZ2VyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlKiBhdWRpb1RyYWNrLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdmlkZW9U
cmFjayk7CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3Jl
YXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgICAgfk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKCk7Ci0gICAgCi0gICAgYm9vbCBzZXR1cFdyaXRlcigpOwotICAg
IGJvb2wgc2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotICAgIGJvb2wgc2V0
QXVkaW9JbnB1dCgpOworCiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBs
ZUJ1ZmZlclJlZik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBjb25zdCBXVEY6
Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7CiAgICAgdm9p
ZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
KT4mJik7CiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAgIHZvaWQgYXBwZW5kRGF0
YShjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZERhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorICAgIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVy
PiYmLCBib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKTsKKyAgICB2b2lkIGNsZWFyKCk7CisK
KyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lk
KiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CisgICAgc3RhdGljIHZvaWQgY29tcHJlc3Nl
ZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9r
ZW4pOworCisgICAgdm9pZCBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAgdm9pZCBmbHVzaENvbXBy
ZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisgICAgdm9pZCBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVm
ZmVycygpOworCisgICAgYm9vbCBhcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKTsK
KyAgICBib29sIGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpOworCisgICAgdm9p
ZCBwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOworICAgIHZvaWQgcHJv
Y2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKKyNlbHNlCiAgICAgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYsIFN0cmluZyYm
IHBhdGgpOwogICAgIHZvaWQgY2xlYXIoKTsKIAorICAgIGJvb2wgc2V0dXBXcml0ZXIoKTsKKyAg
ICBib29sIHNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBib29sIHNl
dEF1ZGlvSW5wdXQoKTsKKyNlbmRpZgorCisgICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKKwogICAgIFJldGFpblB0
cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKKworICAgIGJvb2wgbV9pc1N0b3BwaW5nIHsgZmFs
c2UgfTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4gbV9mZXRjaERhdGFDb21wbGV0aW9u
SGFuZGxlcjsKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgYm9vbCBtX2hhc0F1
ZGlvOworICAgIGJvb2wgbV9oYXNWaWRlbzsKKworICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CisgICAgUmV0YWluUHRyPFdlYkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7CisgICAgUmV0YWlu
UHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQ7CisKKyAgICBS
ZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9u
OworICAgIFJldGFpblB0cjxXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fdmlkZW9D
b21wcmVzc29yOworICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9Bc3Nl
dFdyaXRlcklucHV0OworICAgIENNVGltZSBtX2xhc3RWaWRlb1ByZXNlbnRhdGlvblRpbWU7Cisg
ICAgQ01UaW1lIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lOworICAgIGJvb2wgbV9oYXNFbmNvZGVk
VmlkZW9TYW1wbGVzIHsgZmFsc2UgfTsKKworICAgIFJldGFpblB0cjxXZWJBVkFzc2V0V3JpdGVy
RGVsZWdhdGU+IG1fd3JpdGVyRGVsZWdhdGU7CisjZWxzZQogICAgIFJldGFpblB0cjxBVkFzc2V0
V3JpdGVySW5wdXQ+IG1fdmlkZW9JbnB1dDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklu
cHV0PiBtX2F1ZGlvSW5wdXQ7CiAKQEAgLTc4LDE3ICsxMzQsMTMgQEAgcHJpdmF0ZToKICAgICBC
aW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nU2VtYXBob3JlOwogICAgIEJpbmFyeVNlbWFw
aG9yZSBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZTsKICAgICBCaW5hcnlTZW1hcGhvcmUg
bV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmU7Ci0gICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0
aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNGaXJzdEF1ZGlvU2FtcGxlIHsgdHJ1ZSB9OwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9h
dWRpb1B1bGxRdWV1ZTsKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fdmlkZW9QdWxsUXVldWU7CiAg
ICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV92aWRlb0J1ZmZlclBvb2w7
CiAgICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV9hdWRpb0J1ZmZlclBv
b2w7CiAKLSAgICBib29sIG1faXNTdG9wcGluZyB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOwotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJik+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAyMzM1NGY0Nzg0ZGUwOTJmMDQ4N2MxODU0
ZmM1YjI2YTVlMjIxMWFjLi42YmJmOTc0ODAzODcyZWZjMmQ3ZmQ3M2QzNjhjYTE4MDhlN2NmYzQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCkBAIC0yNiwxMTIgKzI2LDE0NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKIAorI2lmICFVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FG
aWxlQmFzZWQubW0iCisjZWxzZQorCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFW
Rk9VTkRBVElPTikKIAorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgog
I2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIK
ICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91
bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQuaD4KKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZB
c3NldFdyaXRlcl9Qcml2YXRlLmg+CiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAogI2ltcG9ydCA8
cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKLSN1bmRlZiBBVkVuY29kZXJCaXRS
YXRlS2V5Ci0jZGVmaW5lIEFWRW5jb2RlckJpdFJhdGVLZXkgZ2V0QVZFbmNvZGVyQml0UmF0ZUtl
eVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZGb3JtYXRJREtleQotI2RlZmluZSBBVkZvcm1hdElE
S2V5IGdldEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQotI3VuZGVmIEFWTnVtYmVyT2ZDaGFu
bmVsc0tleQotI2RlZmluZSBBVk51bWJlck9mQ2hhbm5lbHNLZXkgZ2V0QVZOdW1iZXJPZkNoYW5u
ZWxzS2V5V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBBVlNhbXBsZVJhdGVLZXkKLSNkZWZpbmUgQVZT
YW1wbGVSYXRlS2V5IGdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCitAaW50ZXJmYWNl
IFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxBVkFzc2V0V3JpdGVyRGVsZWdh
dGU+IHsKKyAgICBXZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBt
X3dyaXRlcjsKK30KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoV3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciopd3JpdGVyOwor
LSAodm9pZCljbG9zZTsKKy0gKHZvaWQpZmluaXNoOwogCi11c2luZyBuYW1lc3BhY2UgUEFMOwor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIHsKK307CiAK
LXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZGb3JtYXRJREtleVdpdGhGYWxsYmFjaygpCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKil3cml0ZXIKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkZvcm1h
dElES2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJ
REtleSgpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc2VsZiA9IFtzdXBlciBp
bml0XTsKKyAgICBpZiAoc2VsZikKKyAgICAgICAgc2VsZi0+bV93cml0ZXIgPSBtYWtlV2Vha1B0
cih3cml0ZXIpOwogCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9h
ZCBBVkZvcm1hdElES2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZGb3JtYXRJREtleSI7CisgICAgcmV0
dXJuIHNlbGY7CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5
V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmIChQQUw6OmNhbkxvYWRf
QVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgpKQotICAgICAgICByZXR1cm4gUEFM
OjpnZXRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgpOwotCi0gICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVk51bWJlck9mQ2hhbm5lbHNLZXki
KTsKLSAgICByZXR1cm4gQCJBVk51bWJlck9mQ2hhbm5lbHNLZXkiOworICAgIFtzdXBlciBkZWFs
bG9jXTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJh
Y2soKQorLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdyaXRlciAqKWFzc2V0V3JpdGVyIGRp
ZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YTooTlNEYXRhICopZnJhZ21lbnRlZEhlYWRlckRh
dGEKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXko
KSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXko
KTsKKyAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0ZXIpOworICAgIGlmICghaXNNYWluVGhyZWFk
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2l6ZSA9IFtmcmFnbWVudGVkSGVhZGVyRGF0YSBsZW5n
dGhdKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0
YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4oc2VsZiksIGJ1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRl
ZEhlYWRlckRhdGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
aWYgKHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyKQorICAgICAgICAgICAgICAgICAgICBwcm90ZWN0
ZWRTZWxmLT5tX3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZTYW1wbGVSYXRlS2V5Iik7Ci0gICAg
cmV0dXJuIEAiQVZTYW1wbGVSYXRlS2V5IjsKKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1f
d3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZEhl
YWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pOwogfQogCi1z
dGF0aWMgTlNTdHJpbmcgKmdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2soKQorLSAo
dm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdyaXRlciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VG
cmFnbWVudGVkTWVkaWFEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkTWVkaWFEYXRhIGZyYWdtZW50
ZWRNZWRpYURhdGFSZXBvcnQ6KEFWRnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCAqKWZyYWdtZW50
ZWRNZWRpYURhdGFSZXBvcnQKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9B
VkVuY29kZXJCaXRSYXRlS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRp
b25fQVZFbmNvZGVyQml0UmF0ZUtleSgpOworICAgIFVOVVNFRF9QQVJBTShhc3NldFdyaXRlcik7
CisgICAgVU5VU0VEX1BBUkFNKGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQpOworICAgIGlmICgh
aXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2l6ZSA9IFtmcmFnbWVudGVkTWVk
aWFEYXRhIGxlbmd0aF0pIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVy
ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KFtmcmFnbWVudGVkTWVkaWFEYXRhIGJ5dGVzXSksIHNpemUpXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlcikKKyAgICAgICAgICAgICAgICAg
ICAgcHJvdGVjdGVkU2VsZi0+bV93cml0ZXItPmFwcGVuZERhdGEoV1RGTW92ZShidWZmZXIpKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRW5jb2RlckJpdFJh
dGVLZXkiKTsKLSAgICByZXR1cm4gQCJBVkVuY29kZXJCaXRSYXRlS2V5IjsKKyAgICBpZiAobV93
cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihbZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBbZnJhZ21lbnRlZE1lZGlhRGF0YSBs
ZW5ndGhdKTsKIH0KIAotUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
KiBhdWRpb1RyYWNrLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdmlkZW9UcmFjaykK
Ky0gKHZvaWQpY2xvc2UKIHsKLSAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwotICAgIGlm
ICh2aWRlb1RyYWNrKSB7Ci0gICAgICAgIGF1dG8mIHNldHRpbmdzID0gdmlkZW9UcmFjay0+c2V0
dGluZ3MoKTsKLSAgICAgICAgd2lkdGggPSBzZXR0aW5ncy53aWR0aCgpOwotICAgICAgICBoZWln
aHQgPSBzZXR0aW5ncy5oZWlnaHQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGNyZWF0ZSghIWF1ZGlv
VHJhY2ssIHdpZHRoLCBoZWlnaHQpOworICAgIG1fd3JpdGVyID0gbnVsbHB0cjsKIH0KIAotUmVm
UHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKKy0gKHZvaWQp
ZmluaXNoCiB7Ci0gICAgTlNTdHJpbmcgKmRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeShAInZpZGVvcyIpOwotICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiLyVsbGQubXA0IiwgQ01DbG9ja0dldFRpbWUoQ01D
bG9ja0dldEhvc3RUaW1lQ2xvY2soKSkudmFsdWVdOwotICAgIE5TU3RyaW5nICpwYXRoID0gW2Rp
cmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpmaWxlbmFtZV07CisgICAgbV93cml0ZXIg
PSBudWxscHRyOworfQorCitAZW5kCiAKLSAgICBOU1VSTCAqb3V0cHV0VVJMID0gW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpwYXRoXTsKLSAgICBTdHJpbmcgZmlsZVBhdGggPSBbcGF0aCBVVEY4U3Ry
aW5nXTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworUmVm
UHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKICAgICBO
U0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBhdXRvIGF2QXNzZXRXcml0ZXIgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhVUkw6b3V0cHV0VVJMIGZp
bGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKKyAgICBhdXRvIGF2QXNzZXRX
cml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdp
dGhGaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7CiAgICAgaWYgKGVycm9y
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNz
ZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAobG9uZyllcnJv
ci5jb2RlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byB3cml0
ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFdURk1vdmUoYXZB
c3NldFdyaXRlciksIFdURk1vdmUoZmlsZVBhdGgpKSk7Ci0KLSAgICBpZiAoaGFzQXVkaW8gJiYg
IXdyaXRlci0+c2V0QXVkaW9JbnB1dCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihXVEZNb3ZlKGF2
QXNzZXRXcml0ZXIpLCBoYXNBdWRpbywgd2lkdGggJiYgaGVpZ2h0KSk7Cit9CiAKLSAgICBpZiAo
d2lkdGggJiYgaGVpZ2h0KSB7Ci0gICAgICAgIGlmICghd3JpdGVyLT5zZXRWaWRlb0lucHV0KHdp
ZHRoLCBoZWlnaHQpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQordm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2Fs
bGJhY2sodm9pZCAqbWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVldWVUcmln
Z2VyVG9rZW4pCit7CisgICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7CisgICAgd3JpdGVy
LT5wcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpOworfQogCi0gICAgcmV0
dXJuIFdURk1vdmUod3JpdGVyKTsKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNv
bXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQgKm1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKQoreworICAgIGF1dG8gKndyaXRl
ciA9IHN0YXRpY19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKj4obWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXIpOworICAgIHdyaXRlci0+cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1Nh
bXBsZUJ1ZmZlcnMoKTsKIH0KIAotTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiYmIGF2QXNzZXRXcml0
ZXIsIFN0cmluZyYmIGZpbGVQYXRoKQorTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiYmIGF2QXNzZXRX
cml0ZXIsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pCiAgICAgOiBtX3dyaXRlcihXVEZN
b3ZlKGF2QXNzZXRXcml0ZXIpKQotICAgICwgbV9wYXRoKFdURk1vdmUoZmlsZVBhdGgpKQorICAg
ICwgbV9oYXNBdWRpbyhoYXNBdWRpbykKKyAgICAsIG1faGFzVmlkZW8oaGFzVmlkZW8pCiB7Cisg
ICAgbV93cml0ZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoV3JpdGVyOiB0aGlzXSk7CisgICAgW21fd3JpdGVyLmdldCgpIHNldERl
bGVnYXRlOm1fd3JpdGVyRGVsZWdhdGUuZ2V0KCldOworCisgICAgaWYgKG1faGFzVmlkZW8pCisg
ICAgICAgIG1fdmlkZW9Db21wcmVzc29yID0gYWRvcHROUyhbW1dlYlZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBhbGxvY10gaW5pdFdpdGhDb2RlY1R5cGU6a0NNVmlkZW9Db2RlY1R5cGVfSDI2
NCBjYWxsYmFjazpjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayBjYWxsYmFja09i
amVjdDp0aGlzXSk7CisgICAgCisgICAgaWYgKG1faGFzQXVkaW8pCisgICAgICAgIG1fYXVkaW9D
b21wcmVzc29yID0gYWRvcHROUyhbW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBhbGxv
Y10gaW5pdFdpdGhDYWxsYmFjazpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayBj
YWxsYmFja09iamVjdDp0aGlzXSk7CiB9CiAKIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQpAQCAtMTM5LDc5ICsxNzEsMTQ2IEBAIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAg
IGNsZWFyKCk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKCkK
K3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlk
ZW9TYW1wbGVCdWZmZXJzKCkKIHsKLSAgICBpZiAobV92aWRlb0lucHV0KSB7Ci0gICAgICAgIG1f
dmlkZW9JbnB1dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fdmlkZW9QdWxs
UXVldWUpOwotICAgIH0KLSAgICBpZiAobV9hdWRpb0lucHV0KSB7Ci0gICAgICAgIG1fYXVkaW9J
bnB1dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fYXVkaW9QdWxsUXVldWUp
OworICAgIEFTU0VSVChtX2hhc1ZpZGVvKTsKKyAgICBpZiAoIW1fdmlkZW9Gb3JtYXREZXNjcmlw
dGlvbikgeworICAgICAgICBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZl
ckdldEZvcm1hdERlc2NyaXB0aW9uKFttX3ZpZGVvQ29tcHJlc3NvciBwaWNrT3V0cHV0U2FtcGxl
QnVmZmVyXSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHIgPSBtYWtlV2Vha1B0
cih0aGlzKSwgdGhpc10geworICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1faGFzQXVkaW8gJiYg
IW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICAgICAgfSk7CiAgICAgfQotICAgIGlm
IChtX3dyaXRlcikKLSAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKyAgICBpZiAoIW1faGFzU3Rh
cnRlZFdyaXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxl
QnVmZmVycygpOworfQogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKLSAgICBpZiAoYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCi0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwordm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcnMoKQorewor
ICAgIEFTU0VSVChtX2hhc0F1ZGlvKTsKKyAgICBpZiAoIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlv
bikgeworICAgICAgICBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdl
dEZvcm1hdERlc2NyaXB0aW9uKFttX2F1ZGlvQ29tcHJlc3NvciBwaWNrT3V0cHV0U2FtcGxlQnVm
ZmVyXSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHIgPSBtYWtlV2Vha1B0cih0
aGlzKSwgdGhpc10geworICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1faGFzVmlkZW8gJiYgIW1f
dmlkZW9Gb3JtYXREZXNjcmlwdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIGlmICgh
bV9oYXNTdGFydGVkV3JpdGluZykKKyAgICAgICAgcmV0dXJuOworICAgIGFwcGVuZENvbXByZXNz
ZWRTYW1wbGVCdWZmZXJzKCk7CiB9CiAKLWJvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQordm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlcigpCiB7Ci0gICAgQVNTRVJUKCFtX3ZpZGVv
SW5wdXQpOwotICAgIAotICAgIE5TRGljdGlvbmFyeSAqY29tcHJlc3Npb25Qcm9wZXJ0aWVzID0g
QHsKLSAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDogW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAxMl0sCi0gICAgICAgIEFWVmlkZW9FeHBlY3RlZFNvdXJj
ZUZyYW1lUmF0ZUtleSA6IEAoMzApLAotICAgICAgICBBVlZpZGVvTWF4S2V5RnJhbWVJbnRlcnZh
bEtleSA6IEAoMTIwKSwKLSAgICAgICAgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSA6IEFWVmlkZW9Q
cm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbAotICAgIH07Ci0KLSAgICBOU0RpY3Rpb25hcnkg
KnZpZGVvU2V0dGluZ3MgPSBAewotICAgICAgICBBVlZpZGVvQ29kZWNLZXk6IEFWVmlkZW9Db2Rl
Y0gyNjQsCi0gICAgICAgIEFWVmlkZW9XaWR0aEtleTogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
d2lkdGhdLAotICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDpoZWlnaHRdLAotICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5OiBjb21w
cmVzc2lvblByb3BlcnRpZXMKLSAgICB9OworICAgIGlmIChtX2hhc1ZpZGVvKSB7CisgICAgICAg
IG1fdmlkZW9Bc3NldFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0
ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBvdXRw
dXRTZXR0aW5nczpuaWwgc291cmNlRm9ybWF0SGludDptX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24u
Z2V0KCldKTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV92aWRl
b0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3Jp
dGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgdmlkZW8iKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV92aWRlb0Fzc2V0
V3JpdGVySW5wdXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBtX3ZpZGVvSW5wdXQgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlh
VHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOnZpZGVvU2V0dGluZ3Mgc291cmNl
Rm9ybWF0SGludDpuaWxdKTsKLSAgICBbbV92aWRlb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJ
blJlYWxUaW1lOnRydWVdOworICAgIGlmIChtX2hhc0F1ZGlvKSB7CisgICAgICAgIG1fYXVkaW9B
c3NldFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dElu
c3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5n
czpuaWwgc291cmNlRm9ybWF0SGludDptX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCldKTsK
KyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV9hdWRpb0Fzc2V0V3Jp
dGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxl
ZCBjYW5BZGRJbnB1dCBmb3IgYXVkaW8iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV9hdWRpb0Fzc2V0V3JpdGVySW5w
dXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1dDpt
X3ZpZGVvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1dCA9IG51bGxwdHI7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIHZpZGVvIGlucHV0IGlz
IG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgc3RhcnRXcml0aW5nXSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBzdGFydFdyaXRpbmciKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92aWRlb0lucHV0LmdldCgp
XTsKLSAgICBtX3ZpZGVvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3Jl
VmlkZW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwot
ICAgIHJldHVybiB0cnVlOworCisgICAgW21fd3JpdGVyLmdldCgpIHN0YXJ0U2Vzc2lvbkF0U291
cmNlVGltZTprQ01UaW1lWmVyb107CisKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVy
cygpOworCisgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7CiB9CiAKLWJvb2wgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldEF1ZGlvSW5wdXQoKQorYm9vbCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKCkKIHsKLSAg
ICBBU1NFUlQoIW1fYXVkaW9JbnB1dCk7CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKFttX2F1
ZGlvQ29tcHJlc3NvciB0YWtlT3V0cHV0U2FtcGxlQnVmZmVyXSk7CisgICAgaWYgKCFidWZmZXIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5TRGljdGlvbmFyeSAqYXVkaW9TZXR0aW5n
cyA9IEB7Ci0gICAgICAgIEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4MDAwKSwKLSAgICAgICAg
QVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAotICAgICAgICBBVk51bWJl
ck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAotICAgICAgICBBVlNhbXBsZVJhdGVLZXkgOiBAKDIyMDUw
KQotICAgIH07CisgICAgaWYgKCFbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1v
cmVNZWRpYURhdGFdKQorICAgICAgICBbbV93cml0ZXIgZmx1c2hdOworICAgIFttX2F1ZGlvQXNz
ZXRXcml0ZXJJbnB1dC5nZXQoKSBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIG1fYXVkaW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFU
eXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6YXVkaW9TZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5p
bF0pOwotICAgIFttX2F1ZGlvSW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1
ZV07Ci0gICAgCi0gICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV9hdWRpb0lucHV0Lmdl
dCgpXSkgewotICAgICAgICBtX2F1ZGlvSW5wdXQgPSBudWxscHRyOwotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgInRoZSBhdWRpbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0
byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0ZXIiKTsKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpCit7CisgICAgYXV0byBi
dWZmZXIgPSBhZG9wdENGKFttX3ZpZGVvQ29tcHJlc3NvciB0YWtlT3V0cHV0U2FtcGxlQnVmZmVy
XSk7CisgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
W21fd3JpdGVyIGFkZElucHV0Om1fYXVkaW9JbnB1dC5nZXQoKV07Ci0gICAgbV9hdWRpb1B1bGxR
dWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUF1ZGlvUmVjb3JkaW5nUHVsbEJ1
ZmZlclF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKworICAgIG1fbGFzdFZpZGVvUHJl
c2VudGF0aW9uVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1
ZmZlci5nZXQoKSk7CisgICAgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUgPSBDTVNhbXBsZUJ1ZmZl
ckdldERlY29kZVRpbWVTdGFtcChidWZmZXIuZ2V0KCkpOworICAgIG1faGFzRW5jb2RlZFZpZGVv
U2FtcGxlcyA9IHRydWU7CisKKyAgICBpZiAoIVttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBpc1Jl
YWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgIFttX3dyaXRlciBmbHVzaF07CisgICAgW21f
dmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0
KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpCit7CisgICAgd2hpbGUgKGFwcGVu
ZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpIHx8IGFwcGVuZENvbXByZXNzZWRBdWRpb1Nh
bXBsZUJ1ZmZlcigpKSB7IH07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRFbmRzUHJl
dmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3JpdGVySW5wdXQgKmFzc2V0V3JpdGVy
SW5wdXQsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBkZWNvZGluZ1RpbWVT
dGFtcCkKK3sKKyAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nSW5mbyA9IHsga0NNVGltZUlu
dmFsaWQsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZGVjb2RpbmdUaW1lU3RhbXB9OworCisgICAg
Q01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyID0gTlVMTDsKKyAgICBhdXRvIGVycm9yID0gQ01TYW1w
bGVCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgdHJ1ZSwgTlVMTCwgTlVM
TCwgTlVMTCwgMCwgMSwgJnRpbWluZ0luZm8sIDAsIE5VTEwsICZidWZmZXIpOworICAgIGlmIChl
cnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2Vy
IGZhaWxlZCBDTVNhbXBsZUJ1ZmZlckNyZWF0ZSB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRihidWZmZXIpOwor
CisgICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NNU2FtcGxlQnVmZmVy
QXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwga0NGQm9vbGVhblRydWUs
IGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisgICAgaWYgKCFbYXNzZXRXcml0
ZXJJbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6c2FtcGxlQnVmZmVyLmdldCgpXSkKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciBhcHBlbmRTYW1wbGVCdWZmZXIgdG8gd3JpdGVyIGlucHV0IGZhaWxlZCIpOworfQorCit2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJz
KCkKK3sKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworICAgIAorICAgIGlm
IChtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMpCisgICAgICAgIGFwcGVuZEVuZHNQcmV2aW91c1Nh
bXBsZUR1cmF0aW9uTWFya2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpLCBtX2xhc3RW
aWRlb1ByZXNlbnRhdGlvblRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsKK30KKwordm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQoreworICAgIGlmIChtX3dyaXRl
cikKKyAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKworICAgIG1fZGF0YSA9IG51bGxwdHI7Cisg
ICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxl
dGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKK30KKwog
c3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZm
ZXJXaXRoQ3VycmVudFRpbWVTdGFtcChDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikK
IHsKICAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RU
aW1lQ2xvY2soKSk7CkBAIC0yMjEsNTggKzMyMCwyOSBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1w
KAogICAgIFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWVJbmZvKGNvdW50KTsKICAgICBD
TVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgY291
bnQsIHRpbWVJbmZvLmRhdGEoKSwgJmNvdW50KTsKICAgICAKLSAgICBmb3IgKENNSXRlbUNvdW50
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsKICAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1wID0ga0NNVGltZUlu
dmFsaWQ7CiAgICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IHN0YXJ0
VGltZTsKICAgICB9CiAgICAgCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3QnVmZmVyID0gbnVs
bHB0cjsKLSAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1Rp
bWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZv
LmRhdGEoKSwgJm5ld0J1ZmZlcik7Ci0gICAgaWYgKGVycm9yKQorICAgIGlmIChhdXRvIGVycm9y
ID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcikp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlciBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nIGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAg
cmV0dXJuIGFkb3B0Q0YobmV3QnVmZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
QnVmZmVyKQogewotICAgIEFTU0VSVChtX3ZpZGVvSW5wdXQpOwotICAgIGlmIChtX2lzU3RvcHBl
ZCkKKyAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29yKQogICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpIHsKLSAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRX
cml0aW5nXSkgewotICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0
YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKVttX3dyaXRlciBlcnJvcl0p
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIFttX3dyaXRlciBzdGFy
dFNlc3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xv
Y2soKSldOwotICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAgICAgICAgUmVm
UHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAg
ICAgICAgW21fdmlkZW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX3Zp
ZGVvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFb
bV92aWRlb0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVv
TG9jayk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBtX3ZpZGVvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIu
dW5sb2NrRWFybHkoKTsKLSAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgYXBwZW5k
U2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQg
JiYgbV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgW21fdmlk
ZW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5n
VmlkZW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIAogICAgIGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1l
ID0gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7CiAg
ICAgaWYgKCFidWZmZXJXaXRoQ3VycmVudFRpbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOwotICAgIG1fdmlkZW9CdWZmZXJQb29s
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcldpdGhDdXJyZW50VGltZSkpOworICAgIFttX3ZpZGVvQ29t
cHJlc3NvciBhZGRTYW1wbGVCdWZmZXI6YnVmZmVyV2l0aEN1cnJlbnRUaW1lLmdldCgpXTsKIH0K
IAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRl
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbikKQEAgLTI4MCw4ICszNTAsMTAgQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01G
b3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb24KICAg
ICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRp
b24pOwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0ID0gbnVsbHB0cjsKICAgICBh
dXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24sIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXQp
OwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihmb3JtYXQpOwogfQogCkBA
IC0yOTAsOTUgKzM2Miw2NiBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZl
clJlZj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzYwogICAgIENNVGltZSBz
dGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsKICAg
ICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBudWxscHRyOwogICAgIGF1dG8gZXJy
b3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgZm9ybWF0LCBzYW1wbGVD
b3VudCwgc3RhcnRUaW1lLCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpCisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFj
a2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKIH0KIAog
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIo
Y29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVDb3Vu
dCkKIHsKLSAgICBBU1NFUlQobV9hdWRpb0lucHV0KTsKLSAgICBpZiAoKCFtX2hhc1N0YXJ0ZWRX
cml0aW5nICYmIG1fdmlkZW9JbnB1dCkgfHwgbV9pc1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsK
ICAgICBhdXRvIGZvcm1hdCA9IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oZGVzY3JpcHRp
b24pOwogICAgIGlmICghZm9ybWF0KQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1faXNGaXJz
dEF1ZGlvU2FtcGxlKSB7Ci0gICAgICAgIGlmICghbV92aWRlb0lucHV0KSB7Ci0gICAgICAgICAg
ICAvLyBhdWRpby1vbmx5IHJlY29yZGluZy4KLSAgICAgICAgICAgIGlmICghW21fd3JpdGVyIHN0
YXJ0V3JpdGluZ10pIHsKLSAgICAgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgW21fd3JpdGVy
IHN0YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRp
bWVDbG9jaygpKV07Ci0gICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAg
ICAgICAgfQotICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IGZhbHNlOwotICAgICAgICBS
ZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwot
ICAgICAgICBbbV9hdWRpb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1f
YXVkaW9QdWxsUXVldWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAo
IVttX2F1ZGlvSW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVk
aW9Mb2NrKTsKLSAgICAgICAgICAgICAgICBpZiAobV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgp
KQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IG1fYXVkaW9CdWZmZXJQb29sLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGxvY2tl
ci51bmxvY2tFYXJseSgpOwotICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgYXBwZW5kU2Ft
cGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07Ci0gICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsKLSAg
ICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IG1hcmtBc0ZpbmlzaGVkXTsKLSAgICAg
ICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfV07Ci0gICAgfQogCiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBj
cmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMoZm9ybWF0LmdldCgp
LCBzYW1wbGVDb3VudCk7CiAgICAgaWYgKCFzYW1wbGVCdWZmZXIpCiAgICAgICAgIHJldHVybjsK
KwogICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9C
dWZmZXJMaXN0KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0
KCkpOwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTVNhbXBs
ZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0IGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2F1ZGlvTG9jayk7Ci0gICAgbV9hdWRpb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUo
c2FtcGxlQnVmZmVyKSk7CisgICAgW21fYXVkaW9Db21wcmVzc29yIGFkZFNhbXBsZUJ1ZmZlcjpz
YW1wbGVCdWZmZXIuZ2V0KCldOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpzdG9wUmVjb3JkaW5nKCkKIHsKICAgICBpZiAobV9pc1N0b3BwZWQpCiAgICAgICAgIHJldHVy
bjsKLQorICAgIAogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKICAgICBpZiAoIW1faGFzU3RhcnRl
ZFdyaXRpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10g
PT0gQVZBc3NldFdyaXRlclN0YXR1c1dyaXRpbmcpOwotICAgIGlmIChtX3ZpZGVvSW5wdXQpCi0g
ICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLndhaXQoKTsKIAotICAgIGlmICht
X2F1ZGlvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQo
KTsKKyAgICBbbV92aWRlb0NvbXByZXNzb3IgZmluaXNoXTsKKyAgICBbbV9hdWRpb0NvbXByZXNz
b3IgZmluaXNoXTsKKworICAgIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKworICAg
IFttX3dyaXRlciBmbHVzaF07CiAKICAgICBtX2lzU3RvcHBpbmcgPSB0cnVlOwogICAgIFttX3dy
aXRlciBmaW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrUHRyID0g
bWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgewotICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCB3ZWFrUHRyID0gV1RGTW92ZSh3ZWFrUHRyKSwgYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1B0ciA9IFdURk1vdmUod2Vha1B0cildKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmICht
X2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgaWYgKG1fZmV0Y2hEYXRh
Q29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdURk1v
dmUobV9kYXRhKTsKICAgICAgICAgICAgICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9k
YXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBtX2lz
U3RvcHBlZCA9IGZhbHNlOwogICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IGZhbHNl
OwotICAgICAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSB0cnVlOwogICAgICAgICAgICAg
Y2xlYXIoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZS5z
aWduYWwoKTsKICAgICB9XTsKLSAgICBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmUud2FpdCgpOwog
fQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTM5Miw2ICs0MzUsMjUgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEIKICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCit2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
eworICAgIGlmICghbV9kYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIHNpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZGF0YS0+YXBw
ZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjph
cHBlbmREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghbV9kYXRh
KSB7CisgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBtX2RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxl
QmFzZWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzNm
YjFlZWFlN2Q0YTQ1NWUzNTRhMTZlYjZhNjg0NjhlZDQxMmU0ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbQpAQCAtMCwwICsxLDM4MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisj
aW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYkF1ZGlv
QnVmZmVyTGlzdC5oIgorI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyLmg+Cisj
aW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJJbnB1dC5oPgorI2luY2x1ZGUgPHBh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9B
VkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCisjdW5kZWYgQVZFbmNvZGVyQml0UmF0ZUtleQorI2Rl
ZmluZSBBVkVuY29kZXJCaXRSYXRlS2V5IGdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJh
Y2soKQorI3VuZGVmIEFWRm9ybWF0SURLZXkKKyNkZWZpbmUgQVZGb3JtYXRJREtleSBnZXRBVkZv
cm1hdElES2V5V2l0aEZhbGxiYWNrKCkKKyN1bmRlZiBBVk51bWJlck9mQ2hhbm5lbHNLZXkKKyNk
ZWZpbmUgQVZOdW1iZXJPZkNoYW5uZWxzS2V5IGdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhG
YWxsYmFjaygpCisjdW5kZWYgQVZTYW1wbGVSYXRlS2V5CisjZGVmaW5lIEFWU2FtcGxlUmF0ZUtl
eSBnZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJhY2soKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3VzaW5nIG5hbWVzcGFjZSBQQUw7CisKK3N0YXRpYyBOU1N0cmluZyAqZ2V0QVZGb3JtYXRJ
REtleVdpdGhGYWxsYmFjaygpCit7CisgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25f
QVZGb3JtYXRJREtleSgpKQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FW
Rm9ybWF0SURLZXkoKTsKKworICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRv
IGxvYWQgQVZGb3JtYXRJREtleSIpOworICAgIHJldHVybiBAIkFWRm9ybWF0SURLZXkiOworfQor
CitzdGF0aWMgTlNTdHJpbmcgKmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygp
Cit7CisgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxz
S2V5KCkpCisgICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNo
YW5uZWxzS2V5KCk7CisKKyAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBs
b2FkIEFWTnVtYmVyT2ZDaGFubmVsc0tleSIpOworICAgIHJldHVybiBAIkFWTnVtYmVyT2ZDaGFu
bmVsc0tleSI7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZh
bGxiYWNrKCkKK3sKKyAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlNhbXBsZVJh
dGVLZXkoKSkKKyAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlNhbXBsZVJh
dGVLZXkoKTsKKworICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQg
QVZTYW1wbGVSYXRlS2V5Iik7CisgICAgcmV0dXJuIEAiQVZTYW1wbGVSYXRlS2V5IjsKK30KKwor
c3RhdGljIE5TU3RyaW5nICpnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKK3sK
KyAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCkp
CisgICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtl
eSgpOworCisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkVu
Y29kZXJCaXRSYXRlS2V5Iik7CisgICAgcmV0dXJuIEAiQVZFbmNvZGVyQml0UmF0ZUtleSI7Cit9
CisKK1JlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7
CisgICAgTlNTdHJpbmcgKmRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeShAInZpZGVvcyIpOworICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiLyVsbGQubXA0IiwgQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhv
c3RUaW1lQ2xvY2soKSkudmFsdWVdOworICAgIE5TU3RyaW5nICpwYXRoID0gW2RpcmVjdG9yeSBz
dHJpbmdCeUFwcGVuZGluZ1N0cmluZzpmaWxlbmFtZV07CisKKyAgICBOU1VSTCAqb3V0cHV0VVJM
ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXTsKKyAgICBTdHJpbmcgZmlsZVBhdGggPSBb
cGF0aCBVVEY4U3RyaW5nXTsKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBhdXRvIGF2
QXNzZXRXcml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkg
aW5pdFdpdGhVUkw6b3V0cHV0VVJMIGZpbGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJy
b3JdKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBj
b2RlICVsZCIsIChsb25nKWVycm9yLmNvZGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBhdXRvIHdyaXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoV1RGTW92ZShhdkFzc2V0V3JpdGVyKSwgV1RGTW92ZShmaWxlUGF0aCkpKTsKKwor
ICAgIGlmIChoYXNBdWRpbyAmJiAhd3JpdGVyLT5zZXRBdWRpb0lucHV0KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgeworICAgICAgICBpZiAo
IXdyaXRlci0+c2V0VmlkZW9JbnB1dCh3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBXVEZNb3ZlKHdyaXRlcik7Cit9CisKK01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRh
aW5QdHI8QVZBc3NldFdyaXRlcj4mJiBhdkFzc2V0V3JpdGVyLCBTdHJpbmcmJiBmaWxlUGF0aCkK
KyAgICA6IG1fd3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRlcikpCisgICAgLCBtX3BhdGgoV1RG
TW92ZShmaWxlUGF0aCkpCit7Cit9CisKK01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQoreworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKCkKK3sKKyAgICBpZiAobV92aWRlb0lucHV0
KSB7CisgICAgICAgIG1fdmlkZW9JbnB1dC5jbGVhcigpOworICAgICAgICBkaXNwYXRjaF9yZWxl
YXNlKG1fdmlkZW9QdWxsUXVldWUpOworICAgIH0KKyAgICBpZiAobV9hdWRpb0lucHV0KSB7Cisg
ICAgICAgIG1fYXVkaW9JbnB1dC5jbGVhcigpOworICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1f
YXVkaW9QdWxsUXVldWUpOworICAgIH0KKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3Jp
dGVyLmNsZWFyKCk7CisKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorewor
ICAgIEFTU0VSVCghbV92aWRlb0lucHV0KTsKKyAgICAKKyAgICBOU0RpY3Rpb25hcnkgKmNvbXBy
ZXNzaW9uUHJvcGVydGllcyA9IEB7CisgICAgICAgIEFWVmlkZW9BdmVyYWdlQml0UmF0ZUtleSA6
IFtOU051bWJlciBudW1iZXJXaXRoSW50OndpZHRoICogaGVpZ2h0ICogMTJdLAorICAgICAgICBB
VlZpZGVvRXhwZWN0ZWRTb3VyY2VGcmFtZVJhdGVLZXkgOiBAKDMwKSwKKyAgICAgICAgQVZWaWRl
b01heEtleUZyYW1lSW50ZXJ2YWxLZXkgOiBAKDEyMCksCisgICAgICAgIEFWVmlkZW9Qcm9maWxl
TGV2ZWxLZXkgOiBBVlZpZGVvUHJvZmlsZUxldmVsSDI2NE1haW5BdXRvTGV2ZWwKKyAgICB9Owor
CisgICAgTlNEaWN0aW9uYXJ5ICp2aWRlb1NldHRpbmdzID0gQHsKKyAgICAgICAgQVZWaWRlb0Nv
ZGVjS2V5OiBBVlZpZGVvQ29kZWNIMjY0LAorICAgICAgICBBVlZpZGVvV2lkdGhLZXk6IFtOU051
bWJlciBudW1iZXJXaXRoSW50OndpZHRoXSwKKyAgICAgICAgQVZWaWRlb0hlaWdodEtleTogW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6aGVpZ2h0XSwKKyAgICAgICAgQVZWaWRlb0NvbXByZXNzaW9u
UHJvcGVydGllc0tleTogY29tcHJlc3Npb25Qcm9wZXJ0aWVzCisgICAgfTsKKyAgICAKKyAgICBt
X3ZpZGVvSW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFu
Y2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOnZp
ZGVvU2V0dGluZ3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsKKyAgICBbbV92aWRlb0lucHV0IHNl
dEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOworICAgIAorICAgIGlmICghW21fd3Jp
dGVyIGNhbkFkZElucHV0Om1fdmlkZW9JbnB1dC5nZXQoKV0pIHsKKyAgICAgICAgbV92aWRlb0lu
cHV0ID0gbnVsbHB0cjsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0
aGUgdmlkZW8gaW5wdXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVy
Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgW21fd3JpdGVyIGFkZElucHV0
Om1fdmlkZW9JbnB1dC5nZXQoKV07CisgICAgbV92aWRlb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1
ZXVlX2NyZWF0ZSgiV2ViQ29yZVZpZGVvUmVjb3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFU
Q0hfUVVFVUVfU0VSSUFMKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6c2V0QXVkaW9JbnB1dCgpCit7CisgICAgQVNTRVJUKCFtX2F1ZGlv
SW5wdXQpOworCisgICAgTlNEaWN0aW9uYXJ5ICphdWRpb1NldHRpbmdzID0gQHsKKyAgICAgICAg
QVZFbmNvZGVyQml0UmF0ZUtleSA6IEAoMjgwMDApLAorICAgICAgICBBVkZvcm1hdElES2V5IDog
QChrQXVkaW9Gb3JtYXRNUEVHNEFBQyksCisgICAgICAgIEFWTnVtYmVyT2ZDaGFubmVsc0tleSA6
IEAoMSksCisgICAgICAgIEFWU2FtcGxlUmF0ZUtleSA6IEAoMjIwNTApCisgICAgfTsKKworICAg
IG1fYXVkaW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0
YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6
YXVkaW9TZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5pbF0pOworICAgIFttX2F1ZGlvSW5wdXQg
c2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07CisgICAgCisgICAgaWYgKCFbbV93
cml0ZXIgY2FuQWRkSW5wdXQ6bV9hdWRpb0lucHV0LmdldCgpXSkgeworICAgICAgICBtX2F1ZGlv
SW5wdXQgPSBudWxscHRyOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
InRoZSBhdWRpbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0
ZXIiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBbbV93cml0ZXIgYWRkSW5w
dXQ6bV9hdWRpb0lucHV0LmdldCgpXTsKKyAgICBtX2F1ZGlvUHVsbFF1ZXVlID0gZGlzcGF0Y2hf
cXVldWVfY3JlYXRlKCJXZWJDb3JlQXVkaW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQ
QVRDSF9RVUVVRV9TRVJJQUwpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5l
IFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50
VGltZVN0YW1wKENNU2FtcGxlQnVmZmVyUmVmIG9yaWdpbmFsQnVmZmVyKQoreworICAgIENNVGlt
ZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsK
KyAgICBDTUl0ZW1Db3VudCBjb3VudCA9IDA7CisgICAgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVU
aW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIDAsIG5pbCwgJmNvdW50KTsKKyAgICAKKyAg
ICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3VudCk7CisgICAgQ01TYW1w
bGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0
aW1lSW5mby5kYXRhKCksICZjb3VudCk7CisgICAgCisgICAgZm9yIChDTUl0ZW1Db3VudCBpID0g
MDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1w
ID0ga0NNVGltZUludmFsaWQ7CisgICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVT
dGFtcCA9IHN0YXJ0VGltZTsKKyAgICB9CisgICAgCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3
QnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVD
b3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291
bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcik7CisgICAgaWYgKGVycm9yKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRDRihuZXdCdWZmZXIpOworfQorCit2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihD
TVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIpCit7CisgICAgQVNTRVJUKG1fdmlkZW9JbnB1
dCk7CisgICAgaWYgKG1faXNTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1f
aGFzU3RhcnRlZFdyaXRpbmcpIHsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5n
XSkgeworICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBm
YWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKVttX3dyaXRlciBlcnJvcl0pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Np
b25BdFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSld
OworICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKKyAgICAgICAgUmVmUHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKKyAgICAgICAg
W21fdmlkZW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX3ZpZGVvUHVs
bFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpXSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgaWYgKCFbbV92aWRl
b0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7
CisgICAgICAgICAgICAgICAgaWYgKG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX3Zp
ZGVvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsKKyAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2Nr
RWFybHkoKTsKKyAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgYXBwZW5kU2FtcGxl
QnVmZmVyOmJ1ZmZlci5nZXQoKV0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfSB3aGlsZSAodHJ1ZSk7CisgICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV92
aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgW21fdmlkZW9JbnB1
dCBtYXJrQXNGaW5pc2hlZF07CisgICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9T
ZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBs
ZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKCFidWZm
ZXJXaXRoQ3VycmVudFRpbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV92aWRlb0xvY2spOworICAgIG1fdmlkZW9CdWZmZXJQb29sLmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcldpdGhDdXJyZW50VGltZSkpOworfQorCitzdGF0aWMgaW5saW5lIFJldGFpblB0
cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQoreworICAgIGF1dG8gYmFz
aWNEZXNjcmlwdGlvbiA9IFdURjo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
bio+KGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CisgICAg
Q01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXQgPSBudWxscHRyOworICAgIGF1dG8gZXJyb3Ig
PSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFz
aWNEZXNjcmlwdGlvbiwgMCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdCk7CisgICAgaWYg
KGVycm9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRDRihmb3Jt
YXQpOworfQorCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3Jl
YXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZm9ybWF0LCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgQ01UaW1lIHN0YXJ0
VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOworICAgIENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9
IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9j
YXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQsIHNhbXBsZUNvdW50
LCBzdGFydFRpbWUsIE5VTEwsICZzYW1wbGVCdWZmZXIpOworICAgIGlmIChlcnJvcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKK30K
Kwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZm
ZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVD
b3VudCkKK3sKKyAgICBBU1NFUlQobV9hdWRpb0lucHV0KTsKKyAgICBpZiAoKCFtX2hhc1N0YXJ0
ZWRXcml0aW5nICYmIG1fdmlkZW9JbnB1dCkgfHwgbV9pc1N0b3BwZWQpCisgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIGZvcm1hdCA9IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oZGVzY3Jp
cHRpb24pOworICAgIGlmICghZm9ybWF0KQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1faXNG
aXJzdEF1ZGlvU2FtcGxlKSB7CisgICAgICAgIGlmICghbV92aWRlb0lucHV0KSB7CisgICAgICAg
ICAgICAvLyBhdWRpby1vbmx5IHJlY29yZGluZy4KKyAgICAgICAgICAgIGlmICghW21fd3JpdGVy
IHN0YXJ0V3JpdGluZ10pIHsKKyAgICAgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgW21fd3Jp
dGVyIHN0YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9z
dFRpbWVDbG9jaygpKV07CisgICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IGZhbHNlOworICAgICAg
ICBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlz
OworICAgICAgICBbbV9hdWRpb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVl
Om1fYXVkaW9QdWxsUXVldWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyldIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIVttX2F1ZGlvSW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
YXVkaW9Mb2NrKTsKKyAgICAgICAgICAgICAgICBpZiAobV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0
eSgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1
ZmZlciA9IG1fYXVkaW9CdWZmZXJQb29sLnRha2VGaXJzdCgpOworICAgICAgICAgICAgICAgIGxv
Y2tlci51bmxvY2tFYXJseSgpOworICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgYXBwZW5k
U2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07CisgICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsK
KyAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IG1hcmtBc0ZpbmlzaGVkXTsKKyAg
ICAgICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS5zaWduYWwoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfV07CisgICAgfQorCisgICAgYXV0byBzYW1wbGVCdWZmZXIg
PSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMoZm9ybWF0Lmdl
dCgpLCBzYW1wbGVDb3VudCk7CisgICAgaWYgKCFzYW1wbGVCdWZmZXIpCisgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlv
QnVmZmVyTGlzdChzYW1wbGVCdWZmZXIuZ2V0KCksIGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkubGlz
dCgpKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9hdWRpb0xvY2spOworICAgIG1fYXVkaW9CdWZmZXJQb29sLmFwcGVuZChX
VEZNb3ZlKHNhbXBsZUJ1ZmZlcikpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpzdG9wUmVjb3JkaW5nKCkKK3sKKyAgICBpZiAobV9pc1N0b3BwZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKyAgICBpZiAoIW1faGFzU3RhcnRlZFdy
aXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0g
QVZBc3NldFdyaXRlclN0YXR1c1dyaXRpbmcpOworICAgIGlmIChtX3ZpZGVvSW5wdXQpCisgICAg
ICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLndhaXQoKTsKKworICAgIGlmIChtX2F1
ZGlvSW5wdXQpCisgICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsK
KworICAgIG1faXNTdG9wcGluZyA9IHRydWU7CisgICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdX
aXRoQ29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhpcyld
KCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBX
VEZNb3ZlKHdlYWtQdHIpLCBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShtX3BhdGgpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFs
c2U7CisgICAgICAgICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikKKyAgICAg
ICAgICAgICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZm
ZXIpOworCisgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IGZhbHNlOworICAgICAgICAgICAgbV9o
YXNTdGFydGVkV3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1w
bGUgPSB0cnVlOworICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1f
ZmluaXNoV3JpdGluZ1NlbWFwaG9yZS5zaWduYWwoKTsKKyAgICB9XTsKKyAgICBtX2ZpbmlzaFdy
aXRpbmdTZW1hcGhvcmUud2FpdCgpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAobV9pc1N0b3BwaW5nKSB7Cisg
ICAgICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gYnVmZmVyID0gV1RG
TW92ZShtX2RhdGEpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjdlYzA1OGY1YjI3NTllNTYxMjFhNTFiYTFk
NWIzOWRhYWVlYWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQorCisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisKK3R5cGVk
ZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKKworQGlu
dGVyZmFjZSBXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgOiBOU09iamVjdAorCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlY1R5cGU6KENNVmlkZW9Db2RlY1R5cGUpIG91dHB1dENv
ZGVjVHlwZSBjYWxsYmFjazooQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaykgY2FsbGJhY2sg
Y2FsbGJhY2tPYmplY3Q6KHZvaWQqKSBjYWxsYmFja09iamVjdDsKKy0gKHZvaWQpZmluaXNoOwor
LSAodm9pZClhZGRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNidWY7CistIChDTVNh
bXBsZUJ1ZmZlclJlZilwaWNrT3V0cHV0U2FtcGxlQnVmZmVyOworLSAoQ01TYW1wbGVCdWZmZXJS
ZWYpdGFrZU91dHB1dFNhbXBsZUJ1ZmZlcjsKKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVhZGY0
OTMwZTI0NTk5ZDM1Nzg0ZDVkM2I3MmMxZDc1M2Q1N2UzNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tCkBAIC0wLDAgKzEsMTczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0ICJM
b2dnaW5nLmgiCisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFZpZGVvVG9vbGJveC9WVENvbXByZXNzaW9u
U2Vzc2lvbi5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitAaW1wbGVtZW50YXRpb24gV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIHsKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIG1fb3V0cHV0QnVmZmVyUXVldWU7CisgICAgZGlz
cGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgQk9PTCBtX2lzRW5jb2Rp
bmc7CisgICAgUmV0YWluUHRyPFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmPiBtX3Z0U2Vzc2lvbjsK
KyAgICBDTVZpZGVvQ29kZWNUeXBlIG1fb3V0cHV0Q29kZWNUeXBlOworICAgIEZsb2F0NjQgbV9t
YXhLZXlGcmFtZUludGVydmFsRHVyYXRpb247CisgICAgTlNJbnRlZ2VyIG1fZXhwZWN0ZWRGcmFt
ZVJhdGU7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVjVHlwZTooQ01WaWRlb0Nv
ZGVjVHlwZSkgb3V0cHV0Q29kZWNUeXBlIGNhbGxiYWNrOihDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNh
bGxiYWNrKSBjYWxsYmFjayBjYWxsYmFja09iamVjdDoodm9pZCopIGNhbGxiYWNrT2JqZWN0Cit7
CisgICAgQVNTRVJUKG91dHB1dENvZGVjVHlwZSk7CisKKyAgICBzZWxmID0gW3N1cGVyIGluaXRd
OworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gZXJyb3Ig
PSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVl
dWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJm1fb3V0cHV0QnVmZmVy
UXVldWUpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIldlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB1bmFibGUgdG8gY3JlYXRl
IGJ1ZmZlciBxdWV1ZSAlZCIsIGVycm9yKTsKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07CisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2Vy
KG1fb3V0cHV0QnVmZmVyUXVldWUsIGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVy
UXVldWVUcmlnZ2VyX1doZW5EYXRhQmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywgTlVMTCk7CisK
KyAgICBtX3NlcmlhbERpc3BhdGNoUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoW0AiY29t
LmFwcGxlLldlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIgVVRGOFN0cmluZ10sIERJU1BB
VENIX1FVRVVFX1NFUklBTCk7CisgICAgbV9vdXRwdXRDb2RlY1R5cGUgPSBvdXRwdXRDb2RlY1R5
cGU7CisgICAgbV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24gPSAyLjA7CisgICAgbV9leHBl
Y3RlZEZyYW1lUmF0ZSA9IDMwOworICAgIG1faXNFbmNvZGluZyA9IFlFUzsKKworICAgIHJldHVy
biBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAobV9zZXJpYWxEaXNwYXRj
aFF1ZXVlKQorICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSk7
CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZmluaXNoCit7CisgICAgZGlz
cGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGF1dG8gZXJyb3Ig
PSBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzKG1fdnRTZXNzaW9uLmdldCgpLCBr
Q01UaW1lSW52YWxpZCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRp
YVN0cmVhbSwgIldlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vz
c2lvbkNvbXBsZXRlRnJhbWVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgICAgIGVy
cm9yID0gQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1ZSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIldlYlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKworICAgICAgICBtX2lzRW5jb2RpbmcgPSBOTzsKKyAgICB9KTsK
K30KKworc3RhdGljIHZvaWQgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwg
dm9pZCosIE9TU3RhdHVzIHN0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVy
UmVmIGJ1ZmZlcikKK3sKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihzdGF0dXMsIE1lZGlhU3Ry
ZWFtLCAiV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHZpZGVvQ29tcHJlc3Npb25DYWxs
YmFjayBzdGF0dXMgaXMgJWQiLCBzdGF0dXMpOworICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciAqY29t
cHJlc3NvciA9IChXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgKilyZWZDb247CisKKyAg
ICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUoY29tcHJlc3Nvci0+bV9vdXRwdXRC
dWZmZXJRdWV1ZSwgYnVmZmVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVk
aWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVu
cXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cit9CisKKy0gKEJPT0wpaW5pdENvbXByZXNz
aW9uU2Vzc2lvbjooQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmKWZvcm1hdERlc2NyaXB0aW9u
Cit7CisgICAgQ01WaWRlb0RpbWVuc2lvbnMgZGltZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXREZXNj
cmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJTcGVjaWZpY2F0aW9ucyA9IG5pbDsKKyNlbHNl
CisgICAgTlNEaWN0aW9uYXJ5ICplbmNvZGVyU3BlY2lmaWNhdGlvbnMgPSBAeyhfX2JyaWRnZSBO
U1N0cmluZyAqKWtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2Nl
bGVyYXRlZFZpZGVvRW5jb2RlcjpAWUVTfTsKKyNlbmRpZgorCisgICAgVlRDb21wcmVzc2lvblNl
c3Npb25SZWYgdnRTZXNzaW9uOworICAgIGF1dG8gZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vzc2lv
bkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25z
LmhlaWdodCwgbV9vdXRwdXRDb2RlY1R5cGUsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZW5j
b2RlclNwZWNpZmljYXRpb25zLCBOVUxMLCBOVUxMLCB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2ss
IChfX2JyaWRnZSB2b2lkICopc2VsZiwgJnZ0U2Vzc2lvbik7CisgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorICAgIG1fdnRTZXNzaW9uID0gYWRv
cHRDRih2dFNlc3Npb24pOworCisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0
U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwga0NGQm9v
bGVhblRydWUpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwg
IldlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRD
b21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
ICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENv
bXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uLCAoX19icmlk
Z2UgQ0ZUeXBlUmVmKUAobV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24pKTsKKyAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29t
cHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdlIENGVHlwZVJl
ZilAKG1fZXhwZWN0ZWRGcmFtZVJhdGUpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJv
ciwgTWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9u
U2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Np
b25QcmVwYXJlVG9FbmNvZGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCkpOworICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIldlYlZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKHZvaWQpcHJvY2Vz
c1NhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpYnVmZmVyCit7CisgICAgaWYgKCFtX3Z0
U2Vzc2lvbikgeworICAgICAgICBpZiAoIVtzZWxmIGluaXRDb21wcmVzc2lvblNlc3Npb246Q01T
YW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpXSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gQ01TYW1wbGVCdWZmZXJHZXRJ
bWFnZUJ1ZmZlcihidWZmZXIpOworICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01T
YW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICBhdXRvIGR1
cmF0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgIGF1dG8gZXJy
b3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKG1fdnRTZXNzaW9uLmdldCgpLCBp
bWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgTlVMTCwgKF9fYnJp
ZGdlIHZvaWQgKilzZWxmLCBOVUxMKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwg
TWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lv
blNlc3Npb25FbmNvZGVGcmFtZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKK30KKworLSAodm9p
ZClhZGRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKWJ1ZmZlcgoreworICAgIGRpc3Bh
dGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBpZiAoIW1faXNFbmNv
ZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbc2VsZiBwcm9jZXNzU2FtcGxl
QnVmZmVyOmJ1ZmZlcl07CisgICAgfSk7Cit9CisKKy0gKENNU2FtcGxlQnVmZmVyUmVmKXBpY2tP
dXRwdXRTYW1wbGVCdWZmZXIKK3sKKyAgICByZXR1cm4gKENNU2FtcGxlQnVmZmVyUmVmKShjb25z
dF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0SGVhZChtX291dHB1dEJ1ZmZlclF1ZXVlKSkp
OworfQorCistIChDTVNhbXBsZUJ1ZmZlclJlZil0YWtlT3V0cHV0U2FtcGxlQnVmZmVyCit7Cisg
ICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJR
dWV1ZURlcXVldWVBbmRSZXRhaW4obV9vdXRwdXRCdWZmZXJRdWV1ZSkpKTsKK30KKworQGVuZAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IGNiMjRkZGJmMjc5ZmIyNjU5NDZhYTEyMWNiMDcy
MmI2MmI4YzZhZjcuLjc5YmIzMTgyZjNiZmZkYjAyYTU4ZWJjZTI4NzE1YWQ5NjEyMDU3ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXI+IFJlbW90ZU1lZGlhUmVjb3JkZXI6OmNy
ZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBNZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlY29yZEF1ZGlvLCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCiB7Ci0gICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKHJlY29yZEF1ZGlvLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBh
dXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUocmVjb3JkQXVk
aW8sIHdpZHRoICYmIGhlaWdodCk7CiAgICAgaWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNvcmRlcj4o
bmV3IFJlbW90ZU1lZGlhUmVjb3JkZXIgeyBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBpZGVu
dGlmaWVyLCB3cml0ZXIucmVsZWFzZU5vbk51bGwoKSwgcmVjb3JkQXVkaW8gfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388452</attachid>
            <date>2020-01-22 11:47:07 -0800</date>
            <delta_ts>2020-01-24 02:00:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206582-20200122204704.patch</filename>
            <type>text/plain</type>
            <size>97593</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ5ZDcxZDkzNTM5YzNm
ZWU2NGY3NWEyZWM2MThkNzZiYmQ0ZmVkMS4uNmYxNmYzZDIyMGVmNzE0YmZmMjMwNDZhZjIzMDk4
OGRiOTE4ZWIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIwLTAxLTIyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSBhbGxvd3MgdG8gZ3JhYiByZWNvcmRlZCBkYXRhIHdoZW5ldmVyIHdhbnRlZC4KKyAgICAgICAg
VGhpcyBkZWxlZ2F0ZSByZXF1aXJlcyBwYXNzaW5nIGNvbXByZXNzZWQgc2FtcGxlcyB0byBBVkFz
c2V0V3JpdGVyLgorICAgICAgICBJbXBsZW1lbnQgdmlkZW8gZW5jb2RpbmcgYW5kIGF1ZGlvIGVu
Y29kaW5nIGluIGRlZGljYXRlZCBjbGFzc2VzIGFuZCB1c2UgdGhlc2UgY2xhc3NlcyBiZWZvcmUg
YWRkaW5nIGJ1ZmZlcnMgdG8gQVZBc3NldFdyaXRlci4KKyAgICAgICAgU2luY2UgQVZBc3NldFdy
aXRlckRlbGVnYXRlIGlzIEFwcGxlIFNESyBvbmx5LCBrZWVwIHRoZSBleGlzdGluZyBmaWxlIGJh
c2VkIGltcGxlbWVudGF0aW9uIGFzIGEgZmFsbGJhY2suCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9B
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06IEFkZGVk
LgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgaW5pdFdpdGhDYWxs
YmFjazpjYWxsYmFja09iamVjdDpdKToKKyAgICAgICAgKC1bV2ViQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIGZpbmlzaF0pOgorICAgICAgICAoYXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRh
UHJvYyk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBpbml0QXVk
aW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbjpvdXRwdXRBdWRpb0Zvcm1hdElE
Ol0pOgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgY29tcHV0ZUJ1
ZmZlclNpemVGb3JBdWRpb0Zvcm1hdDptYXhPdXRwdXRQYWNrZXRTaXplOmR1cmF0aW9uOl0pOgor
ICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgYXR0YWNoUHJpbWluZ1Ry
aW1zSWZOZWVkZWQ6XSk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudF0pOgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3Igc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHM6ZmlsbEJ1ZmZlckxp
c3Q6XSk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBwcm9jZXNz
U2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lOl0pOgorICAgICAgICAoLVtXZWJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzOmJ1
ZmZlckxpc3Q6cGFja2V0RGVzY3JpcHRpb246XSk6CisgICAgICAgICgtW1dlYkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBwcm9jZXNzU2FtcGxlQnVmZmVyOl0pOgorICAgICAgICAoLVtXZWJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgYWRkU2FtcGxlQnVmZmVyOl0pOgorICAgICAgICAo
LVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgcGlja091dHB1dFNhbXBsZUJ1ZmZlcl0p
OgorICAgICAgICAoLVtXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdGFrZU91dHB1dFNh
bXBsZUJ1ZmZlcl0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRWaWRlb091
dHB1dEJ1ZmZlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlv
U2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6c3RhcnRBc3NldFdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2Vk
VmlkZW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2VyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVC
dWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1l
U3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFw
cGVuZFZpZGVvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9TYW1wbGVCdWZm
ZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjphcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBpbml0V2l0aENvZGVjVHlwZTpjYWxsYmFjazpjYWxs
YmFja09iamVjdDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGZp
bmlzaF0pOgorICAgICAgICAodmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKToKKyAgICAgICAgKC1b
V2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGluaXRDb21wcmVzc2lvblNlc3Npb246XSk6
CisgICAgICAgICgtW1dlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBwcm9jZXNzU2FtcGxl
QnVmZmVyOl0pOgorICAgICAgICAoLVtXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgYWRk
U2FtcGxlQnVmZmVyOl0pOgorICAgICAgICAoLVtXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgcGlja091dHB1dFNhbXBsZUJ1ZmZlcl0pOgorICAgICAgICAoLVtXZWJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgdGFrZU91dHB1dFNhbXBsZUJ1ZmZlcl0pOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJQcm9jZXNzb3IuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxl
QnVmZmVyUHJvY2Vzc29yLm06IFJlbW92ZWQuCisKIDIwMjAtMDEtMjIgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBEbyBub3QgY3JlYXRlIGEgRm9ybWF0
dGluZ0NvbnRleHQgdW5sZXNzIHRoZXJlJ3MgY29udGVudCB0byBsYXlvdXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDRkMzU1ZTc4MDExOGE5ODgxZjA5YmVlNTRhZTY1ZTM0ZTk3ZTU1MjYuLmY5MDkyYWFmZDc5NDgy
MWY0ZTNlOTQ2MTg0MTUyNzI1YmM0MTA1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjAtMDEtMjIgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtD
b2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKToKKyAgICAgICAgVXNlIG5ldyBjb25zdHJ1Y3Rv
ci4KKwogMjAyMC0wMS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtJUEMgSGFyZGVuaW5nXSBPbmx5IHByb2Nlc3MgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
IG1lc3NhZ2VzIHdoZW4gc2VudCBieSB0aGUgVUlQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGE5MmNkZTkxZWI3YWU4
NGE1ZjFlN2ZkNWFmMjcyMTc1YTRjODM0NC4uZGI1Y2ZkYjMwMTQwYzRmMWY3Mjk5YTRjNmVkMjA1
MTZkODg3NjNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTA5Nyw2ICsxMDk3LDcgQEAKIAkJNDE2RTZGRTgxQkJEMTJERjAw
MEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRF
OSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQz
IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0
cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNE
ODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE2Rjc5OTAyM0Q3NTBD
RjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkY3OThGMjNENzUwQ0IwMDgyOUZD
MSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi87IH07CiAJCTQxNzI1M0FCMTM1
NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi87IH07CiAJCTQxNzYxMkFGMUUzQTk5NDAwMEMzRDgx
RCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFCMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJS
VENNZWRpYUVuZHBvaW50LmNwcCAqLzsgfTsKIAkJNDE3NjEyQjAxRTNBOTk0MDAwQzNEODFEIC8q
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRp
YUVuZHBvaW50LmggKi87IH07CkBAIC0xMTM2LDYgKzExMzcsNyBAQAogCQk0MUIyQTYyNjFFRjFC
RjZEMDAyQjlEN0EgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCMkE2MjUxRUYxQkY2MDAwMkI5RDdBIC8q
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MUJGMjA0OTIyQkE3QkU4MDAwNEY4MTIgLyogUmVhbHRpbWVW
aWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUM3NjBCMTBF
REUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRT
dGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTQxQ0Q2RjhDMjNENkU4MjEwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUNENkY4
QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9
OwogCQk0MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRB
NjYyRiAvKiBDb250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxRDEyOUNFMUYzRDBFRjYwMEQxNUU0NyAvKiBXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFGQjI3OEQxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmgg
Ki87IH07CiAJCTQxRDEyOUQwMUYzRDBGMDUwMEQxNUU0NyAvKiBDYWNoZVF1ZXJ5T3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OUIx
RjM0Q0VGMDAwNzk1NDg3IC8qIENhY2hlUXVlcnlPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc0MTAsNiArNzQxMiw5IEBACiAJCTQx
NkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZl
dGNoSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaElk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTI5QTUxMDJGQTk2
MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdvcmtlclJlcG9ydGluZ1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxNkY3OThEMjNENzUwQ0EwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkY3OThG
MjNENzUwQ0IwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkY3OTkzMjNEOEI2OUMw
MDgyOUZDMSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE3MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNB
OTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTc1MTYsNiArNzUyMSw4IEBACiAJCTQxQzdFMTA1MUU2QTU0MzYw
MDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdFMTA2MUU2QTU0MzYwMDI3QjRE
RSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwODFFNkFBMzdDMDAyN0I0REUgLyogQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFDRDZGODkyM0Q2RTgxQzAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRDZGOEIyM0Q2RTgxRDAw
QjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8q
IEZldGNoQm9keUNvbnN1bWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZldGNoQm9keUNvbnN1bWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFDRjhCRTUxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkwMDEsOCArMTkwMDgsMTMgQEAKIAkJNEQzQzA1
RDQyMUFGNDgwOTAwRjI4OTBBIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLmggKi8sCisJCQkJNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8q
IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLywKIAkJCQk0RDczRjk0QzIxOEM0QTg3
MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oICovLAogCQkJCTRE
NzNGOTREMjE4QzRBODcwMDNBM0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tICovLAorCQkJCTQxNkY3OTkzMjNEOEI2OUMwMDgyOUZDMSAvKiBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tICovLAorCQkJCTQxQ0Q2Rjg5MjNENkU4MUMwMEIx
NjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAqLywKKwkJCQk0MUNENkY4QjIz
RDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovLAogCQkJ
KTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzY0
NSw2ICszMzY1Nyw3IEBACiAJCQkJQTk3ODdDQjQxRjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2li
aWxpdHlNZWRpYU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDBFRUUwRTE0NzQzRjM5
MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RDU1OTY5MTE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxNkY3OTkwMjNENzUwQ0YwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVD
NTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3
MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkU4OEUwRDgxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zNDM3Niw2ICszNDM4OSw3IEBACiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAw
N0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJM0ZCQzRBRjMxODk4ODE1NjAwNDZFRTM4IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJENUExOEYxQzU0NTkyMzAwREUzNEEzIC8q
IFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0
MUNENkY4QzIzRDZFODIxMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwREUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJh
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZp
ZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMzM2RjY3MTdGQTBBQzYwMERE
RENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggNzNmMWQwYTE1MTlmMmMw
M2I5MWQ2OTUxMDUxMzVhNGYyMGQxZGE2NC4uZDQ3OTM0ODgzODYxOTE3ZjZiMzYwZWYxNGRkODJj
MWUzNTNiMmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC02OCw3ICs2OSwx
NCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
Y3JlYXRlKGF1ZGlvVHJhY2ssIHZpZGVvVHJhY2spOworCisgICAgaW50IHdpZHRoID0gMCwgaGVp
Z2h0ID0gMDsKKyAgICBpZiAodmlkZW9UcmFjaykgeworICAgICAgICBhdXRvJiBzZXR0aW5ncyA9
IHZpZGVvVHJhY2stPnNldHRpbmdzKCk7CisgICAgICAgIHdpZHRoID0gc2V0dGluZ3Mud2lkdGgo
KTsKKyAgICAgICAgaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7CisgICAgfQorICAgIGF1dG8g
d3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSghIWF1ZGlvVHJhY2ss
IHdpZHRoLCBoZWlnaHQpOwogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzY1NTk3YmJkNTAxNmM5NDVlM2RlNzJlNzQzYTFhYzBlZDg4YzU4NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisKK3R5cGVkZWYgc3RydWN0IG9w
YXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKKworQGludGVyZmFjZSBXZWJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhDYWxsYmFjazooQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaykgY2FsbGJhY2sg
Y2FsbGJhY2tPYmplY3Q6KHZvaWQqKSBjYWxsYmFja09iamVjdDsKKy0gKHZvaWQpZmluaXNoOwor
LSAodm9pZClhZGRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKWJ1ZmZlcjsKKy0gKENN
U2FtcGxlQnVmZmVyUmVmKXBpY2tPdXRwdXRTYW1wbGVCdWZmZXI7CistIChDTVNhbXBsZUJ1ZmZl
clJlZil0YWtlT3V0cHV0U2FtcGxlQnVmZmVyOworCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3OWQ1Y2Y0MWQ2Yzkw
ZmFiYmY5YWVmNjcyZjI5MTRkYzAyNGM0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQpAQCAtMCwwICsxLDQ5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29kZWMuaD4KKyNpbmNs
dWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxBdWRpb1Rvb2xi
b3gvQXVkaW9Gb3JtYXQuaD4KKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKwor
I2RlZmluZSBMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQgMC4xCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCit0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252
ZXJ0ZXJSZWY7CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgeworICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVl
OworICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX2lucHV0QnVmZmVyUXVldWU7Cisg
ICAgZGlzcGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgQ01UaW1lIG1f
bG93V2F0ZXJUaW1lOworICAgIEJPT0wgbV9pc0VuY29kaW5nOworCisgICAgUmV0YWluUHRyPEF1
ZGlvQ29udmVydGVyUmVmPiBtX2NvbnZlcnRlcjsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gbV9zb3VyY2VGb3JtYXQ7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1f
ZGVzdGluYXRpb25Gb3JtYXQ7CisgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+
IG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICBOU051bWJlciAqbV9nZHJDb3Vu
dE51bTsKKyAgICBVSW50MzIgbV9tYXhPdXRwdXRQYWNrZXRTaXplOworICAgIFZlY3RvcjxBdWRp
b1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25z
OworCisgICAgQ01UaW1lIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAg
ICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wOworICAgIENNVGlt
ZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb247CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9zb3VyY2VC
dWZmZXI7CisgICAgVmVjdG9yPGNoYXI+IG1fZGVzdGluYXRpb25CdWZmZXI7CisKKyAgICBSZXRh
aW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsKKyAgICBzaXplX3Qg
bV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7CisgICAgc2l6ZV90IG1fY3VyT2Zmc2V0SW5TYW1wbGVC
YnVmOworICAgIEF1ZGlvRm9ybWF0SUQgbV9vdXRwdXRDb2RlY1R5cGU7Cit9CisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aENhbGxiYWNrOihDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrKSBj
YWxsYmFjayBjYWxsYmFja09iamVjdDoodm9pZCopIGNhbGxiYWNrT2JqZWN0Cit7CisgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBDTUJ1ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVy
cm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZl
clF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZvdXRwdXRCdWZm
ZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBmb3IgbV9vdXRw
dXRCdWZmZXJRdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgW3NlbGYgcmVs
ZWFzZV07CisgICAgICAgIHNlbGYgPSBuaWw7CisgICAgfQorICAgIG1fb3V0cHV0QnVmZmVyUXVl
dWUgPSBhZG9wdENGKG91dHB1dEJ1ZmZlclF1ZXVlKTsKKworICAgIENNQnVmZmVyUXVldWVSZWYg
aW5wdXRCdWZmZXJRdWV1ZTsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVu
c29ydGVkU2FtcGxlQnVmZmVycygpLCAmaW5wdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBmb3IgbV9pbnB1dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICBbc2VsZiByZWxlYXNlXTsKKyAgICAgICAgc2VsZiA9IG5p
bDsKKyAgICB9CisgICAgbV9pbnB1dEJ1ZmZlclF1ZXVlID0gYWRvcHRDRihpbnB1dEJ1ZmZlclF1
ZXVlKTsKKworICAgIG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0
ZShbQCJjb20uYXBwbGUuV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiBVVEY4U3RyaW5n
XSwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKyAgICBtX2xvd1dhdGVyVGltZSA9IENNVGltZU1h
a2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQsIDEwMDApOworICAgIG1fb3V0
cHV0Q29kZWNUeXBlID0ga0F1ZGlvRm9ybWF0TVBFRzRBQUM7CisgICAgbV9pc0VuY29kaW5nID0g
WUVTOworCisgICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0cHV0QnVmZmVyUXVl
dWUuZ2V0KCksIGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVyUXVldWVUcmlnZ2Vy
X1doZW5EYXRhQmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywgTlVMTCk7CisKKyAgICByZXR1cm4g
c2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKG1fc2VyaWFsRGlzcGF0Y2hR
dWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOwor
CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWZpbmlzaAoreworICAgIGRpc3Bh
dGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBbc2VsZiBwcm9jZXNz
U2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lOmtDTVRpbWVJbnZhbGlkXTsKKyAgICAgICAg
YXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0cHV0QnVmZmVyUXVl
dWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJl
YW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZU1hcmtFbmRP
ZkRhdGEgZmFpbGVkICVkIiwgZXJyb3IpOworICAgICAgICBtX2lzRW5jb2RpbmcgPSBOTzsKKyAg
ICB9CisgICAgKTsKK30KKworc3RhdGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElu
cHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiAqbnVtT3V0cHV0UGFja2V0c1B0
ciwgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0
aW9uICoqcGFja2V0RGVzY3JpcHRpb25PdXQsIHZvaWQgKndlYkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvcikKK3sKKyAgICBXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgKmNvbXByZXNz
b3IgPSAoV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yICopd2ViQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOworICAgIHJldHVybiBbY29tcHJlc3NvciBwcm92aWRlU291cmNlRGF0YU51
bU91dHB1dFBhY2tldHM6bnVtT3V0cHV0UGFja2V0c1B0ciBidWZmZXJMaXN0OmJ1ZmZlckxpc3Qg
cGFja2V0RGVzY3JpcHRpb246cGFja2V0RGVzY3JpcHRpb25PdXRdOworfQorCistIChCT09MKWlu
aXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uOihDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmKWZvcm1hdERlc2NyaXB0aW9uIG91dHB1dEF1ZGlvRm9ybWF0SUQ6KEF1ZGlvRm9y
bWF0SUQpb3V0cHV0Rm9ybWF0SUQKK3sKKyAgICBjb25zdCBhdXRvICphdWRpb0Zvcm1hdExpc3RJ
dGVtID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdChm
b3JtYXREZXNjcmlwdGlvbik7CisgICAgbV9zb3VyY2VGb3JtYXQgPSBhdWRpb0Zvcm1hdExpc3RJ
dGVtLT5tQVNCRDsKKworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUZvcm1hdElEID0gb3V0cHV0
Rm9ybWF0SUQ7CisgICAgbV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fc291cmNl
Rm9ybWF0Lm1TYW1wbGVSYXRlOworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVy
RnJhbWUgPSBtX3NvdXJjZUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKyAgICBVSW50MzIgc2l6
ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1
ZGlvRm9ybWF0R2V0UHJvcGVydHkoa0F1ZGlvRm9ybWF0UHJvcGVydHlfRm9ybWF0SW5mbywgMCwg
TlVMTCwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRp
b0Zvcm1hdEdldFByb3BlcnR5IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1
cm4gTk87CisgICAgfQorCisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgY29udmVydGVyOworICAgIGlm
IChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJOZXcoJm1fc291cmNlRm9ybWF0LCAmbV9kZXN0
aW5hdGlvbkZvcm1hdCwgJmNvbnZlcnRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0
ZXJOZXcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9
CisgICAgbV9jb252ZXJ0ZXIgPSBhZG9wdENGKGNvbnZlcnRlcik7CisKKyAgICBzaXplX3QgY29v
a2llU2l6ZSA9IDA7CisgICAgY29uc3Qgdm9pZCAqY29va2llID0gQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uR2V0TWFnaWNDb29raWUoZm9ybWF0RGVzY3JpcHRpb24sICZjb29raWVTaXplKTsKKyAg
ICBpZiAoY29va2llU2l6ZSkgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVy
dGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckRlY29tcHJl
c3Npb25NYWdpY0Nvb2tpZSwgKFVJbnQzMiljb29raWVTaXplLCBjb29raWUpKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tp
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9zb3VyY2VGb3JtYXQpOworICAgIGlm
IChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQo
KSwga0F1ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAm
bV9zb3VyY2VGb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVy
Q3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgIHJldHVybiBOTzsKKyAgICB9CisKKyAgICBpZiAoIW1fc291cmNlRm9ybWF0Lm1CeXRl
c1BlclBhY2tldCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIm1C
eXRlc1BlclBhY2tldCBzaG91bGQgbm90IGJlIHplcm8iKTsKKyAgICAgICAgcmV0dXJuIE5POwor
ICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlvbkZvcm1hdCk7CisgICAgaWYg
KGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgp
LCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAm
bV9kZXN0aW5hdGlvbkZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252
ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZv
cm1hdC5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TVBFRzRBQUMpIHsKKyAgICAgICAgVUludDMy
IG91dHB1dEJpdFJhdGUgPSA2NDAwMDsKKyAgICAgICAgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQu
bVNhbXBsZVJhdGUgPj0gNDQxMDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMTkyMDAw
OworICAgICAgICBlbHNlIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlIDwgMjIw
MDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMzIwMDA7CisKKyAgICAgICAgc2l6ZSA9
IHNpemVvZihvdXRwdXRCaXRSYXRlKTsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0Nv
bnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJFbmNv
ZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNl
dHRpbmcga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgh
bV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpIHsKKyAgICAgICAgLy8gSWYgdGhl
IGRlc3RpbmF0aW9uIGZvcm1hdCBpcyBWQlIsIHdlIG5lZWQgdG8gZ2V0IG1heCBzaXplIHBlciBw
YWNrZXQgZnJvbSB0aGUgY29udmVydGVyLgorICAgICAgICBzaXplID0gc2l6ZW9mKG1fbWF4T3V0
cHV0UGFja2V0U2l6ZSk7CisKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRl
ckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eU1h
eGltdW1PdXRwdXRQYWNrZXRTaXplLCAmc2l6ZSwgJm1fbWF4T3V0cHV0UGFja2V0U2l6ZSkpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVt
T3V0cHV0UGFja2V0U2l6ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJl
dHVybiBOTzsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fc291cmNlQnVmZmVyLnJlc2VydmVD
YXBhY2l0eShbc2VsZiBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0Om1fc291cmNlRm9y
bWF0IG1heE91dHB1dFBhY2tldFNpemU6MCBkdXJhdGlvbjowLjFdKTsKKyAgICBtX2Rlc3RpbmF0
aW9uQnVmZmVyLnJlc2VydmVDYXBhY2l0eShbc2VsZiBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlv
Rm9ybWF0Om1fZGVzdGluYXRpb25Gb3JtYXQgbWF4T3V0cHV0UGFja2V0U2l6ZTptX21heE91dHB1
dFBhY2tldFNpemUgZHVyYXRpb246MC4xXSk7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0
Lm1CeXRlc1BlclBhY2tldCkKKyAgICAgICAgbV9kZXN0aW5hdGlvblBhY2tldERlc2NyaXB0aW9u
cy5yZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpIC8gbV9tYXhP
dXRwdXRQYWNrZXRTaXplKTsKKworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKHNpemVfdCljb21w
dXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0OihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24p
Zm9ybWF0IG1heE91dHB1dFBhY2tldFNpemU6KFVJbnQzMiltYXhPdXRwdXRQYWNrZXRTaXplIGR1
cmF0aW9uOihGbG9hdDMyKWR1cmF0aW9uCit7CisgICAgVUludDMyIG51bVBhY2tldHMgPSAoZm9y
bWF0Lm1TYW1wbGVSYXRlICogZHVyYXRpb24pIC8gZm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQ7Cisg
ICAgVUludDMyIG91dHB1dFBhY2tldFNpemUgPSBmb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gZm9y
bWF0Lm1CeXRlc1BlclBhY2tldCA6IG1heE91dHB1dFBhY2tldFNpemU7CisgICAgVUludDMyIGJ1
ZmZlclNpemUgPSBudW1QYWNrZXRzICogb3V0cHV0UGFja2V0U2l6ZTsKKworICAgIHJldHVybiBi
dWZmZXJTaXplOworfQorCistICh2b2lkKWF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkOihDTVNh
bXBsZUJ1ZmZlclJlZilidWZmZXIKK3sKKyAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQobV9yZW1h
aW5pbmdQcmltZUR1cmF0aW9uKSkgeworICAgICAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBw
cmltZUluZm8geyAwLCAwIH07CisgICAgICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKHByaW1lSW5m
byk7CisKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5
KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8sICZzaXplLCAmcHJp
bWVJbmZvKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJX
ZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcmlt
ZUluZm8gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVNYWtlKHBy
aW1lSW5mby5sZWFkaW5nRnJhbWVzLCBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlKTsK
KyAgICB9CisKKyAgICBpZiAoQ01USU1FX0NPTVBBUkVfSU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBt
X3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7CisgICAgICAgIENNVGltZSBzYW1wbGVEdXJhdGlv
biA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsKKyAgICAgICAgQ01UaW1lIHRy
aW1EdXJhdGlvbiA9IENNVGltZU1pbmltdW0oc2FtcGxlRHVyYXRpb24sIG1fcmVtYWluaW5nUHJp
bWVEdXJhdGlvbik7CisgICAgICAgIENGRGljdGlvbmFyeVJlZiB0cmltQXRTdGFydERpY3QgPSBD
TVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCk7
CisgICAgICAgIENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1l
bnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnREaWN0LCBrQ01BdHRhY2htZW50
TW9kZV9TaG91bGRQcm9wYWdhdGUpOworICAgICAgICBDRlJlbGVhc2UodHJpbUF0U3RhcnREaWN0
KTsKKyAgICAgICAgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uID0gQ01UaW1lU3VidHJhY3QobV9y
ZW1haW5pbmdQcmltZUR1cmF0aW9uLCB0cmltRHVyYXRpb24pOworICAgIH0KK30KKworLSAoTlNO
dW1iZXIgKilncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudAoreworICAgIFVJbnQzMiBkZWxheVNp
emUgPSBzaXplb2YodWludDMyX3QpOworICAgIHVpbnQzMl90IG9yaWdpbmFsRGVsYXlNb2RlID0g
MDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252
ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUsICZkZWxheVNpemUsICZv
cmlnaW5hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1By
b3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4g
bmlsOworICAgIH0KKworICAgIHVpbnQzMl90IG9wdGltYWxEZWxheU1vZGUgPSBrQXVkaW9Db2Rl
Y0RlbGF5TW9kZV9PcHRpbWFsOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJT
ZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9k
ZSwgZGVsYXlTaXplLCAmb3B0aW1hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGlu
ZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
ICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIFVJbnQzMiBwcmltZVNpemUgPSBzaXpl
b2YoQXVkaW9Db2RlY1ByaW1lSW5mbyk7CisgICAgQXVkaW9Db2RlY1ByaW1lSW5mbyBwcmltZUlu
Zm8geyAwLCAwIH07CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3Bl
cnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZvLCAmcHJp
bWVTaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvZGVj
UHJvcGVydHlQcmltZUluZm8gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVy
biBuaWw7CisgICAgfQorCisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFBy
b3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCBk
ZWxheVNpemUsICZvcmlnaW5hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBr
QXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDoocHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMgLyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1GcmFt
ZXNQZXJQYWNrZXQpXTsKK30KKworLSAoQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyV2l0
aE51bVBhY2tldHM6KFVJbnQzMiludW1QYWNrZXRzIGZpbGxCdWZmZXJMaXN0OihBdWRpb0J1ZmZl
ckxpc3QpZmlsbEJ1ZmZlckxpc3QKK3sKKyAgICBWZWN0b3I8Y2hhcj4gY29va2llOworICAgIGlm
ICghbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIFVJbnQzMiBjb29r
aWVTaXplID0gMDsKKworICAgICAgICBhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9w
ZXJ0eUluZm8obV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFn
aWNDb29raWUsICZjb29raWVTaXplLCBOVUxMKTsKKyAgICAgICAgaWYgKChlcnJvciA9PSBub0Vy
cikgJiYgISFjb29raWVTaXplKSB7CisgICAgICAgICAgICBjb29raWUucmVzZXJ2ZUNhcGFjaXR5
KGNvb2tpZVNpemUpOworCisgICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVy
dGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNz
aW9uTWFnaWNDb29raWUsICZjb29raWVTaXplLCBjb29raWUuZGF0YSgpKSkgeworICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tp
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJl
ZiBkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAgICAgICBpZiAoYXV0byBlcnJvciA9
IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmbV9k
ZXN0aW5hdGlvbkZvcm1hdCwgMCwgTlVMTCwgY29va2llU2l6ZSwgY29va2llLmRhdGEoKSwgTlVM
TCwgJmRlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24pKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBD
TUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICB9CisgICAgICAgIG1fZGVzdGluYXRpb25G
b3JtYXREZXNjcmlwdGlvbiA9IGFkb3B0Q0YoZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbik7
CisgICAgICAgIG1fZ2RyQ291bnROdW0gPSBbc2VsZiBncmFkdWFsRGVjb2RlclJlZnJlc2hDb3Vu
dF07CisgICAgfQorCisgICAgY2hhciAqZGF0YSA9IHN0YXRpY19jYXN0PGNoYXIqPihmaWxsQnVm
ZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSk7CisgICAgc2l6ZV90IGRhdGFTaXplID0gZmlsbEJ1
ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZTsKKworICAgIENNQmxvY2tCdWZmZXJS
ZWYgYmxvY2tCdWZmZXI7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ3JlYXRl
V2l0aE1lbW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGRhdGFTaXplLCBrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBOVUxMLCAwLCBkYXRhU2l6ZSwga0NNQmxvY2tCdWZmZXJBc3N1cmVN
ZW1vcnlOb3dGbGFnLCAmYmxvY2tCdWZmZXIpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQmxvY2tCdWZm
ZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2sgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAg
IHJldHVybiBuaWw7CisgICAgfQorICAgIGF1dG8gYnVmZmVyID0gYWRvcHRDRihibG9ja0J1ZmZl
cik7CisKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVz
KGRhdGEsIGJ1ZmZlci5nZXQoKSwgMCwgZGF0YVNpemUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQmxv
Y2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAg
ICByZXR1cm4gbmlsOworICAgIH0KKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZl
cjsKKyAgICBhdXRvIGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXRE
ZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLmdldCgpLCB0cnVlLCBOVUxM
LCBOVUxMLCBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCksIG51bVBhY2tldHMs
IG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCwgbV9kZXN0aW5hdGlvblBhY2tl
dERlc2NyaXB0aW9ucy5kYXRhKCksICZzYW1wbGVCdWZmZXIpOworICAgIGlmIChlcnJvcikgewor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0
aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9
CisKKyAgICBpZiAoW21fZ2RyQ291bnROdW0gaW50VmFsdWVdKQorICAgICAgICBDTVNldEF0dGFj
aG1lbnQoc2FtcGxlQnVmZmVyLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0dyYWR1YWxE
ZWNvZGVyUmVmcmVzaCwgKF9fYnJpZGdlIENGVHlwZVJlZiltX2dkckNvdW50TnVtLCBrQ01BdHRh
Y2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOworCisgICAgcmV0dXJuIHNhbXBsZUJ1ZmZlcjsK
K30KKworLSAodm9pZClwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lOihDTVRp
bWUpbG93V2F0ZXJUaW1lCit7CisgICAgaWYgKCFtX2NvbnZlcnRlcikgeworICAgICAgICBhdXRv
IGJ1ZmZlciA9IChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJR
dWV1ZUdldEhlYWQobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOworCisgICAgICAgIG1fY3Vy
cmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2Vu
dGF0aW9uVGltZVN0YW1wKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1dFByZXNlbnRh
dGlvblRpbWVTdGFtcCA9IENNU2FtcGxlQnVmZmVyR2V0T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0
YW1wKGJ1ZmZlcik7CisKKyAgICAgICAgYXV0byBmb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxl
QnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24oYnVmZmVyKTsKKyAgICAgICAgaWYgKCFbc2VsZiBp
bml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbjpmb3JtYXREZXNjcmlw
dGlvbiBvdXRwdXRBdWRpb0Zvcm1hdElEOm1fb3V0cHV0Q29kZWNUeXBlXSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB3aGlsZSAoQ01USU1FX0lTX0lOVkFMSUQobG93V2F0ZXJU
aW1lKSB8fCBDTVRJTUVfQ09NUEFSRV9JTkxJTkUobG93V2F0ZXJUaW1lLCA8LCBDTUJ1ZmZlclF1
ZXVlR2V0RHVyYXRpb24obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpIHsKKyAgICAgICAgQXVk
aW9CdWZmZXJMaXN0IGZpbGxCdWZmZXJMaXN0OworCisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1O
dW1iZXJCdWZmZXJzID0gMTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51
bWJlckNoYW5uZWxzID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKyAg
ICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IChVSW50MzIp
bV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpOworICAgICAgICBmaWxsQnVmZmVyTGlzdC5t
QnVmZmVyc1swXS5tRGF0YSA9IG1fZGVzdGluYXRpb25CdWZmZXIuZGF0YSgpOworCisgICAgICAg
IFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQ
YWNrZXQgPyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA6IG1fbWF4T3V0cHV0
UGFja2V0U2l6ZTsKKyAgICAgICAgVUludDMyIG51bU91dHB1dFBhY2tldHMgPSAoVUludDMyKW1f
ZGVzdGluYXRpb25CdWZmZXIuY2FwYWNpdHkoKSAvIG91dHB1dFBhY2tldFNpemU7CisKKyAgICAg
ICAgYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIobV9jb252ZXJ0
ZXIuZ2V0KCksIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MsIChfX2JyaWRnZSB2
b2lkICopc2VsZiwgJm51bU91dHB1dFBhY2tldHMsICZmaWxsQnVmZmVyTGlzdCwgbV9kZXN0aW5h
dGlvblBhY2tldERlc2NyaXB0aW9ucy5kYXRhKCkpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIW51bU91dHB1dFBhY2tldHMpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBh
dXRvIGJ1ZmZlciA9IFtzZWxmIHNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzOm51bU91dHB1dFBh
Y2tldHMgZmlsbEJ1ZmZlckxpc3Q6ZmlsbEJ1ZmZlckxpc3RdOworCisgICAgICAgIFtzZWxmIGF0
dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkOmJ1ZmZlcl07CisKKyAgICAgICAgZXJyb3IgPSBDTVNh
bXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIsIG1fY3VycmVu
dE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3Rh
bXAgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBDTVRpbWUgbmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1
cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVT
dGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG5h
dGl2ZUR1cmF0aW9uKTsKKworICAgICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24gPSBDTVNhbXBs
ZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1
dFByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRwdXRQcmVzZW50
YXRpb25UaW1lU3RhbXAsIG91dHB1dER1cmF0aW9uKTsKKworICAgICAgICBlcnJvciA9IENNQnVm
ZmVyUXVldWVFbnF1ZXVlKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAg
ICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9Cit9CisKKy0gKE9TU3RhdHVzKXByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0
czooVUludDMyICopbnVtT3V0cHV0UGFja2V0c1B0ciBidWZmZXJMaXN0OihBdWRpb0J1ZmZlckxp
c3QgKilhdWRpb0J1ZmZlckxpc3QgcGFja2V0RGVzY3JpcHRpb246KEF1ZGlvU3RyZWFtUGFja2V0
RGVzY3JpcHRpb24gKiopcGFja2V0RGVzY3JpcHRpb25PdXQKK3sKKyAgICBjb25zdCBVSW50MzIg
bnVtUGFja2V0c1RvQ29weSA9ICpudW1PdXRwdXRQYWNrZXRzUHRyOworICAgIHNpemVfdCBudW1C
eXRlc1RvQ29weSA9IChudW1QYWNrZXRzVG9Db3B5ICogbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVy
UGFja2V0KTsKKyAgICBzaXplX3QgY3VyT2Zmc2V0SW5TcmNCdWZmZXIgPSAwOworCisgICAgaWYg
KGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnMgPT0gMSkgeworICAgICAgICBtX3NvdXJj
ZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobnVtQnl0ZXNUb0NvcHkpOworCisgICAgICAgIHdoaWxl
ICgwIDwgbnVtQnl0ZXNUb0NvcHkpIHsKKyAgICAgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVm
ZmVyU2l6ZSA8PSBtX2N1ck9mZnNldEluU2FtcGxlQmJ1ZikgeworICAgICAgICAgICAgICAgIGlm
IChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxv
Y2tCdWZmZXIgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVy
U2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKENNQnVm
ZmVyUXVldWVJc0VtcHR5KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9w
dENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURl
cXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsKKyAgICAgICAgICAg
ICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29u
c3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBs
ZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJT
aXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQo
KSk7CisgICAgICAgICAgICAgICAgbV9jdXJPZmZzZXRJblNhbXBsZUJidWYgPSAwOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAg
ICAgICAgICAgIHNpemVfdCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmID0gc3RkOjptaW4o
bnVtQnl0ZXNUb0NvcHksIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSAtIG1fY3VyT2Zmc2V0SW5T
YW1wbGVCYnVmKSk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVm
ZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1ck9mZnNldElu
U2FtcGxlQmJ1ZiwgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiwgKG1fc291cmNlQnVmZmVy
LmRhdGEoKSArIGN1ck9mZnNldEluU3JjQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxl
QmJ1ZjsKKyAgICAgICAgICAgICAgICBjdXJPZmZzZXRJblNyY0J1ZmZlciArPSBudW1CeXRlc1Rv
Q29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgICAgIG1fY3VyT2Zmc2V0SW5TYW1wbGVC
YnVmICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IG1fc291
cmNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5t
RGF0YUJ5dGVTaXplID0gY3VyT2Zmc2V0SW5TcmNCdWZmZXI7CisgICAgICAgIGF1ZGlvQnVmZmVy
TGlzdC0+bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9zb3VyY2VGb3JtYXQubUNoYW5u
ZWxzUGVyRnJhbWU7CisgICAgICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVy
TGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1Bl
clBhY2tldCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1ZGlvQnVmZmVyTGlzdC0+bU51
bWJlckJ1ZmZlcnMgPT0gMikKKyAgICAgICAgICAgIG51bUJ5dGVzVG9Db3B5ID0gbnVtQnl0ZXNU
b0NvcHkgKiAyOworCisgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVm
ZmVyUXVldWUuZ2V0KCkpKSB7CisgICAgICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJz
WzBdLm1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZl
cnNbMF0ubURhdGFCeXRlU2l6ZSA9IDA7CisgICAgICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1C
dWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IDE7CisKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVy
TGlzdC0+bUJ1ZmZlcnNbMV0ubURhdGEgPSBudWxscHRyOworICAgICAgICAgICAgYXVkaW9CdWZm
ZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gMDsKKyAgICAgICAgICAgIGF1ZGlv
QnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0gMTsKKworICAgICAgICAg
ICAgKm51bU91dHB1dFBhY2tldHNQdHIgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3Rf
Y2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1
ZXVlLmdldCgpKSkpKTsKKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBhZG9wdENG
KChDTUJsb2NrQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDRlJldGFpbihDTVNhbXBsZUJ1
ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKSkpKSk7CisgICAgICAgICAgICBt
X3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fc2Ft
cGxlQmxvY2tCdWZmZXIuZ2V0KCkpOworICAgICAgICAgICAgbV9zb3VyY2VCdWZmZXIucmVzZXJ2
ZUNhcGFjaXR5KG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplKTsKKyAgICAgICAgICAgIGlmIChhdXRv
IGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5n
ZXQoKSwgMCwgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUsIG1fc291cmNlQnVmZmVyLmRhdGEoKSkp
IHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIldlYkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVybGVhdmVkIGRh
dGEgYnkgdW5pbnRlcmxlYXZpbmcgbV9zb3VyY2VCdWZmZXIgaWYgbmVlZGVkLgorICAgICAgICAg
ICAgQVNTRVJUKG1fc291cmNlRm9ybWF0Lm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJ
c05vbkludGVybGVhdmVkKTsKKworICAgICAgICAgICAgYXV0byBidWZmZXJTaXplID0gbV9zYW1w
bGVCbG9ja0J1ZmZlclNpemUgLyAyOworICAgICAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVm
ZmVyc1swXS5tRGF0YSA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgICAgIGF1ZGlv
QnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAg
ICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IDE7
CisKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubURhdGEgPSBtX3Nv
dXJjZUJ1ZmZlci5kYXRhKCkgKyBidWZmZXJTaXplOworICAgICAgICAgICAgYXVkaW9CdWZmZXJM
aXN0LT5tQnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsKKyAgICAgICAgICAg
IGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0gMTsKKworICAg
ICAgICAgICAgKm51bU91dHB1dFBhY2tldHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVy
c1swXS5tRGF0YUJ5dGVTaXplIC8gbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChwYWNrZXREZXNjcmlwdGlvbk91dCkgeworICAgICAg
ICAvLyBXZSBhc3N1bWUgdGhhdCB0aGUgc291cmNlIGZvcm1hdCBpcyBQQ00sIHdoaWNoIGlzIG5v
dCBWQlIsIGJ1dCBDQlIuCisgICAgICAgIC8vIFNvLCB0aGVyZSBpcyBub3QgcGFja2V0IGRlc2Ny
aXB0aW9ucyBkZXNjcmliaW5nIHRoZSBsYXlvdXQgb2YgZWFjaCBwYWNrZXQuCisgICAgICAgICpw
YWNrZXREZXNjcmlwdGlvbk91dCA9IE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG5vRXJyOwor
fQorCistICh2b2lkKXByb2Nlc3NTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNidWYK
K3sKKyAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUobV9pbnB1dEJ1ZmZlclF1
ZXVlLmdldCgpLCBzYnVmKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFT
dHJlYW0sICJXZWJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVl
dWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICBbc2VsZiBwcm9jZXNzU2FtcGxlQnVm
ZmVyc1VudGlsTG93V2F0ZXJUaW1lOm1fbG93V2F0ZXJUaW1lXTsKK30KKworLSAodm9pZClhZGRT
YW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNidWYKK3sKKyAgICBkaXNwYXRjaF9zeW5j
KG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykKKyAg
ICAgICAgICAgIFtzZWxmIHByb2Nlc3NTYW1wbGVCdWZmZXI6c2J1Zl07CisgICAgfSk7Cit9CisK
Ky0gKENNU2FtcGxlQnVmZmVyUmVmKXBpY2tPdXRwdXRTYW1wbGVCdWZmZXIKK3sKKyAgICByZXR1
cm4gKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0
SGVhZChtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOworfQorCistIChDTVNhbXBsZUJ1ZmZl
clJlZil0YWtlT3V0cHV0U2FtcGxlQnVmZmVyCit7CisgICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZl
clJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9v
dXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKK30KKworQGVuZAorCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggYjE0N2NhMjg4
MjliMGYxMDMwYmRhNzRhMDg0MjZjNDU2NWU5ODcxZS4uZDc1ZmZlZjU5OWQwNzRmM2U0OTUzZDcx
OTNlY2JjZmNlMjNiMGIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9u
LmgiCiAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KQEAgLTM0LDExICszNSwxOCBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Ro
cmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5
cGVzLmg+CisjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogCiB0eXBlZGVmIHN0cnVjdCBv
cGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0
cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwor
dHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiAqQ01CdWZmZXJR
dWV1ZVRyaWdnZXJUb2tlbjsKIAogT0JKQ19DTEFTUyBBVkFzc2V0V3JpdGVyOwogT0JKQ19DTEFT
UyBBVkFzc2V0V3JpdGVySW5wdXQ7CitPQkpDX0NMQVNTIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZTsKK09CSkNfQ0xBU1MgV2ViQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOworT0JKQ19DTEFT
UyBXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiAKIG5hbWVzcGFjZSBXVEYgewogY2xh
c3MgTWVkaWFUaW1lOwpAQCAtNTAsMjUgKzU4LDczIEBAIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb247CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVk
aW9EYXRhOwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdlYWtQdHJGYWN0
b3J5SW5pdGlhbGl6YXRpb246OkVhZ2VyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlKiBhdWRpb1RyYWNrLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdmlkZW9U
cmFjayk7CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3Jl
YXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgICAgfk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKCk7Ci0gICAgCi0gICAgYm9vbCBzZXR1cFdyaXRlcigpOwotICAg
IGJvb2wgc2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotICAgIGJvb2wgc2V0
QXVkaW9JbnB1dCgpOworCiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBs
ZUJ1ZmZlclJlZik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBjb25zdCBXVEY6
Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7CiAgICAgdm9p
ZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
KT4mJik7CiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAgIHZvaWQgYXBwZW5kRGF0
YShjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZERhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorICAgIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVy
PiYmLCBib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKTsKKyAgICB2b2lkIGNsZWFyKCk7CisK
KyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lk
KiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CisgICAgc3RhdGljIHZvaWQgY29tcHJlc3Nl
ZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9r
ZW4pOworCisgICAgdm9pZCBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAgdm9pZCBmbHVzaENvbXBy
ZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisgICAgdm9pZCBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVm
ZmVycygpOworCisgICAgYm9vbCBhcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKTsK
KyAgICBib29sIGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpOworCisgICAgdm9p
ZCBwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOworICAgIHZvaWQgcHJv
Y2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKKyNlbHNlCiAgICAgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYsIFN0cmluZyYm
IHBhdGgpOwogICAgIHZvaWQgY2xlYXIoKTsKIAorICAgIGJvb2wgc2V0dXBXcml0ZXIoKTsKKyAg
ICBib29sIHNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBib29sIHNl
dEF1ZGlvSW5wdXQoKTsKKyNlbmRpZgorCisgICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKKwogICAgIFJldGFpblB0
cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKKworICAgIGJvb2wgbV9pc1N0b3BwaW5nIHsgZmFs
c2UgfTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4gbV9mZXRjaERhdGFDb21wbGV0aW9u
SGFuZGxlcjsKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgYm9vbCBtX2hhc0F1
ZGlvOworICAgIGJvb2wgbV9oYXNWaWRlbzsKKworICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CisgICAgUmV0YWluUHRyPFdlYkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7CisgICAgUmV0YWlu
UHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQ7CisKKyAgICBS
ZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9u
OworICAgIFJldGFpblB0cjxXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fdmlkZW9D
b21wcmVzc29yOworICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9Bc3Nl
dFdyaXRlcklucHV0OworICAgIENNVGltZSBtX2xhc3RWaWRlb1ByZXNlbnRhdGlvblRpbWU7Cisg
ICAgQ01UaW1lIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lOworICAgIGJvb2wgbV9oYXNFbmNvZGVk
VmlkZW9TYW1wbGVzIHsgZmFsc2UgfTsKKworICAgIFJldGFpblB0cjxXZWJBVkFzc2V0V3JpdGVy
RGVsZWdhdGU+IG1fd3JpdGVyRGVsZWdhdGU7CisjZWxzZQogICAgIFJldGFpblB0cjxBVkFzc2V0
V3JpdGVySW5wdXQ+IG1fdmlkZW9JbnB1dDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklu
cHV0PiBtX2F1ZGlvSW5wdXQ7CiAKQEAgLTc4LDE3ICsxMzQsMTMgQEAgcHJpdmF0ZToKICAgICBC
aW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nU2VtYXBob3JlOwogICAgIEJpbmFyeVNlbWFw
aG9yZSBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZTsKICAgICBCaW5hcnlTZW1hcGhvcmUg
bV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmU7Ci0gICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0
aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNGaXJzdEF1ZGlvU2FtcGxlIHsgdHJ1ZSB9OwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9h
dWRpb1B1bGxRdWV1ZTsKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fdmlkZW9QdWxsUXVldWU7CiAg
ICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV92aWRlb0J1ZmZlclBvb2w7
CiAgICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV9hdWRpb0J1ZmZlclBv
b2w7CiAKLSAgICBib29sIG1faXNTdG9wcGluZyB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOwotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJik+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAyMzM1NGY0Nzg0ZGUwOTJmMDQ4N2MxODU0
ZmM1YjI2YTVlMjIxMWFjLi42YmJmOTc0ODAzODcyZWZjMmQ3ZmQ3M2QzNjhjYTE4MDhlN2NmYzQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCkBAIC0yNiwxMTIgKzI2LDE0NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKIAorI2lmICFVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FG
aWxlQmFzZWQubW0iCisjZWxzZQorCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFW
Rk9VTkRBVElPTikKIAorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgog
I2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIK
ICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91
bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQuaD4KKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZB
c3NldFdyaXRlcl9Qcml2YXRlLmg+CiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAogI2ltcG9ydCA8
cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKLSN1bmRlZiBBVkVuY29kZXJCaXRS
YXRlS2V5Ci0jZGVmaW5lIEFWRW5jb2RlckJpdFJhdGVLZXkgZ2V0QVZFbmNvZGVyQml0UmF0ZUtl
eVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZGb3JtYXRJREtleQotI2RlZmluZSBBVkZvcm1hdElE
S2V5IGdldEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQotI3VuZGVmIEFWTnVtYmVyT2ZDaGFu
bmVsc0tleQotI2RlZmluZSBBVk51bWJlck9mQ2hhbm5lbHNLZXkgZ2V0QVZOdW1iZXJPZkNoYW5u
ZWxzS2V5V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBBVlNhbXBsZVJhdGVLZXkKLSNkZWZpbmUgQVZT
YW1wbGVSYXRlS2V5IGdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCitAaW50ZXJmYWNl
IFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxBVkFzc2V0V3JpdGVyRGVsZWdh
dGU+IHsKKyAgICBXZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBt
X3dyaXRlcjsKK30KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoV3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciopd3JpdGVyOwor
LSAodm9pZCljbG9zZTsKKy0gKHZvaWQpZmluaXNoOwogCi11c2luZyBuYW1lc3BhY2UgUEFMOwor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIHsKK307CiAK
LXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZGb3JtYXRJREtleVdpdGhGYWxsYmFjaygpCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKil3cml0ZXIKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkZvcm1h
dElES2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJ
REtleSgpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc2VsZiA9IFtzdXBlciBp
bml0XTsKKyAgICBpZiAoc2VsZikKKyAgICAgICAgc2VsZi0+bV93cml0ZXIgPSBtYWtlV2Vha1B0
cih3cml0ZXIpOwogCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9h
ZCBBVkZvcm1hdElES2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZGb3JtYXRJREtleSI7CisgICAgcmV0
dXJuIHNlbGY7CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5
V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmIChQQUw6OmNhbkxvYWRf
QVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgpKQotICAgICAgICByZXR1cm4gUEFM
OjpnZXRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgpOwotCi0gICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVk51bWJlck9mQ2hhbm5lbHNLZXki
KTsKLSAgICByZXR1cm4gQCJBVk51bWJlck9mQ2hhbm5lbHNLZXkiOworICAgIFtzdXBlciBkZWFs
bG9jXTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJh
Y2soKQorLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdyaXRlciAqKWFzc2V0V3JpdGVyIGRp
ZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YTooTlNEYXRhICopZnJhZ21lbnRlZEhlYWRlckRh
dGEKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXko
KSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXko
KTsKKyAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0ZXIpOworICAgIGlmICghaXNNYWluVGhyZWFk
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2l6ZSA9IFtmcmFnbWVudGVkSGVhZGVyRGF0YSBsZW5n
dGhdKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0
YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4oc2VsZiksIGJ1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRl
ZEhlYWRlckRhdGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
aWYgKHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyKQorICAgICAgICAgICAgICAgICAgICBwcm90ZWN0
ZWRTZWxmLT5tX3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZTYW1wbGVSYXRlS2V5Iik7Ci0gICAg
cmV0dXJuIEAiQVZTYW1wbGVSYXRlS2V5IjsKKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1f
d3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZEhl
YWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pOwogfQogCi1z
dGF0aWMgTlNTdHJpbmcgKmdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2soKQorLSAo
dm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdyaXRlciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VG
cmFnbWVudGVkTWVkaWFEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkTWVkaWFEYXRhIGZyYWdtZW50
ZWRNZWRpYURhdGFSZXBvcnQ6KEFWRnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCAqKWZyYWdtZW50
ZWRNZWRpYURhdGFSZXBvcnQKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9B
VkVuY29kZXJCaXRSYXRlS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRp
b25fQVZFbmNvZGVyQml0UmF0ZUtleSgpOworICAgIFVOVVNFRF9QQVJBTShhc3NldFdyaXRlcik7
CisgICAgVU5VU0VEX1BBUkFNKGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQpOworICAgIGlmICgh
aXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2l6ZSA9IFtmcmFnbWVudGVkTWVk
aWFEYXRhIGxlbmd0aF0pIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVy
ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KFtmcmFnbWVudGVkTWVkaWFEYXRhIGJ5dGVzXSksIHNpemUpXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlcikKKyAgICAgICAgICAgICAgICAg
ICAgcHJvdGVjdGVkU2VsZi0+bV93cml0ZXItPmFwcGVuZERhdGEoV1RGTW92ZShidWZmZXIpKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRW5jb2RlckJpdFJh
dGVLZXkiKTsKLSAgICByZXR1cm4gQCJBVkVuY29kZXJCaXRSYXRlS2V5IjsKKyAgICBpZiAobV93
cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihbZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBbZnJhZ21lbnRlZE1lZGlhRGF0YSBs
ZW5ndGhdKTsKIH0KIAotUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
KiBhdWRpb1RyYWNrLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdmlkZW9UcmFjaykK
Ky0gKHZvaWQpY2xvc2UKIHsKLSAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwotICAgIGlm
ICh2aWRlb1RyYWNrKSB7Ci0gICAgICAgIGF1dG8mIHNldHRpbmdzID0gdmlkZW9UcmFjay0+c2V0
dGluZ3MoKTsKLSAgICAgICAgd2lkdGggPSBzZXR0aW5ncy53aWR0aCgpOwotICAgICAgICBoZWln
aHQgPSBzZXR0aW5ncy5oZWlnaHQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGNyZWF0ZSghIWF1ZGlv
VHJhY2ssIHdpZHRoLCBoZWlnaHQpOworICAgIG1fd3JpdGVyID0gbnVsbHB0cjsKIH0KIAotUmVm
UHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKKy0gKHZvaWQp
ZmluaXNoCiB7Ci0gICAgTlNTdHJpbmcgKmRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeShAInZpZGVvcyIpOwotICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiLyVsbGQubXA0IiwgQ01DbG9ja0dldFRpbWUoQ01D
bG9ja0dldEhvc3RUaW1lQ2xvY2soKSkudmFsdWVdOwotICAgIE5TU3RyaW5nICpwYXRoID0gW2Rp
cmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpmaWxlbmFtZV07CisgICAgbV93cml0ZXIg
PSBudWxscHRyOworfQorCitAZW5kCiAKLSAgICBOU1VSTCAqb3V0cHV0VVJMID0gW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpwYXRoXTsKLSAgICBTdHJpbmcgZmlsZVBhdGggPSBbcGF0aCBVVEY4U3Ry
aW5nXTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworUmVm
UHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKICAgICBO
U0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBhdXRvIGF2QXNzZXRXcml0ZXIgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhVUkw6b3V0cHV0VVJMIGZp
bGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKKyAgICBhdXRvIGF2QXNzZXRX
cml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdp
dGhGaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7CiAgICAgaWYgKGVycm9y
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNz
ZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAobG9uZyllcnJv
ci5jb2RlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byB3cml0
ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFdURk1vdmUoYXZB
c3NldFdyaXRlciksIFdURk1vdmUoZmlsZVBhdGgpKSk7Ci0KLSAgICBpZiAoaGFzQXVkaW8gJiYg
IXdyaXRlci0+c2V0QXVkaW9JbnB1dCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihXVEZNb3ZlKGF2
QXNzZXRXcml0ZXIpLCBoYXNBdWRpbywgd2lkdGggJiYgaGVpZ2h0KSk7Cit9CiAKLSAgICBpZiAo
d2lkdGggJiYgaGVpZ2h0KSB7Ci0gICAgICAgIGlmICghd3JpdGVyLT5zZXRWaWRlb0lucHV0KHdp
ZHRoLCBoZWlnaHQpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQordm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2Fs
bGJhY2sodm9pZCAqbWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVldWVUcmln
Z2VyVG9rZW4pCit7CisgICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7CisgICAgd3JpdGVy
LT5wcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpOworfQogCi0gICAgcmV0
dXJuIFdURk1vdmUod3JpdGVyKTsKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNv
bXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQgKm1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKQoreworICAgIGF1dG8gKndyaXRl
ciA9IHN0YXRpY19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKj4obWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXIpOworICAgIHdyaXRlci0+cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1Nh
bXBsZUJ1ZmZlcnMoKTsKIH0KIAotTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiYmIGF2QXNzZXRXcml0
ZXIsIFN0cmluZyYmIGZpbGVQYXRoKQorTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiYmIGF2QXNzZXRX
cml0ZXIsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pCiAgICAgOiBtX3dyaXRlcihXVEZN
b3ZlKGF2QXNzZXRXcml0ZXIpKQotICAgICwgbV9wYXRoKFdURk1vdmUoZmlsZVBhdGgpKQorICAg
ICwgbV9oYXNBdWRpbyhoYXNBdWRpbykKKyAgICAsIG1faGFzVmlkZW8oaGFzVmlkZW8pCiB7Cisg
ICAgbV93cml0ZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoV3JpdGVyOiB0aGlzXSk7CisgICAgW21fd3JpdGVyLmdldCgpIHNldERl
bGVnYXRlOm1fd3JpdGVyRGVsZWdhdGUuZ2V0KCldOworCisgICAgaWYgKG1faGFzVmlkZW8pCisg
ICAgICAgIG1fdmlkZW9Db21wcmVzc29yID0gYWRvcHROUyhbW1dlYlZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBhbGxvY10gaW5pdFdpdGhDb2RlY1R5cGU6a0NNVmlkZW9Db2RlY1R5cGVfSDI2
NCBjYWxsYmFjazpjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayBjYWxsYmFja09i
amVjdDp0aGlzXSk7CisgICAgCisgICAgaWYgKG1faGFzQXVkaW8pCisgICAgICAgIG1fYXVkaW9D
b21wcmVzc29yID0gYWRvcHROUyhbW1dlYkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBhbGxv
Y10gaW5pdFdpdGhDYWxsYmFjazpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayBj
YWxsYmFja09iamVjdDp0aGlzXSk7CiB9CiAKIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQpAQCAtMTM5LDc5ICsxNzEsMTQ2IEBAIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAg
IGNsZWFyKCk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKCkK
K3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlk
ZW9TYW1wbGVCdWZmZXJzKCkKIHsKLSAgICBpZiAobV92aWRlb0lucHV0KSB7Ci0gICAgICAgIG1f
dmlkZW9JbnB1dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fdmlkZW9QdWxs
UXVldWUpOwotICAgIH0KLSAgICBpZiAobV9hdWRpb0lucHV0KSB7Ci0gICAgICAgIG1fYXVkaW9J
bnB1dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fYXVkaW9QdWxsUXVldWUp
OworICAgIEFTU0VSVChtX2hhc1ZpZGVvKTsKKyAgICBpZiAoIW1fdmlkZW9Gb3JtYXREZXNjcmlw
dGlvbikgeworICAgICAgICBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZl
ckdldEZvcm1hdERlc2NyaXB0aW9uKFttX3ZpZGVvQ29tcHJlc3NvciBwaWNrT3V0cHV0U2FtcGxl
QnVmZmVyXSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHIgPSBtYWtlV2Vha1B0
cih0aGlzKSwgdGhpc10geworICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1faGFzQXVkaW8gJiYg
IW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICAgICAgfSk7CiAgICAgfQotICAgIGlm
IChtX3dyaXRlcikKLSAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKyAgICBpZiAoIW1faGFzU3Rh
cnRlZFdyaXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxl
QnVmZmVycygpOworfQogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKLSAgICBpZiAoYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCi0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwordm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcnMoKQorewor
ICAgIEFTU0VSVChtX2hhc0F1ZGlvKTsKKyAgICBpZiAoIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlv
bikgeworICAgICAgICBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdl
dEZvcm1hdERlc2NyaXB0aW9uKFttX2F1ZGlvQ29tcHJlc3NvciBwaWNrT3V0cHV0U2FtcGxlQnVm
ZmVyXSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHIgPSBtYWtlV2Vha1B0cih0
aGlzKSwgdGhpc10geworICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1faGFzVmlkZW8gJiYgIW1f
dmlkZW9Gb3JtYXREZXNjcmlwdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIGlmICgh
bV9oYXNTdGFydGVkV3JpdGluZykKKyAgICAgICAgcmV0dXJuOworICAgIGFwcGVuZENvbXByZXNz
ZWRTYW1wbGVCdWZmZXJzKCk7CiB9CiAKLWJvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQordm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlcigpCiB7Ci0gICAgQVNTRVJUKCFtX3ZpZGVv
SW5wdXQpOwotICAgIAotICAgIE5TRGljdGlvbmFyeSAqY29tcHJlc3Npb25Qcm9wZXJ0aWVzID0g
QHsKLSAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDogW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAxMl0sCi0gICAgICAgIEFWVmlkZW9FeHBlY3RlZFNvdXJj
ZUZyYW1lUmF0ZUtleSA6IEAoMzApLAotICAgICAgICBBVlZpZGVvTWF4S2V5RnJhbWVJbnRlcnZh
bEtleSA6IEAoMTIwKSwKLSAgICAgICAgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSA6IEFWVmlkZW9Q
cm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbAotICAgIH07Ci0KLSAgICBOU0RpY3Rpb25hcnkg
KnZpZGVvU2V0dGluZ3MgPSBAewotICAgICAgICBBVlZpZGVvQ29kZWNLZXk6IEFWVmlkZW9Db2Rl
Y0gyNjQsCi0gICAgICAgIEFWVmlkZW9XaWR0aEtleTogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
d2lkdGhdLAotICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDpoZWlnaHRdLAotICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5OiBjb21w
cmVzc2lvblByb3BlcnRpZXMKLSAgICB9OworICAgIGlmIChtX2hhc1ZpZGVvKSB7CisgICAgICAg
IG1fdmlkZW9Bc3NldFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0
ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBvdXRw
dXRTZXR0aW5nczpuaWwgc291cmNlRm9ybWF0SGludDptX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24u
Z2V0KCldKTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV92aWRl
b0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3Jp
dGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgdmlkZW8iKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV92aWRlb0Fzc2V0
V3JpdGVySW5wdXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBtX3ZpZGVvSW5wdXQgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlh
VHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOnZpZGVvU2V0dGluZ3Mgc291cmNl
Rm9ybWF0SGludDpuaWxdKTsKLSAgICBbbV92aWRlb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJ
blJlYWxUaW1lOnRydWVdOworICAgIGlmIChtX2hhc0F1ZGlvKSB7CisgICAgICAgIG1fYXVkaW9B
c3NldFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dElu
c3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5n
czpuaWwgc291cmNlRm9ybWF0SGludDptX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCldKTsK
KyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV9hdWRpb0Fzc2V0V3Jp
dGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxl
ZCBjYW5BZGRJbnB1dCBmb3IgYXVkaW8iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV9hdWRpb0Fzc2V0V3JpdGVySW5w
dXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1dDpt
X3ZpZGVvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1dCA9IG51bGxwdHI7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIHZpZGVvIGlucHV0IGlz
IG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgc3RhcnRXcml0aW5nXSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBzdGFydFdyaXRpbmciKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92aWRlb0lucHV0LmdldCgp
XTsKLSAgICBtX3ZpZGVvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3Jl
VmlkZW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwot
ICAgIHJldHVybiB0cnVlOworCisgICAgW21fd3JpdGVyLmdldCgpIHN0YXJ0U2Vzc2lvbkF0U291
cmNlVGltZTprQ01UaW1lWmVyb107CisKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVy
cygpOworCisgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7CiB9CiAKLWJvb2wgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldEF1ZGlvSW5wdXQoKQorYm9vbCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKCkKIHsKLSAg
ICBBU1NFUlQoIW1fYXVkaW9JbnB1dCk7CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKFttX2F1
ZGlvQ29tcHJlc3NvciB0YWtlT3V0cHV0U2FtcGxlQnVmZmVyXSk7CisgICAgaWYgKCFidWZmZXIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5TRGljdGlvbmFyeSAqYXVkaW9TZXR0aW5n
cyA9IEB7Ci0gICAgICAgIEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4MDAwKSwKLSAgICAgICAg
QVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAotICAgICAgICBBVk51bWJl
ck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAotICAgICAgICBBVlNhbXBsZVJhdGVLZXkgOiBAKDIyMDUw
KQotICAgIH07CisgICAgaWYgKCFbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1v
cmVNZWRpYURhdGFdKQorICAgICAgICBbbV93cml0ZXIgZmx1c2hdOworICAgIFttX2F1ZGlvQXNz
ZXRXcml0ZXJJbnB1dC5nZXQoKSBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIG1fYXVkaW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFU
eXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6YXVkaW9TZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5p
bF0pOwotICAgIFttX2F1ZGlvSW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1
ZV07Ci0gICAgCi0gICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV9hdWRpb0lucHV0Lmdl
dCgpXSkgewotICAgICAgICBtX2F1ZGlvSW5wdXQgPSBudWxscHRyOwotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgInRoZSBhdWRpbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0
byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0ZXIiKTsKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpCit7CisgICAgYXV0byBi
dWZmZXIgPSBhZG9wdENGKFttX3ZpZGVvQ29tcHJlc3NvciB0YWtlT3V0cHV0U2FtcGxlQnVmZmVy
XSk7CisgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
W21fd3JpdGVyIGFkZElucHV0Om1fYXVkaW9JbnB1dC5nZXQoKV07Ci0gICAgbV9hdWRpb1B1bGxR
dWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUF1ZGlvUmVjb3JkaW5nUHVsbEJ1
ZmZlclF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKworICAgIG1fbGFzdFZpZGVvUHJl
c2VudGF0aW9uVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1
ZmZlci5nZXQoKSk7CisgICAgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUgPSBDTVNhbXBsZUJ1ZmZl
ckdldERlY29kZVRpbWVTdGFtcChidWZmZXIuZ2V0KCkpOworICAgIG1faGFzRW5jb2RlZFZpZGVv
U2FtcGxlcyA9IHRydWU7CisKKyAgICBpZiAoIVttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBpc1Jl
YWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgIFttX3dyaXRlciBmbHVzaF07CisgICAgW21f
dmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0
KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpCit7CisgICAgd2hpbGUgKGFwcGVu
ZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpIHx8IGFwcGVuZENvbXByZXNzZWRBdWRpb1Nh
bXBsZUJ1ZmZlcigpKSB7IH07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRFbmRzUHJl
dmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3JpdGVySW5wdXQgKmFzc2V0V3JpdGVy
SW5wdXQsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBkZWNvZGluZ1RpbWVT
dGFtcCkKK3sKKyAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nSW5mbyA9IHsga0NNVGltZUlu
dmFsaWQsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZGVjb2RpbmdUaW1lU3RhbXB9OworCisgICAg
Q01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyID0gTlVMTDsKKyAgICBhdXRvIGVycm9yID0gQ01TYW1w
bGVCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgdHJ1ZSwgTlVMTCwgTlVM
TCwgTlVMTCwgMCwgMSwgJnRpbWluZ0luZm8sIDAsIE5VTEwsICZidWZmZXIpOworICAgIGlmIChl
cnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2Vy
IGZhaWxlZCBDTVNhbXBsZUJ1ZmZlckNyZWF0ZSB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRihidWZmZXIpOwor
CisgICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NNU2FtcGxlQnVmZmVy
QXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwga0NGQm9vbGVhblRydWUs
IGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisgICAgaWYgKCFbYXNzZXRXcml0
ZXJJbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6c2FtcGxlQnVmZmVyLmdldCgpXSkKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciBhcHBlbmRTYW1wbGVCdWZmZXIgdG8gd3JpdGVyIGlucHV0IGZhaWxlZCIpOworfQorCit2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJz
KCkKK3sKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworICAgIAorICAgIGlm
IChtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMpCisgICAgICAgIGFwcGVuZEVuZHNQcmV2aW91c1Nh
bXBsZUR1cmF0aW9uTWFya2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpLCBtX2xhc3RW
aWRlb1ByZXNlbnRhdGlvblRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsKK30KKwordm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQoreworICAgIGlmIChtX3dyaXRl
cikKKyAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKworICAgIG1fZGF0YSA9IG51bGxwdHI7Cisg
ICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxl
dGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKK30KKwog
c3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZm
ZXJXaXRoQ3VycmVudFRpbWVTdGFtcChDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikK
IHsKICAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RU
aW1lQ2xvY2soKSk7CkBAIC0yMjEsNTggKzMyMCwyOSBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1w
KAogICAgIFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWVJbmZvKGNvdW50KTsKICAgICBD
TVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgY291
bnQsIHRpbWVJbmZvLmRhdGEoKSwgJmNvdW50KTsKICAgICAKLSAgICBmb3IgKENNSXRlbUNvdW50
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsKICAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1wID0ga0NNVGltZUlu
dmFsaWQ7CiAgICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IHN0YXJ0
VGltZTsKICAgICB9CiAgICAgCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3QnVmZmVyID0gbnVs
bHB0cjsKLSAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1Rp
bWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZv
LmRhdGEoKSwgJm5ld0J1ZmZlcik7Ci0gICAgaWYgKGVycm9yKQorICAgIGlmIChhdXRvIGVycm9y
ID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcikp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlciBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nIGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAg
cmV0dXJuIGFkb3B0Q0YobmV3QnVmZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
QnVmZmVyKQogewotICAgIEFTU0VSVChtX3ZpZGVvSW5wdXQpOwotICAgIGlmIChtX2lzU3RvcHBl
ZCkKKyAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29yKQogICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpIHsKLSAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRX
cml0aW5nXSkgewotICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0
YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKVttX3dyaXRlciBlcnJvcl0p
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIFttX3dyaXRlciBzdGFy
dFNlc3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xv
Y2soKSldOwotICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAgICAgICAgUmVm
UHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAg
ICAgICAgW21fdmlkZW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX3Zp
ZGVvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFb
bV92aWRlb0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVv
TG9jayk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBtX3ZpZGVvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIu
dW5sb2NrRWFybHkoKTsKLSAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgYXBwZW5k
U2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQg
JiYgbV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgW21fdmlk
ZW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5n
VmlkZW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIAogICAgIGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1l
ID0gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7CiAg
ICAgaWYgKCFidWZmZXJXaXRoQ3VycmVudFRpbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOwotICAgIG1fdmlkZW9CdWZmZXJQb29s
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcldpdGhDdXJyZW50VGltZSkpOworICAgIFttX3ZpZGVvQ29t
cHJlc3NvciBhZGRTYW1wbGVCdWZmZXI6YnVmZmVyV2l0aEN1cnJlbnRUaW1lLmdldCgpXTsKIH0K
IAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRl
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbikKQEAgLTI4MCw4ICszNTAsMTAgQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01G
b3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb24KICAg
ICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRp
b24pOwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0ID0gbnVsbHB0cjsKICAgICBh
dXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24sIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXQp
OwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihmb3JtYXQpOwogfQogCkBA
IC0yOTAsOTUgKzM2Miw2NiBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZl
clJlZj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzYwogICAgIENNVGltZSBz
dGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsKICAg
ICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBudWxscHRyOwogICAgIGF1dG8gZXJy
b3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgZm9ybWF0LCBzYW1wbGVD
b3VudCwgc3RhcnRUaW1lLCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpCisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFj
a2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKIH0KIAog
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIo
Y29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVDb3Vu
dCkKIHsKLSAgICBBU1NFUlQobV9hdWRpb0lucHV0KTsKLSAgICBpZiAoKCFtX2hhc1N0YXJ0ZWRX
cml0aW5nICYmIG1fdmlkZW9JbnB1dCkgfHwgbV9pc1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsK
ICAgICBhdXRvIGZvcm1hdCA9IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oZGVzY3JpcHRp
b24pOwogICAgIGlmICghZm9ybWF0KQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1faXNGaXJz
dEF1ZGlvU2FtcGxlKSB7Ci0gICAgICAgIGlmICghbV92aWRlb0lucHV0KSB7Ci0gICAgICAgICAg
ICAvLyBhdWRpby1vbmx5IHJlY29yZGluZy4KLSAgICAgICAgICAgIGlmICghW21fd3JpdGVyIHN0
YXJ0V3JpdGluZ10pIHsKLSAgICAgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgW21fd3JpdGVy
IHN0YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRp
bWVDbG9jaygpKV07Ci0gICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAg
ICAgICAgfQotICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IGZhbHNlOwotICAgICAgICBS
ZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwot
ICAgICAgICBbbV9hdWRpb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1f
YXVkaW9QdWxsUXVldWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAo
IVttX2F1ZGlvSW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVk
aW9Mb2NrKTsKLSAgICAgICAgICAgICAgICBpZiAobV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgp
KQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IG1fYXVkaW9CdWZmZXJQb29sLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGxvY2tl
ci51bmxvY2tFYXJseSgpOwotICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgYXBwZW5kU2Ft
cGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07Ci0gICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsKLSAg
ICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IG1hcmtBc0ZpbmlzaGVkXTsKLSAgICAg
ICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfV07Ci0gICAgfQogCiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBj
cmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMoZm9ybWF0LmdldCgp
LCBzYW1wbGVDb3VudCk7CiAgICAgaWYgKCFzYW1wbGVCdWZmZXIpCiAgICAgICAgIHJldHVybjsK
KwogICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9C
dWZmZXJMaXN0KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0
KCkpOwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTVNhbXBs
ZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0IGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2F1ZGlvTG9jayk7Ci0gICAgbV9hdWRpb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUo
c2FtcGxlQnVmZmVyKSk7CisgICAgW21fYXVkaW9Db21wcmVzc29yIGFkZFNhbXBsZUJ1ZmZlcjpz
YW1wbGVCdWZmZXIuZ2V0KCldOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpzdG9wUmVjb3JkaW5nKCkKIHsKICAgICBpZiAobV9pc1N0b3BwZWQpCiAgICAgICAgIHJldHVy
bjsKLQorICAgIAogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKICAgICBpZiAoIW1faGFzU3RhcnRl
ZFdyaXRpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10g
PT0gQVZBc3NldFdyaXRlclN0YXR1c1dyaXRpbmcpOwotICAgIGlmIChtX3ZpZGVvSW5wdXQpCi0g
ICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLndhaXQoKTsKIAotICAgIGlmICht
X2F1ZGlvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQo
KTsKKyAgICBbbV92aWRlb0NvbXByZXNzb3IgZmluaXNoXTsKKyAgICBbbV9hdWRpb0NvbXByZXNz
b3IgZmluaXNoXTsKKworICAgIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKworICAg
IFttX3dyaXRlciBmbHVzaF07CiAKICAgICBtX2lzU3RvcHBpbmcgPSB0cnVlOwogICAgIFttX3dy
aXRlciBmaW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrUHRyID0g
bWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgewotICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCB3ZWFrUHRyID0gV1RGTW92ZSh3ZWFrUHRyKSwgYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1B0ciA9IFdURk1vdmUod2Vha1B0cildKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmICht
X2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgaWYgKG1fZmV0Y2hEYXRh
Q29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdURk1v
dmUobV9kYXRhKTsKICAgICAgICAgICAgICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9k
YXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBtX2lz
U3RvcHBlZCA9IGZhbHNlOwogICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IGZhbHNl
OwotICAgICAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSB0cnVlOwogICAgICAgICAgICAg
Y2xlYXIoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZS5z
aWduYWwoKTsKICAgICB9XTsKLSAgICBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmUud2FpdCgpOwog
fQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTM5Miw2ICs0MzUsMjUgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEIKICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCit2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
eworICAgIGlmICghbV9kYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIHNpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZGF0YS0+YXBw
ZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjph
cHBlbmREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghbV9kYXRh
KSB7CisgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBtX2RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxl
QmFzZWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzNm
YjFlZWFlN2Q0YTQ1NWUzNTRhMTZlYjZhNjg0NjhlZDQxMmU0ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbQpAQCAtMCwwICsxLDM4MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisj
aW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYkF1ZGlv
QnVmZmVyTGlzdC5oIgorI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyLmg+Cisj
aW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJJbnB1dC5oPgorI2luY2x1ZGUgPHBh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9B
VkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCisjdW5kZWYgQVZFbmNvZGVyQml0UmF0ZUtleQorI2Rl
ZmluZSBBVkVuY29kZXJCaXRSYXRlS2V5IGdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJh
Y2soKQorI3VuZGVmIEFWRm9ybWF0SURLZXkKKyNkZWZpbmUgQVZGb3JtYXRJREtleSBnZXRBVkZv
cm1hdElES2V5V2l0aEZhbGxiYWNrKCkKKyN1bmRlZiBBVk51bWJlck9mQ2hhbm5lbHNLZXkKKyNk
ZWZpbmUgQVZOdW1iZXJPZkNoYW5uZWxzS2V5IGdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhG
YWxsYmFjaygpCisjdW5kZWYgQVZTYW1wbGVSYXRlS2V5CisjZGVmaW5lIEFWU2FtcGxlUmF0ZUtl
eSBnZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJhY2soKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3VzaW5nIG5hbWVzcGFjZSBQQUw7CisKK3N0YXRpYyBOU1N0cmluZyAqZ2V0QVZGb3JtYXRJ
REtleVdpdGhGYWxsYmFjaygpCit7CisgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25f
QVZGb3JtYXRJREtleSgpKQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FW
Rm9ybWF0SURLZXkoKTsKKworICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRv
IGxvYWQgQVZGb3JtYXRJREtleSIpOworICAgIHJldHVybiBAIkFWRm9ybWF0SURLZXkiOworfQor
CitzdGF0aWMgTlNTdHJpbmcgKmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygp
Cit7CisgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxz
S2V5KCkpCisgICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNo
YW5uZWxzS2V5KCk7CisKKyAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBs
b2FkIEFWTnVtYmVyT2ZDaGFubmVsc0tleSIpOworICAgIHJldHVybiBAIkFWTnVtYmVyT2ZDaGFu
bmVsc0tleSI7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZh
bGxiYWNrKCkKK3sKKyAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlNhbXBsZVJh
dGVLZXkoKSkKKyAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlNhbXBsZVJh
dGVLZXkoKTsKKworICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQg
QVZTYW1wbGVSYXRlS2V5Iik7CisgICAgcmV0dXJuIEAiQVZTYW1wbGVSYXRlS2V5IjsKK30KKwor
c3RhdGljIE5TU3RyaW5nICpnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKK3sK
KyAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCkp
CisgICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtl
eSgpOworCisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkVu
Y29kZXJCaXRSYXRlS2V5Iik7CisgICAgcmV0dXJuIEAiQVZFbmNvZGVyQml0UmF0ZUtleSI7Cit9
CisKK1JlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7
CisgICAgTlNTdHJpbmcgKmRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeShAInZpZGVvcyIpOworICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiLyVsbGQubXA0IiwgQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhv
c3RUaW1lQ2xvY2soKSkudmFsdWVdOworICAgIE5TU3RyaW5nICpwYXRoID0gW2RpcmVjdG9yeSBz
dHJpbmdCeUFwcGVuZGluZ1N0cmluZzpmaWxlbmFtZV07CisKKyAgICBOU1VSTCAqb3V0cHV0VVJM
ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXTsKKyAgICBTdHJpbmcgZmlsZVBhdGggPSBb
cGF0aCBVVEY4U3RyaW5nXTsKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBhdXRvIGF2
QXNzZXRXcml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkg
aW5pdFdpdGhVUkw6b3V0cHV0VVJMIGZpbGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJy
b3JdKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBj
b2RlICVsZCIsIChsb25nKWVycm9yLmNvZGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBhdXRvIHdyaXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoV1RGTW92ZShhdkFzc2V0V3JpdGVyKSwgV1RGTW92ZShmaWxlUGF0aCkpKTsKKwor
ICAgIGlmIChoYXNBdWRpbyAmJiAhd3JpdGVyLT5zZXRBdWRpb0lucHV0KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgeworICAgICAgICBpZiAo
IXdyaXRlci0+c2V0VmlkZW9JbnB1dCh3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBXVEZNb3ZlKHdyaXRlcik7Cit9CisKK01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRh
aW5QdHI8QVZBc3NldFdyaXRlcj4mJiBhdkFzc2V0V3JpdGVyLCBTdHJpbmcmJiBmaWxlUGF0aCkK
KyAgICA6IG1fd3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRlcikpCisgICAgLCBtX3BhdGgoV1RG
TW92ZShmaWxlUGF0aCkpCit7Cit9CisKK01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQoreworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKCkKK3sKKyAgICBpZiAobV92aWRlb0lucHV0
KSB7CisgICAgICAgIG1fdmlkZW9JbnB1dC5jbGVhcigpOworICAgICAgICBkaXNwYXRjaF9yZWxl
YXNlKG1fdmlkZW9QdWxsUXVldWUpOworICAgIH0KKyAgICBpZiAobV9hdWRpb0lucHV0KSB7Cisg
ICAgICAgIG1fYXVkaW9JbnB1dC5jbGVhcigpOworICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1f
YXVkaW9QdWxsUXVldWUpOworICAgIH0KKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3Jp
dGVyLmNsZWFyKCk7CisKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorewor
ICAgIEFTU0VSVCghbV92aWRlb0lucHV0KTsKKyAgICAKKyAgICBOU0RpY3Rpb25hcnkgKmNvbXBy
ZXNzaW9uUHJvcGVydGllcyA9IEB7CisgICAgICAgIEFWVmlkZW9BdmVyYWdlQml0UmF0ZUtleSA6
IFtOU051bWJlciBudW1iZXJXaXRoSW50OndpZHRoICogaGVpZ2h0ICogMTJdLAorICAgICAgICBB
VlZpZGVvRXhwZWN0ZWRTb3VyY2VGcmFtZVJhdGVLZXkgOiBAKDMwKSwKKyAgICAgICAgQVZWaWRl
b01heEtleUZyYW1lSW50ZXJ2YWxLZXkgOiBAKDEyMCksCisgICAgICAgIEFWVmlkZW9Qcm9maWxl
TGV2ZWxLZXkgOiBBVlZpZGVvUHJvZmlsZUxldmVsSDI2NE1haW5BdXRvTGV2ZWwKKyAgICB9Owor
CisgICAgTlNEaWN0aW9uYXJ5ICp2aWRlb1NldHRpbmdzID0gQHsKKyAgICAgICAgQVZWaWRlb0Nv
ZGVjS2V5OiBBVlZpZGVvQ29kZWNIMjY0LAorICAgICAgICBBVlZpZGVvV2lkdGhLZXk6IFtOU051
bWJlciBudW1iZXJXaXRoSW50OndpZHRoXSwKKyAgICAgICAgQVZWaWRlb0hlaWdodEtleTogW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6aGVpZ2h0XSwKKyAgICAgICAgQVZWaWRlb0NvbXByZXNzaW9u
UHJvcGVydGllc0tleTogY29tcHJlc3Npb25Qcm9wZXJ0aWVzCisgICAgfTsKKyAgICAKKyAgICBt
X3ZpZGVvSW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFu
Y2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOnZp
ZGVvU2V0dGluZ3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsKKyAgICBbbV92aWRlb0lucHV0IHNl
dEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOworICAgIAorICAgIGlmICghW21fd3Jp
dGVyIGNhbkFkZElucHV0Om1fdmlkZW9JbnB1dC5nZXQoKV0pIHsKKyAgICAgICAgbV92aWRlb0lu
cHV0ID0gbnVsbHB0cjsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0
aGUgdmlkZW8gaW5wdXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVy
Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgW21fd3JpdGVyIGFkZElucHV0
Om1fdmlkZW9JbnB1dC5nZXQoKV07CisgICAgbV92aWRlb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1
ZXVlX2NyZWF0ZSgiV2ViQ29yZVZpZGVvUmVjb3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFU
Q0hfUVVFVUVfU0VSSUFMKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6c2V0QXVkaW9JbnB1dCgpCit7CisgICAgQVNTRVJUKCFtX2F1ZGlv
SW5wdXQpOworCisgICAgTlNEaWN0aW9uYXJ5ICphdWRpb1NldHRpbmdzID0gQHsKKyAgICAgICAg
QVZFbmNvZGVyQml0UmF0ZUtleSA6IEAoMjgwMDApLAorICAgICAgICBBVkZvcm1hdElES2V5IDog
QChrQXVkaW9Gb3JtYXRNUEVHNEFBQyksCisgICAgICAgIEFWTnVtYmVyT2ZDaGFubmVsc0tleSA6
IEAoMSksCisgICAgICAgIEFWU2FtcGxlUmF0ZUtleSA6IEAoMjIwNTApCisgICAgfTsKKworICAg
IG1fYXVkaW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0
YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6
YXVkaW9TZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5pbF0pOworICAgIFttX2F1ZGlvSW5wdXQg
c2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07CisgICAgCisgICAgaWYgKCFbbV93
cml0ZXIgY2FuQWRkSW5wdXQ6bV9hdWRpb0lucHV0LmdldCgpXSkgeworICAgICAgICBtX2F1ZGlv
SW5wdXQgPSBudWxscHRyOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
InRoZSBhdWRpbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0
ZXIiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBbbV93cml0ZXIgYWRkSW5w
dXQ6bV9hdWRpb0lucHV0LmdldCgpXTsKKyAgICBtX2F1ZGlvUHVsbFF1ZXVlID0gZGlzcGF0Y2hf
cXVldWVfY3JlYXRlKCJXZWJDb3JlQXVkaW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQ
QVRDSF9RVUVVRV9TRVJJQUwpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5l
IFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50
VGltZVN0YW1wKENNU2FtcGxlQnVmZmVyUmVmIG9yaWdpbmFsQnVmZmVyKQoreworICAgIENNVGlt
ZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsK
KyAgICBDTUl0ZW1Db3VudCBjb3VudCA9IDA7CisgICAgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVU
aW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIDAsIG5pbCwgJmNvdW50KTsKKyAgICAKKyAg
ICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3VudCk7CisgICAgQ01TYW1w
bGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0
aW1lSW5mby5kYXRhKCksICZjb3VudCk7CisgICAgCisgICAgZm9yIChDTUl0ZW1Db3VudCBpID0g
MDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1w
ID0ga0NNVGltZUludmFsaWQ7CisgICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVT
dGFtcCA9IHN0YXJ0VGltZTsKKyAgICB9CisgICAgCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3
QnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVD
b3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291
bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcik7CisgICAgaWYgKGVycm9yKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRDRihuZXdCdWZmZXIpOworfQorCit2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihD
TVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIpCit7CisgICAgQVNTRVJUKG1fdmlkZW9JbnB1
dCk7CisgICAgaWYgKG1faXNTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1f
aGFzU3RhcnRlZFdyaXRpbmcpIHsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5n
XSkgeworICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBm
YWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKVttX3dyaXRlciBlcnJvcl0pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Np
b25BdFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSld
OworICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKKyAgICAgICAgUmVmUHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKKyAgICAgICAg
W21fdmlkZW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX3ZpZGVvUHVs
bFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpXSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgaWYgKCFbbV92aWRl
b0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7
CisgICAgICAgICAgICAgICAgaWYgKG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX3Zp
ZGVvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsKKyAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2Nr
RWFybHkoKTsKKyAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgYXBwZW5kU2FtcGxl
QnVmZmVyOmJ1ZmZlci5nZXQoKV0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfSB3aGlsZSAodHJ1ZSk7CisgICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV92
aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgW21fdmlkZW9JbnB1
dCBtYXJrQXNGaW5pc2hlZF07CisgICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9T
ZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBs
ZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKCFidWZm
ZXJXaXRoQ3VycmVudFRpbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV92aWRlb0xvY2spOworICAgIG1fdmlkZW9CdWZmZXJQb29sLmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcldpdGhDdXJyZW50VGltZSkpOworfQorCitzdGF0aWMgaW5saW5lIFJldGFpblB0
cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQoreworICAgIGF1dG8gYmFz
aWNEZXNjcmlwdGlvbiA9IFdURjo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
bio+KGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CisgICAg
Q01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXQgPSBudWxscHRyOworICAgIGF1dG8gZXJyb3Ig
PSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFz
aWNEZXNjcmlwdGlvbiwgMCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdCk7CisgICAgaWYg
KGVycm9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRDRihmb3Jt
YXQpOworfQorCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3Jl
YXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZm9ybWF0LCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgQ01UaW1lIHN0YXJ0
VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOworICAgIENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9
IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9j
YXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQsIHNhbXBsZUNvdW50
LCBzdGFydFRpbWUsIE5VTEwsICZzYW1wbGVCdWZmZXIpOworICAgIGlmIChlcnJvcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKK30K
Kwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZm
ZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVD
b3VudCkKK3sKKyAgICBBU1NFUlQobV9hdWRpb0lucHV0KTsKKyAgICBpZiAoKCFtX2hhc1N0YXJ0
ZWRXcml0aW5nICYmIG1fdmlkZW9JbnB1dCkgfHwgbV9pc1N0b3BwZWQpCisgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIGZvcm1hdCA9IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oZGVzY3Jp
cHRpb24pOworICAgIGlmICghZm9ybWF0KQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1faXNG
aXJzdEF1ZGlvU2FtcGxlKSB7CisgICAgICAgIGlmICghbV92aWRlb0lucHV0KSB7CisgICAgICAg
ICAgICAvLyBhdWRpby1vbmx5IHJlY29yZGluZy4KKyAgICAgICAgICAgIGlmICghW21fd3JpdGVy
IHN0YXJ0V3JpdGluZ10pIHsKKyAgICAgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgW21fd3Jp
dGVyIHN0YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9z
dFRpbWVDbG9jaygpKV07CisgICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IGZhbHNlOworICAgICAg
ICBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlz
OworICAgICAgICBbbV9hdWRpb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVl
Om1fYXVkaW9QdWxsUXVldWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyldIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIVttX2F1ZGlvSW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
YXVkaW9Mb2NrKTsKKyAgICAgICAgICAgICAgICBpZiAobV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0
eSgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1
ZmZlciA9IG1fYXVkaW9CdWZmZXJQb29sLnRha2VGaXJzdCgpOworICAgICAgICAgICAgICAgIGxv
Y2tlci51bmxvY2tFYXJseSgpOworICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgYXBwZW5k
U2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07CisgICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsK
KyAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IG1hcmtBc0ZpbmlzaGVkXTsKKyAg
ICAgICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS5zaWduYWwoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfV07CisgICAgfQorCisgICAgYXV0byBzYW1wbGVCdWZmZXIg
PSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMoZm9ybWF0Lmdl
dCgpLCBzYW1wbGVDb3VudCk7CisgICAgaWYgKCFzYW1wbGVCdWZmZXIpCisgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlv
QnVmZmVyTGlzdChzYW1wbGVCdWZmZXIuZ2V0KCksIGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkubGlz
dCgpKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9hdWRpb0xvY2spOworICAgIG1fYXVkaW9CdWZmZXJQb29sLmFwcGVuZChX
VEZNb3ZlKHNhbXBsZUJ1ZmZlcikpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpzdG9wUmVjb3JkaW5nKCkKK3sKKyAgICBpZiAobV9pc1N0b3BwZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKyAgICBpZiAoIW1faGFzU3RhcnRlZFdy
aXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0g
QVZBc3NldFdyaXRlclN0YXR1c1dyaXRpbmcpOworICAgIGlmIChtX3ZpZGVvSW5wdXQpCisgICAg
ICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLndhaXQoKTsKKworICAgIGlmIChtX2F1
ZGlvSW5wdXQpCisgICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsK
KworICAgIG1faXNTdG9wcGluZyA9IHRydWU7CisgICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdX
aXRoQ29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhpcyld
KCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBX
VEZNb3ZlKHdlYWtQdHIpLCBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShtX3BhdGgpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFs
c2U7CisgICAgICAgICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikKKyAgICAg
ICAgICAgICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZm
ZXIpOworCisgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IGZhbHNlOworICAgICAgICAgICAgbV9o
YXNTdGFydGVkV3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1w
bGUgPSB0cnVlOworICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1f
ZmluaXNoV3JpdGluZ1NlbWFwaG9yZS5zaWduYWwoKTsKKyAgICB9XTsKKyAgICBtX2ZpbmlzaFdy
aXRpbmdTZW1hcGhvcmUud2FpdCgpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAobV9pc1N0b3BwaW5nKSB7Cisg
ICAgICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gYnVmZmVyID0gV1RG
TW92ZShtX2RhdGEpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjdlYzA1OGY1YjI3NTllNTYxMjFhNTFiYTFk
NWIzOWRhYWVlYWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQorCisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisKK3R5cGVk
ZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKKworQGlu
dGVyZmFjZSBXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgOiBOU09iamVjdAorCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlY1R5cGU6KENNVmlkZW9Db2RlY1R5cGUpIG91dHB1dENv
ZGVjVHlwZSBjYWxsYmFjazooQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaykgY2FsbGJhY2sg
Y2FsbGJhY2tPYmplY3Q6KHZvaWQqKSBjYWxsYmFja09iamVjdDsKKy0gKHZvaWQpZmluaXNoOwor
LSAodm9pZClhZGRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNidWY7CistIChDTVNh
bXBsZUJ1ZmZlclJlZilwaWNrT3V0cHV0U2FtcGxlQnVmZmVyOworLSAoQ01TYW1wbGVCdWZmZXJS
ZWYpdGFrZU91dHB1dFNhbXBsZUJ1ZmZlcjsKKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVhZGY0
OTMwZTI0NTk5ZDM1Nzg0ZDVkM2I3MmMxZDc1M2Q1N2UzNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tCkBAIC0wLDAgKzEsMTczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0ICJM
b2dnaW5nLmgiCisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFZpZGVvVG9vbGJveC9WVENvbXByZXNzaW9u
U2Vzc2lvbi5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitAaW1wbGVtZW50YXRpb24gV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIHsKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIG1fb3V0cHV0QnVmZmVyUXVldWU7CisgICAgZGlz
cGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgQk9PTCBtX2lzRW5jb2Rp
bmc7CisgICAgUmV0YWluUHRyPFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmPiBtX3Z0U2Vzc2lvbjsK
KyAgICBDTVZpZGVvQ29kZWNUeXBlIG1fb3V0cHV0Q29kZWNUeXBlOworICAgIEZsb2F0NjQgbV9t
YXhLZXlGcmFtZUludGVydmFsRHVyYXRpb247CisgICAgTlNJbnRlZ2VyIG1fZXhwZWN0ZWRGcmFt
ZVJhdGU7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVjVHlwZTooQ01WaWRlb0Nv
ZGVjVHlwZSkgb3V0cHV0Q29kZWNUeXBlIGNhbGxiYWNrOihDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNh
bGxiYWNrKSBjYWxsYmFjayBjYWxsYmFja09iamVjdDoodm9pZCopIGNhbGxiYWNrT2JqZWN0Cit7
CisgICAgQVNTRVJUKG91dHB1dENvZGVjVHlwZSk7CisKKyAgICBzZWxmID0gW3N1cGVyIGluaXRd
OworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gZXJyb3Ig
PSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVl
dWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJm1fb3V0cHV0QnVmZmVy
UXVldWUpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIldlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB1bmFibGUgdG8gY3JlYXRl
IGJ1ZmZlciBxdWV1ZSAlZCIsIGVycm9yKTsKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07CisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2Vy
KG1fb3V0cHV0QnVmZmVyUXVldWUsIGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVy
UXVldWVUcmlnZ2VyX1doZW5EYXRhQmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywgTlVMTCk7CisK
KyAgICBtX3NlcmlhbERpc3BhdGNoUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoW0AiY29t
LmFwcGxlLldlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIgVVRGOFN0cmluZ10sIERJU1BB
VENIX1FVRVVFX1NFUklBTCk7CisgICAgbV9vdXRwdXRDb2RlY1R5cGUgPSBvdXRwdXRDb2RlY1R5
cGU7CisgICAgbV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24gPSAyLjA7CisgICAgbV9leHBl
Y3RlZEZyYW1lUmF0ZSA9IDMwOworICAgIG1faXNFbmNvZGluZyA9IFlFUzsKKworICAgIHJldHVy
biBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAobV9zZXJpYWxEaXNwYXRj
aFF1ZXVlKQorICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSk7
CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZmluaXNoCit7CisgICAgZGlz
cGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGF1dG8gZXJyb3Ig
PSBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzKG1fdnRTZXNzaW9uLmdldCgpLCBr
Q01UaW1lSW52YWxpZCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRp
YVN0cmVhbSwgIldlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vz
c2lvbkNvbXBsZXRlRnJhbWVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgICAgIGVy
cm9yID0gQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1ZSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIldlYlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKworICAgICAgICBtX2lzRW5jb2RpbmcgPSBOTzsKKyAgICB9KTsK
K30KKworc3RhdGljIHZvaWQgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwg
dm9pZCosIE9TU3RhdHVzIHN0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVy
UmVmIGJ1ZmZlcikKK3sKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihzdGF0dXMsIE1lZGlhU3Ry
ZWFtLCAiV2ViVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHZpZGVvQ29tcHJlc3Npb25DYWxs
YmFjayBzdGF0dXMgaXMgJWQiLCBzdGF0dXMpOworICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciAqY29t
cHJlc3NvciA9IChXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgKilyZWZDb247CisKKyAg
ICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUoY29tcHJlc3Nvci0+bV9vdXRwdXRC
dWZmZXJRdWV1ZSwgYnVmZmVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVk
aWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVu
cXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cit9CisKKy0gKEJPT0wpaW5pdENvbXByZXNz
aW9uU2Vzc2lvbjooQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmKWZvcm1hdERlc2NyaXB0aW9u
Cit7CisgICAgQ01WaWRlb0RpbWVuc2lvbnMgZGltZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXREZXNj
cmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJTcGVjaWZpY2F0aW9ucyA9IG5pbDsKKyNlbHNl
CisgICAgTlNEaWN0aW9uYXJ5ICplbmNvZGVyU3BlY2lmaWNhdGlvbnMgPSBAeyhfX2JyaWRnZSBO
U1N0cmluZyAqKWtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2Nl
bGVyYXRlZFZpZGVvRW5jb2RlcjpAWUVTfTsKKyNlbmRpZgorCisgICAgVlRDb21wcmVzc2lvblNl
c3Npb25SZWYgdnRTZXNzaW9uOworICAgIGF1dG8gZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vzc2lv
bkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25z
LmhlaWdodCwgbV9vdXRwdXRDb2RlY1R5cGUsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZW5j
b2RlclNwZWNpZmljYXRpb25zLCBOVUxMLCBOVUxMLCB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2ss
IChfX2JyaWRnZSB2b2lkICopc2VsZiwgJnZ0U2Vzc2lvbik7CisgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiV2ViVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorICAgIG1fdnRTZXNzaW9uID0gYWRv
cHRDRih2dFNlc3Npb24pOworCisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0
U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwga0NGQm9v
bGVhblRydWUpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwg
IldlYlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRD
b21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
ICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENv
bXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uLCAoX19icmlk
Z2UgQ0ZUeXBlUmVmKUAobV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24pKTsKKyAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29t
cHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdlIENGVHlwZVJl
ZilAKG1fZXhwZWN0ZWRGcmFtZVJhdGUpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJv
ciwgTWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9u
U2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Np
b25QcmVwYXJlVG9FbmNvZGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCkpOworICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIldlYlZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKHZvaWQpcHJvY2Vz
c1NhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpYnVmZmVyCit7CisgICAgaWYgKCFtX3Z0
U2Vzc2lvbikgeworICAgICAgICBpZiAoIVtzZWxmIGluaXRDb21wcmVzc2lvblNlc3Npb246Q01T
YW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpXSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gQ01TYW1wbGVCdWZmZXJHZXRJ
bWFnZUJ1ZmZlcihidWZmZXIpOworICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01T
YW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICBhdXRvIGR1
cmF0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgIGF1dG8gZXJy
b3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKG1fdnRTZXNzaW9uLmdldCgpLCBp
bWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgTlVMTCwgKF9fYnJp
ZGdlIHZvaWQgKilzZWxmLCBOVUxMKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwg
TWVkaWFTdHJlYW0sICJXZWJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lv
blNlc3Npb25FbmNvZGVGcmFtZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKK30KKworLSAodm9p
ZClhZGRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKWJ1ZmZlcgoreworICAgIGRpc3Bh
dGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBpZiAoIW1faXNFbmNv
ZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbc2VsZiBwcm9jZXNzU2FtcGxl
QnVmZmVyOmJ1ZmZlcl07CisgICAgfSk7Cit9CisKKy0gKENNU2FtcGxlQnVmZmVyUmVmKXBpY2tP
dXRwdXRTYW1wbGVCdWZmZXIKK3sKKyAgICByZXR1cm4gKENNU2FtcGxlQnVmZmVyUmVmKShjb25z
dF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0SGVhZChtX291dHB1dEJ1ZmZlclF1ZXVlKSkp
OworfQorCistIChDTVNhbXBsZUJ1ZmZlclJlZil0YWtlT3V0cHV0U2FtcGxlQnVmZmVyCit7Cisg
ICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJR
dWV1ZURlcXVldWVBbmRSZXRhaW4obV9vdXRwdXRCdWZmZXJRdWV1ZSkpKTsKK30KKworQGVuZAor
CisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388661</attachid>
            <date>2020-01-24 02:00:42 -0800</date>
            <delta_ts>2020-01-27 05:02:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206582-20200124110039.patch</filename>
            <type>text/plain</type>
            <size>125583</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ5ZDcxZDkzNTM5YzNm
ZWU2NGY3NWEyZWM2MThkNzZiYmQ0ZmVkMS4uMDFjYjc3MjQ3ODc2NGFiNGUyZWE2YzcxOGY3ZTMy
Yzc4YWJlYmFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTAxLTIyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSBhbGxvd3MgdG8gZ3JhYiByZWNvcmRlZCBkYXRhIHdoZW5ldmVyIHdhbnRlZC4KKyAgICAgICAg
VGhpcyBkZWxlZ2F0ZSByZXF1aXJlcyBwYXNzaW5nIGNvbXByZXNzZWQgc2FtcGxlcyB0byBBVkFz
c2V0V3JpdGVyLgorICAgICAgICBJbXBsZW1lbnQgdmlkZW8gZW5jb2RpbmcgYW5kIGF1ZGlvIGVu
Y29kaW5nIGluIGRlZGljYXRlZCBjbGFzc2VzIGFuZCB1c2UgdGhlc2UgY2xhc3NlcyBiZWZvcmUg
YWRkaW5nIGJ1ZmZlcnMgdG8gQVZBc3NldFdyaXRlci4KKyAgICAgICAgU2luY2UgQVZBc3NldFdy
aXRlckRlbGVnYXRlIGlzIEFwcGxlIFNESyBvbmx5LCBrZWVwIHRoZSBleGlzdGluZyBmaWxlIGJh
c2VkIGltcGxlbWVudGF0aW9uIGFzIGEgZmFsbGJhY2suCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRh
UHJvYyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6Omlu
aXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y29tcHV0ZUJ1ZmZlclNpemVGb3JB
dWRpb0Zvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z3JhZHVhbERlY29kZXJSZWZyZXNoQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpzYW1wbGVCdWZmZXJX
aXRoTnVtUGFja2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm92aWRlU291cmNlRGF0YU51
bU91dHB1dFBhY2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNh
bXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZEF1
ZGlvU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9T
YW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6flZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0Q29tcHJlc3Npb25TZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNh
bXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIpOgorCiAyMDIwLTAxLTIy
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gRG8gbm90
IGNyZWF0ZSBhIEZvcm1hdHRpbmdDb250ZXh0IHVubGVzcyB0aGVyZSdzIGNvbnRlbnQgdG8gbGF5
b3V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggODQwZjUxNjE4NTBlMTk2Y2YxYTBiMjgxNDE1NGVh
NDg5ZDRhMTBlZS4uOGJkOGJmMDVlYmJlZjA0ODJmMWI1ZmFjMmI2MTk2MjhkZjE4ODhhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDEtMjIgIHlvdWVubiBmYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0
ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvZnQgbGluayBtYWNyb3MgZm9yIFZp
ZGVvVG9vbGJveCBhbmQgQXVkaW9Ub29sYm94LgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNw
cDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmg6IEFkZGVk
LgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHA6CisgICAgICAgICogcGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg6CisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNv
ZnRMaW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5r
Lmg6IEFkZGVkLgorCiAyMDIwLTAxLTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIG1pc3NpbmcgTlNfTk9FU0NBUEUgdG8gQ0ZOZXR3
b3JrIFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA0ZDM1NWU3ODAxMThhOTg4MWYwOWJlZTU0YWU2NWUzNGU5N2U1
NTI2Li5mOTA5MmFhZmQ3OTQ4MjFmNGUzZTk0NjE4NDE1MjcyNWJjNDEwNWIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTIyICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1w
bGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmNyZWF0ZSk6CisgICAgICAg
IFVzZSBuZXcgY29uc3RydWN0b3IuCisKIDIwMjAtMDEtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbSVBDIEhhcmRlbmluZ10gT25seSBwcm9jZXNzIE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2VzcyBtZXNzYWdlcyB3aGVuIHNlbnQgYnkgdGhlIFVJUHJvY2Vzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGE0MTlhYzk4YjRkMTkyYzlmMzYxZGIxOTc3M2YyYjZmYjhlMGM5Y2EuLjNmODE0NmFkMTU1
YWZjYzA4NThkNjhiM2QyNzRlMzkyZTBmZjQ3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNSw2ICsxMTUsMTAgQEAKIAkJ
MkUxMzQyQ0MyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNBMjE1QUExMEEwMDcxOTlE
MiAvKiBVSUtpdFNvZnRMaW5rLmggKi87IH07CiAJCTJFMTM0MkNEMjE1QUExMEEwMDcxOTlEMiAv
KiBVSUtpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkUxMzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi87
IH07CiAJCTMxMzA4QjE0MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMwOEIxMzIwQTIx
NzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovOyB9OworCQk0MTZFOTk1MzIzREFF
NkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTEyM0RBRTZCRDAwRTg3MUNCIC8q
IEF1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCAqLzsgfTsKKwkJNDE2RTk5NTQyM0RBRTZCRTAwRTg3
MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29s
Ym94U29mdExpbmsuaCAqLzsgfTsKKwkJNDE2RTk5NTcyM0RBRUZGODAwRTg3MUNCIC8qIFZpZGVv
VG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNkU5OTU1MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGlu
ay5jcHAgKi87IH07CisJCTQxNkU5OTU4MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggKi87IH07
CiAJCTQ0Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Mjk1NkNDMjE4QTcyREUwMDgwREI1
NCAvKiBSZXZlYWxTUEkuaCAqLzsgfTsKIAkJNDQ1MEZDOUYyMUY1RjYwMjAwNERGQTU2IC8qIFF1
aWNrTG9va1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1t
ICovOyB9OwogCQk0NDUwRkNBMDIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlF
MjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovOyB9OwpAQCAtMjkxLDYg
KzI5NSwxMCBAQAogCQkyRTEzNDJDQjIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJS2l0U29mdExpbmsu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzA4QjEzMjBBMjE3MDUwMDNGQjky
OSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVByZXZpZXdTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxMTlBNzgyMENDQjVGRjAwMkM2REM5
IC8qIFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJL
aXRUYXJnZXRDb25kaXRpb25hbHMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGlu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkU5OTUyMjNEQUU2QkUwMEU4
NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExp
bmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1NjIzREFFRkY3MDBF
ODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0IC8qIFJldmVhbFNQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZXZlYWxTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVpY2tMb29rU29mdExp
bmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlFMjFGNUY2MDIwMDRE
RkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBRdWlja0xvb2tTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTI0LDggKzUzMiwxMiBAQAogCQkwQ0Y5OUNBNTFGNzM4NDFDMDA3RUU3OTMgLyogY2YgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNkU5OTUxMjNEQUU2
QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi8sCisJCQkJNDE2RTk5NTIy
M0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi8sCiAJCQkJMENGOTlD
QTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLywKIAkJCQkwQ0Y5
OUNBNzFGNzM4NDM3MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExpbmsuaCAqLywKKwkJCQk0MTZF
OTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovLAorCQkJ
CTQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MTUs
NiArNzI3LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThCMjJCMzU5ODkwMDhEMEU4QiAv
KiBBcHBTU09Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDYyMkI4NTRBQjAw
MzAxNDNDIC8qIEFwcFNTT1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTk5NTQyM0RBRTZC
RTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDAyRTkzQzIwNTZGQUE3MDBBMTM3OTcgLyogQXVkaW9Ub29sYm94U1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzJBMTA3ODIyQjQ1NkY1MDBGNDEwQzggLyogQXV0aEtpdFNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDc3RTg3QjIyMjZBNDYwMzAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRM
aW5rLmggaW4gSGVhZGVycyAqLywKQEAgLTgzOCw2ICs4NTEsNyBAQAogCQkJCTJFMTM0MkNDMjE1
QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzVB
RjkyMjFGNDNBNEM3MDAyRUFDMDIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
MkRBMTQ3MUYzQkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0MTZFOTk1ODIzREFFRkY4MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTU5MUYzQkVCNDkwMERCQzMxNyAvKiBXZWJGaWx0
ZXJFdmFsdWF0b3JTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDgyNkY5MUY1NzYyOTIwMDQ3
NzJBQyAvKiBXZWJQYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtOTMwLDYgKzk0NCw3
IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJ
NTdGRDMxOEEyMkIzNTkzRTAwOEQwRThCIC8qIEFwcFNTT1NvZnRMaW5rLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5r
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3N0U4N0IxMjI2QTQ2MDIwMEEyQUZGMCAvKiBBVkZv
dW5kYXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBDNUZGRjBGMUY3OEQ5REEw
MDlFRkYxQSAvKiBDbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMENGOTlDQTgxRjczODQz
NzAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTU2
LDYgKzk3MSw3IEBACiAJCQkJQTNBQjZFNTcxRjNEMUREQjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVw
TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNjUxRjNEMjE3RjAwOUMxNEIx
IC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTEzNDJD
RDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTQxNkU5OTU3MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMTA4MjZGQTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwubW0g
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29s
Ym94U29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hT
b2Z0TGluay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNmNTUwNTZhY2RhNmY1NjUzYWRjN2UxN2VjMDJhMmQ4
MjZlNDQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVk
aW9Ub29sYm94U29mdExpbmsuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPEF1
ZGlvVG9vbGJveC9BdWRpb0NvbnZlcnRlci5oPgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRp
b0Zvcm1hdC5oPgorCisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19G
UkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCkKKworU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHks
IE9TU3RhdHVzLCAoQXVkaW9Gb3JtYXRQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGlu
U3BlY2lmaWVyU2l6ZSwgY29uc3Qgdm9pZCogaW5TcGVjaWZpZXIsIFVJbnQzMiogaW9Qcm9wZXJ0
eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5Qcm9wZXJ0eUlELCBpblNwZWNp
ZmllclNpemUsIGluU3BlY2lmaWVyLCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0
YSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCwgQXVk
aW9Db252ZXJ0ZXJOZXcsIE9TU3RhdHVzLCAoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKiBpblNvdXJjZUZvcm1hdCwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBp
bkRlc3RpbmF0aW9uRm9ybWF0LCBBdWRpb0NvbnZlcnRlclJlZiogb3V0QXVkaW9Db252ZXJ0ZXIp
LCAoaW5Tb3VyY2VGb3JtYXQsIGluRGVzdGluYXRpb25Gb3JtYXQsIG91dEF1ZGlvQ29udmVydGVy
KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRp
b0NvbnZlcnRlclNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVk
aW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQz
MiBpblByb3BlcnR5RGF0YVNpemUsIGNvbnN0IHZvaWQqIGluUHJvcGVydHlEYXRhKSwgKGluQXVk
aW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW5Qcm9wZXJ0eURhdGFTaXplLCBpblByb3BlcnR5
RGF0YSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCwg
QXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRlclJlZiBp
bkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBV
SW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRhKSwgKGluQXVk
aW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0
eURhdGEpKQorCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzMxMTg3
MTc0YWMxNTU0NDM3MWRlZTAzYjE0MzJlM2U2NTYzMmUwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVZGT1VOREFUSU9O
KQorCisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktf
Rk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHksIE9TU3Rh
dHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQ
cm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQq
IG91dFByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlvUHJv
cGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKyNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJH
ZXRQcm9wZXJ0eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0
eQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlv
Q29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
biogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5E
ZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwg
KGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikp
CisjZGVmaW5lIEF1ZGlvQ29udmVydGVyTmV3IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0Nv
bnZlcnRlck5ldworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xi
b3gsIEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJS
ZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJ
RCwgVUludDMyIGluUHJvcGVydHlEYXRhU2l6ZSwgY29uc3Qgdm9pZCogaW5Qcm9wZXJ0eURhdGEp
LCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9wZXJ0eUlELCBpblByb3BlcnR5RGF0YVNpemUsIGlu
UHJvcGVydHlEYXRhKSkKKyNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSBzb2Z0TGlu
a19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eQorU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHks
IE9TU3RhdHVzLCAoQXVkaW9Gb3JtYXRQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGlu
U3BlY2lmaWVyU2l6ZSwgY29uc3Qgdm9pZCogaW5TcGVjaWZpZXIsIFVJbnQzMiogaW9Qcm9wZXJ0
eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5Qcm9wZXJ0eUlELCBpblNwZWNp
ZmllclNpemUsIGluU3BlY2lmaWVyLCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0
YSkpCisjZGVmaW5lIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94
X0F1ZGlvRm9ybWF0R2V0UHJvcGVydHkKKworCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKaW5k
ZXggMmI4MjMxMzY1Y2I5YWFmOTM1OTdmMTg3ZmEyMmMxNDliZTQyZmIzYS4uNDUwMTAyZTkxMDQ3
NmVkYjAzMWQzOTJhNDg4NTc2YzQxOGFkMzVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKQEAgLTEzNiw2ICsxMzYsNyBAQCBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEJ1
ZmZlckNvdW50LCBDTUl0ZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNQnVmZmVyUXVldWVHZXRGaXJzdFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1l
LCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlv
blRpbWVTdGFtcCwgQ01UaW1lLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1
ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQsIE9TU3RhdHVzLCAoQ01CdWZmZXJR
dWV1ZVJlZiBxdWV1ZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayB0cmlnZ2VyQ2FsbGJh
Y2ssIHZvaWQqIHRyaWdnZXJSZWZjb24sIENNQnVmZmVyUXVldWVUcmlnZ2VyQ29uZGl0aW9uIHRy
aWdnZXJDb25kaXRpb24sIENNSXRlbUNvdW50IHRyaWdnZXJUaHJlc2hvbGQsIENNQnVmZmVyUXVl
dWVUcmlnZ2VyVG9rZW4qIHRyaWdnZXJUb2tlbk91dCksIChxdWV1ZSwgdHJpZ2dlckNhbGxiYWNr
LCB0cmlnZ2VyUmVmY29uLCB0cmlnZ2VyQ29uZGl0aW9uLCB0cmlnZ2VyVGhyZXNob2xkLCB0cmln
Z2VyVG9rZW5PdXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVk
aWEsIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVS
ZWYgcXVldWUpLCAocXVldWUpKQogCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUws
IENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERpc3BsYXksIENGU3RyaW5n
UmVmKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVNh
bXBsZUF0dGFjaG1lbnRLZXlfTm90U3luYywgQ0ZTdHJpbmdSZWYpCkBAIC0xNjMsNiArMTY0LDgg
QEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9T
YW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2UKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZm
ZXJMaXN0LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENGQWxsb2NhdG9yUmVm
IGJidWZTdHJ1Y3RBbGxvY2F0b3IsIENGQWxsb2NhdG9yUmVmIGJidWZNZW1vcnlBbGxvY2F0b3Is
IHVpbnQzMl90IGZsYWdzLCBjb25zdCBBdWRpb0J1ZmZlckxpc3QgKmJ1ZmZlckxpc3QpLCAoc2J1
ZiwgYmJ1ZlN0cnVjdEFsbG9jYXRvciwgYmJ1Zk1lbW9yeUFsbG9jYXRvciwgZmxhZ3MsIGJ1ZmZl
ckxpc3QpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENN
U2FtcGxlQnVmZmVyU2V0RGF0YVJlYWR5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNi
dWYpLCAoc2J1ZikpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRp
YSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9y
UmVmIGFsbG9jYXRvciwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBhc2JkLCBz
aXplX3QgbGF5b3V0U2l6ZSwgY29uc3QgQXVkaW9DaGFubmVsTGF5b3V0KiBsYXlvdXQsIHNpemVf
dCBtYWdpY0Nvb2tpZVNpemUsIGNvbnN0IHZvaWQqIG1hZ2ljQ29va2llLCBDRkRpY3Rpb25hcnlS
ZWYgZXh0ZW5zaW9ucywgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmKiBvdXREZXNjKSwgKGFs
bG9jYXRvciwgYXNiZCwgbGF5b3V0U2l6ZSwgbGF5b3V0LCBtYWdpY0Nvb2tpZVNpemUsIG1hZ2lj
Q29va2llLCBleHRlbnNpb25zLCBvdXREZXNjKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVj
b2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICosIChDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKKwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrLCBDTUNsb2NrUmVm
LCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVk
aWEsIENNQ2xvY2tHZXRUaW1lLCBDTVRpbWUsIChDTUNsb2NrUmVmIGNsb2NrKSwgKGNsb2NrKSkK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1
ZmZlckNhbGxGb3JFYWNoU2FtcGxlLCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYs
IE9TU3RhdHVzICgqIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBjYWxsYmFjaykoIENNU2Ft
cGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgQ01JdGVtQ291bnQgaW5kZXgsIHZvaWQgKnJlZmNv
biksIHZvaWQgKnJlZmNvbiksIChzYnVmLCBjYWxsYmFjaywgcmVmY29uKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRleCAyNjhkMTY3ZjI3ZDZk
M2FiYmZmNTkzNTI2N2ZjMjIyMzkxMDEwZTNkLi4xNDJkNjBiYjJmNWU3YjRlOTcwNTg5MTU0Yjg5
N2QxOTY0NjUyZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVN
ZWRpYVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5oCkBAIC0yMjcsNiArMjI3LDggQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRFbmRQcmVzZW50YXRpb25UaW0KICNk
ZWZpbmUgQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19D
b3JlTWVkaWFfQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcAogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJbnN0
YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVS
ZWYgcXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNrLCB2
b2lkKiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmlnZ2Vy
Q29uZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVlVHJp
Z2dlclRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywgdHJp
Z2dlclJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dlclRv
a2VuT3V0KSkKICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJU
aHJlc2hvbGQgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldp
dGhJbnRlZ2VyVGhyZXNob2xkCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENv
cmVNZWRpYSwgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJR
dWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZE
YXRhIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YQogCiBTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNo
bWVudEtleV9Eb05vdERpc3BsYXksIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVBdHRh
Y2htZW50S2V5X0RvTm90RGlzcGxheSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1lbnRL
ZXlfRG9Ob3REaXNwbGF5KCkKQEAgLTI2NCw2ICsyNjYsOCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxp
c3RXaQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5l
ZEJsb2NrQnVmZmVyIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVm
ZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hF
QURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzLCBDTUl0ZW1D
b3VudCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCiAjZGVmaW5lIENNU2FtcGxl
QnVmZmVyR2V0TnVtU2FtcGxlcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRO
dW1TYW1wbGVzCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdCwgY29uc3Qg
QXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2Mp
LCAoZGVzYykpCisjZGVmaW5lIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNv
ZGFibGVGb3JtYXQgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdl
dFJpY2hlc3REZWNvZGFibGVGb3JtYXQKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZSwgT1NT
dGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNU2FtcGxlQnVmZmVyUmVmIHNidWYs
IENGUmFuZ2Ugc2FtcGxlUmFuZ2UsIENNU2FtcGxlQnVmZmVyUmVmKiBzQnVmT3V0KSwgKGFsbG9j
YXRvciwgc2J1Ziwgc2FtcGxlUmFuZ2UsIHNCdWZPdXQpKQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZl
ckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZm
ZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2UKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVNpemVBcnJheSwgT1NTdGF0
dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDTUl0ZW1Db3VudCBzaXplQXJyYXlFbnRyaWVz
LCBzaXplX3QqIHNpemVBcnJheU91dCwgQ01JdGVtQ291bnQqIHNpemVBcnJheUVudHJpZXNOZWVk
ZWRPdXQpLCAoc2J1Ziwgc2l6ZUFycmF5RW50cmllcywgc2l6ZUFycmF5T3V0LCBzaXplQXJyYXlF
bnRyaWVzTmVlZGVkT3V0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
VmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRl
b1Rvb2xib3hTb2Z0TGluay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZlNjkzY2E5ZTQxZmQ4NTk3YTgyYjdj
Nzk2NjAxYjhhNzBjYWE0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2lt
cG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25TZXNzaW9uLmg+CisKKyNpbmNsdWRlIDx3
dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFBBTCwg
VmlkZW9Ub29sYm94KQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVv
VG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0
b3JSZWYgYWxsb2NhdG9yLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgQ01WaWRlb0Nv
ZGVjVHlwZSBjb2RlY1R5cGUsIENGRGljdGlvbmFyeVJlZiBlbmNvZGVyU3BlY2lmaWNhdGlvbiwg
Q0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgQ0ZBbGxvY2F0b3JS
ZWYgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIFZUQ29tcHJlc3Npb25PdXRwdXRDYWxsYmFjayBv
dXRwdXRDYWxsYmFjaywgdm9pZCogb3V0cHV0Q2FsbGJhY2tSZWZDb24sIFZUQ29tcHJlc3Npb25T
ZXNzaW9uUmVmKiBjb21wcmVzc2lvblNlc3Npb25PdXQpLCAoYWxsb2NhdG9yLCB3aWR0aCwgaGVp
Z2h0LCBjb2RlY1R5cGUsIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBzb3VyY2VJbWFnZUJ1ZmZlckF0
dHJpYnV0ZXMsIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBvdXRwdXRDYWxsYmFjaywgb3V0cHV0
Q2FsbGJhY2tSZWZDb24sIGNvbXByZXNzaW9uU2Vzc2lvbk91dCkpCitTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Db21w
bGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBD
TVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCksIChzZXNzaW9uLCBjb21w
bGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1l
LCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENWSW1hZ2VCdWZm
ZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBk
dXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIGZyYW1lUHJvcGVydGllcywgdm9pZCogc291cmNlRnJh
bWVSZWZjb24sIFZURW5jb2RlSW5mb0ZsYWdzKiBpbmZvRmxhZ3NPdXQpLCAoc2Vzc2lvbiwgaW1h
Z2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZHVyYXRpb24sIGZyYW1lUHJvcGVydGll
cywgc291cmNlRnJhbWVSZWZjb24sIGluZm9GbGFnc091dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJl
VG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lv
biksIChzZXNzaW9uKSkKKworI2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjUwODM4YTNhZmRlZDJlZDdkNmY4ZTM0OGZmZGY2ZGQxMTUxYmM0ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaApAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFWRk9V
TkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJB
TUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gpCisKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0
ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0LCBDTVZpZGVvQ29kZWNUeXBlIGNvZGVjVHlwZSwgQ0ZEaWN0aW9uYXJ5UmVm
IGVuY29kZXJTcGVjaWZpY2F0aW9uLCBDRkRpY3Rpb25hcnlSZWYgc291cmNlSW1hZ2VCdWZmZXJB
dHRyaWJ1dGVzLCBDRkFsbG9jYXRvclJlZiBjb21wcmVzc2VkRGF0YUFsbG9jYXRvciwgVlRDb21w
cmVzc2lvbk91dHB1dENhbGxiYWNrIG91dHB1dENhbGxiYWNrLCB2b2lkKiBvdXRwdXRDYWxsYmFj
a1JlZkNvbiwgVlRDb21wcmVzc2lvblNlc3Npb25SZWYqIGNvbXByZXNzaW9uU2Vzc2lvbk91dCks
IChhbGxvY2F0b3IsIHdpZHRoLCBoZWlnaHQsIGNvZGVjVHlwZSwgZW5jb2RlclNwZWNpZmljYXRp
b24sIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgY29tcHJlc3NlZERhdGFBbGxvY2F0b3Is
IG91dHB1dENhbGxiYWNrLCBvdXRwdXRDYWxsYmFja1JlZkNvbiwgY29tcHJlc3Npb25TZXNzaW9u
T3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUgc29mdExpbmtfVmlkZW9U
b29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZy
YW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDTVRpbWUg
Y29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCksIChzZXNzaW9uLCBjb21wbGV0ZVVu
dGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25D
b21wbGV0ZUZyYW1lcyBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25D
b21wbGV0ZUZyYW1lcworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rv
b2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUsIE9TU3RhdHVzLCAoVlRDb21w
cmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwg
Q01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lIGR1cmF0aW9uLCBDRkRpY3Rpb25h
cnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lkKiBzb3VyY2VGcmFtZVJlZmNvbiwgVlRFbmNvZGVJ
bmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChzZXNzaW9uLCBpbWFnZUJ1ZmZlciwgcHJlc2VudGF0
aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJhbWVQcm9wZXJ0aWVzLCBzb3VyY2VGcmFtZVJlZmNv
biwgaW5mb0ZsYWdzT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFt
ZSBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZQor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJl
c3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Np
b25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikpCisjZGVmaW5lIFZUQ29tcHJlc3Npb25T
ZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXBy
ZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcworCisjZW5kaWYgLy8gVVNFKEFWRk9V
TkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBkYTkyY2RlOTFlYjdhZTg0YTVmMWU3ZmQ1YWYyNzIxNzVhNGM4MzQ0Li5k
YjVjZmRiMzAxNDBjNGYxZjcyOTlhNGM2ZWQyMDUxNmQ4ODc2M2U1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDk3LDYgKzEw
OTcsNyBAQAogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRl
cm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxz
QnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYx
QkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAw
QTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRh
YmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0MTZGNzk5MDIzRDc1MENGMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbSAqLzsgfTsKIAkJNDE3MjUzQUIxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJv
bEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsg
fTsKIAkJNDE3NjEyQUYxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjEy
QUIxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwICovOyB9Owog
CQk0MTc2MTJCMDFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUMxRTNB
OTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCAqLzsgfTsKQEAgLTExMzYs
NiArMTEzNyw3IEBACiAJCTQxQjJBNjI2MUVGMUJGNkQwMDJCOUQ3QSAvKiBXZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUIyQTYyNTFFRjFCRjYwMDAyQjlEN0EgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQkYyMDQ5
MjJCQTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIg
LyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDNzYw
QjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDRDZGOEMyM0Q2RTgyMTAwQjE2NDIxIC8q
IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQ0Q2RjhCMjNENkU4MUQwMEIxNjQyMSAvKiBWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi87IH07CiAJCTQxRDAxNUNBMEY0QjVDNzEwMDRBNjYy
RiAvKiBDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFEMTI5Q0UxRjNE
MEVGNjAwRDE1RTQ3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCMjc4RDFGMzRDMjgyMDA3OTU0ODcg
LyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuaCAqLzsgfTsKIAkJNDFEMTI5RDAxRjNEMEYwNTAw
RDE1RTQ3IC8qIENhY2hlUXVlcnlPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCMjc5QjFGMzRDRUYwMDA3OTU0ODcgLyogQ2FjaGVRdWVy
eU9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNzQxMCw2ICs3NDEyLDkgQEAKIAkJNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5l
dHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTZFMEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5n
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyUmVwb3J0aW5n
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2Rjc5OEQyM0Q3NTBDQTAw
ODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8qIEF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE2Rjc5OTMyM0Q4QjY5QzAwODI5RkMxIC8qIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcwQTJFOTFEOEMwQ0MwMDAzMTg0NTIgLyog
SlNET01XcmFwcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RE9NV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E4MTM1
NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNv
bnRyb2xFbGVtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNv
bnRyb2xFbGVtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzUxNiw2ICs3
NTIxLDggQEAKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRp
YVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
bnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdFMTA4
MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4OTIzRDZFODFDMDBCMTY0MjEgLyog
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUNGOEJFNTFENDYyMjIwMDA3MDdEQzkgLyog
RmV0Y2hCb2R5Q29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0
Y2hCb2R5Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1Qzgw
RjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
OTAwMSw4ICsxOTAwOCwxMyBAQAogCQk0RDNDMDVENDIxQUY0ODA5MDBGMjg5MEEgLyogY29jb2Eg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNkY3OThE
MjNENzUwQ0EwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAqLywKKwkJ
CQk0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tICovLAogCQkJCTRENzNGOTRDMjE4QzRBODcwMDNBM0VENiAvKiBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmggKi8sCiAJCQkJNEQ3M0Y5NEQyMThDNEE4NzAwM0EzRUQ2IC8qIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gKi8sCisJCQkJNDE2Rjc5OTMyM0Q4QjY5
QzAwODI5RkMxIC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW0g
Ki8sCisJCQkJNDFDRDZGODkyM0Q2RTgxQzAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5oICovLAorCQkJCTQxQ0Q2RjhCMjNENkU4MUQwMEIxNjQyMSAvKiBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzNjQ1LDYgKzMzNjU3LDcgQEAKIAkJCQlBOTc4N0NC
NDFGNUY1QzY2MDBDNTUxQzYgLyogQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9u
SU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENTU5NjkxMTQ3NUI2NzgwMDFEMEJEMCAvKiBB
dWRpb0ZpbGVSZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE2Rjc5OTAyM0Q3NTBD
RjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBEODE3MTVEMkEyMDA2
NThEOTggLyogQXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM0Mzc2LDYgKzM0Mzg5
LDcgQEAKIAkJCQk3QzczRkIwNzE5MUVGNDE3MDA3REUwNjEgLyogVXNlck1lc3NhZ2VIYW5kbGVy
c05hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzRkJDNEFGMzE4OTg4MTU2MDA0NkVF
MzggLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1MkQ1QTE4RjFDNTQ1OTIzMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
T2JqQy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxQ0Q2RjhDMjNENkU4MjEwMEIxNjQyMSAvKiBW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBE
RTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
RTg4RTBFMTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0QzMzZGNjcxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZG
T2JqQy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsLmNwcAppbmRleCA3M2YxZDBhMTUxOWYyYzAzYjkxZDY5NTEwNTEzNWE0ZjIwZDFkYTY0Li5k
NDc5MzQ4ODM4NjE5MTdmNmIzNjBlZjE0ZGQ4MmMxZTM1M2IyYWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKKyNp
bmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCiAjaW5jbHVkZSAiTWVk
aWFTYW1wbGUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKQEAgLTY4LDcgKzY5LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRl
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRvIHdyaXRlciA9
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYXVkaW9UcmFjaywgdmlkZW9UcmFj
ayk7CisKKyAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOworICAgIGlmICh2aWRlb1RyYWNr
KSB7CisgICAgICAgIGF1dG8mIHNldHRpbmdzID0gdmlkZW9UcmFjay0+c2V0dGluZ3MoKTsKKyAg
ICAgICAgd2lkdGggPSBzZXR0aW5ncy53aWR0aCgpOworICAgICAgICBoZWlnaHQgPSBzZXR0aW5n
cy5oZWlnaHQoKTsKKyAgICB9CisgICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6Y3JlYXRlKCEhYXVkaW9UcmFjaywgd2lkdGgsIGhlaWdodCk7CiAgICAgaWYgKCF3
cml0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjZjYmIxM2ZlNjAxOTI0NTJl
OWQ1MTE4OWJlZjA3ZDNhMzI1MjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8Q29yZU1l
ZGlhL0NvcmVNZWRpYS5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAq
Q01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciog
QXVkaW9Db252ZXJ0ZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcj4gY3JlYXRlKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNr
T2JqZWN0KTsKKyAgICB+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAgICB2b2lk
IGZpbmlzaCgpOworICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsK
KyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBSZXRh
aW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKworcHJp
dmF0ZToKKyAgICBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKyAgICBib29sIGluaXRp
YWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3Qp
OworCisgICAgc3RhdGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVBy
b2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3Ry
ZWFtUGFja2V0RGVzY3JpcHRpb24qKiwgdm9pZCopOworCisgICAgdm9pZCBwcm9jZXNzU2FtcGxl
QnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRBdWRpb0NvbnZlcnRlckZv
clNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIEF1ZGlvRm9y
bWF0SUQpOworICAgIHNpemVfdCBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgVUludDMyLCBGbG9hdDMyKTsKKyAgICB2b2lkIGF0dGFj
aFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBSZXRhaW5QdHI8
TlNOdW1iZXI+IGdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCk7CisgICAgQ01TYW1wbGVCdWZm
ZXJSZWYgc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlv
QnVmZmVyTGlzdCk7CisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJU
aW1lKENNVGltZSk7CisgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNr
ZXRzKFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRp
b24qKik7CisKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJR
dWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9pbnB1dEJ1ZmZlclF1ZXVl
OworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIENNVGlt
ZSBtX2xvd1dhdGVyVGltZTsKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07CisKKyAg
ICBSZXRhaW5QdHI8QXVkaW9Db252ZXJ0ZXJSZWY+IG1fY29udmVydGVyOworICAgIEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBtX3NvdXJjZUZvcm1hdDsKKyAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gbV9kZXN0aW5hdGlvbkZvcm1hdDsKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXRE
ZXNjcmlwdGlvblJlZj4gbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAgIFJldGFp
blB0cjxOU051bWJlcj4gbV9nZHJDb3VudE51bTsKKyAgICBVSW50MzIgbV9tYXhPdXRwdXRQYWNr
ZXRTaXplOworICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX2Rlc3Rp
bmF0aW9uUGFja2V0RGVzY3JpcHRpb25zOworCisgICAgQ01UaW1lIG1fY3VycmVudE5hdGl2ZVBy
ZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAgICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0
aW9uVGltZVN0YW1wOworICAgIENNVGltZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb247CisKKyAg
ICBWZWN0b3I8Y2hhcj4gbV9zb3VyY2VCdWZmZXI7CisgICAgVmVjdG9yPGNoYXI+IG1fZGVzdGlu
YXRpb25CdWZmZXI7CisKKyAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVC
bG9ja0J1ZmZlcjsKKyAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7CisgICAgc2l6
ZV90IG1fY3VyT2Zmc2V0SW5TYW1wbGVCYnVmOworICAgIEF1ZGlvRm9ybWF0SUQgbV9vdXRwdXRD
b2RlY1R5cGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWU3MDMyY2E2NGY2NmNhMGM1YTQwZDgwNzNiYjU4NTk2
ZTMzNzEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTAsMCArMSw0
NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
VVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxBdWRp
b1Rvb2xib3gvQXVkaW9Db2RlYy5oPgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvbnZl
cnRlci5oPgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0Zvcm1hdC5oPgorI2luY2x1ZGUg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCisjaW1wb3J0IDxwYWwvY2YvQXVkaW9Ub29sYm94
U29mdExpbmsuaD4KKworI2RlZmluZSBMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQgMC4xCisKK3Vz
aW5nIG5hbWVzcGFjZSBQQUw7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpjcmVhdGUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCog
Y2FsbGJhY2tPYmplY3QpCit7CisgICAgYXV0byBjb21wcmVzc29yID0gc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4obmV3IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcigpKTsKKyAgICBpZiAoIWNvbXByZXNzb3ItPmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxi
YWNrT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbXByZXNz
b3I7Cit9CisKK0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yKCkKKyAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgiY29tLmFwcGxlLkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENI
X1FVRVVFX1NFUklBTCkgfQorICAgICwgbV9sb3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNl
Y29uZHMoTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05ELCAxMDAwKSB9CisgICAgLCBtX291dHB1dENv
ZGVjVHlwZSB7IGtBdWRpb0Zvcm1hdE1QRUc0QUFDIH0KK3sKK30KKworQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjp+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKK3sKKyAgICBpZiAo
bV9zZXJpYWxEaXNwYXRjaFF1ZXVlKQorICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VyaWFs
RGlzcGF0Y2hRdWV1ZSk7Cit9CisKK2Jvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrT2JqZWN0KQoreworICAgIENNQnVmZmVyUXVldWVSZWYgaW5wdXRCdWZmZXJRdWV1ZTsK
KyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVy
cygpLCAmaW5wdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUNyZWF0
ZSBmb3IgbV9pbnB1dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1faW5wdXRCdWZmZXJRdWV1ZSA9IGFkb3B0Q0Yo
aW5wdXRCdWZmZXJRdWV1ZSk7CisKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1
ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVC
dWZmZXJzKCksICZvdXRwdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1
ZUNyZWF0ZSBmb3IgbV9vdXRwdXRCdWZmZXJRdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX291dHB1dEJ1ZmZlclF1ZXVlID0g
YWRvcHRDRihvdXRwdXRCdWZmZXJRdWV1ZSk7CisgICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmln
Z2VyKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwg
a0NNQnVmZmVyUXVldWVUcmlnZ2VyX1doZW5EYXRhQmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywg
TlVMTCk7CisKKyAgICBtX2lzRW5jb2RpbmcgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKK3sKKyAgICBkaXNw
YXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgcHJvY2Vzc1NhbXBs
ZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShrQ01UaW1lSW52YWxpZCk7CisgICAgICAgIGF1dG8g
ZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVlLmdl
dCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZh
aWxlZCAlZCIsIGVycm9yKTsKKyAgICAgICAgbV9pc0VuY29kaW5nID0gZmFsc2U7CisgICAgfSk7
Cit9CisKK09TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YXVkaW9Db252ZXJ0
ZXJDb21wbGV4SW5wdXREYXRhUHJvYyhBdWRpb0NvbnZlcnRlclJlZiwgVUludDMyICpudW1PdXRw
dXRQYWNrZXRzUHRyLCBBdWRpb0J1ZmZlckxpc3QgKmJ1ZmZlckxpc3QsIEF1ZGlvU3RyZWFtUGFj
a2V0RGVzY3JpcHRpb24gKipwYWNrZXREZXNjcmlwdGlvbk91dCwgdm9pZCAqYXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yKQoreworICAgIGF1dG8gKmNvbXByZXNzb3IgPSBzdGF0aWNfY2FzdDxB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IqPihhdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ip
OworICAgIHJldHVybiBjb21wcmVzc29yLT5wcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tl
dHMobnVtT3V0cHV0UGFja2V0c1B0ciwgYnVmZmVyTGlzdCwgcGFja2V0RGVzY3JpcHRpb25PdXQp
OworfQorCitib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVy
dGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3Jt
YXREZXNjcmlwdGlvbiwgQXVkaW9Gb3JtYXRJRCBvdXRwdXRGb3JtYXRJRCkKK3sKKyAgICBjb25z
dCBhdXRvICphdWRpb0Zvcm1hdExpc3RJdGVtID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0
UmljaGVzdERlY29kYWJsZUZvcm1hdChmb3JtYXREZXNjcmlwdGlvbik7CisgICAgbV9zb3VyY2VG
b3JtYXQgPSBhdWRpb0Zvcm1hdExpc3RJdGVtLT5tQVNCRDsKKworICAgIG1fZGVzdGluYXRpb25G
b3JtYXQubUZvcm1hdElEID0gb3V0cHV0Rm9ybWF0SUQ7CisgICAgbV9kZXN0aW5hdGlvbkZvcm1h
dC5tU2FtcGxlUmF0ZSA9IG1fc291cmNlRm9ybWF0Lm1TYW1wbGVSYXRlOworICAgIG1fZGVzdGlu
YXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgPSBtX3NvdXJjZUZvcm1hdC5tQ2hhbm5lbHNQ
ZXJGcmFtZTsKKyAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsK
KyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkoa0F1ZGlvRm9ybWF0
UHJvcGVydHlfRm9ybWF0SW5mbywgMCwgTlVMTCwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0
KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBBdWRpb0Zvcm1hdEdldFByb3BlcnR5IGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQXVkaW9Db252ZXJ0
ZXJSZWYgY29udmVydGVyOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJOZXco
Jm1fc291cmNlRm9ybWF0LCAmbV9kZXN0aW5hdGlvbkZvcm1hdCwgJmNvbnZlcnRlcikpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJOZXcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9jb252ZXJ0ZXIgPSBhZG9wdENGKGNvbnZl
cnRlcik7CisKKyAgICBzaXplX3QgY29va2llU2l6ZSA9IDA7CisgICAgY29uc3Qgdm9pZCAqY29v
a2llID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUoZm9ybWF0RGVzY3Jp
cHRpb24sICZjb29raWVTaXplKTsKKyAgICBpZiAoY29va2llU2l6ZSkgeworICAgICAgICBpZiAo
YXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCks
IGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgKFVJbnQzMiljb29raWVT
aXplLCBjb29raWUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckRl
Y29tcHJlc3Npb25NYWdpY0Nvb2tpZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNpemUgPSBzaXplb2Yo
bV9zb3VyY2VGb3JtYXQpOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQ
cm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3Ry
ZWFtRGVzY3JpcHRpb24sICZzaXplLCAmbV9zb3VyY2VGb3JtYXQpKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdl
dHRpbmcga0F1ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp
ZiAoIW1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIm1CeXRlc1BlclBhY2tldCBzaG91bGQgbm90IGJlIHplcm8i
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9k
ZXN0aW5hdGlvbkZvcm1hdCk7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdl
dFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0
U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAmbV9kZXN0aW5hdGlvbkZvcm1hdCkpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRp
b24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0
TVBFRzRBQUMpIHsKKyAgICAgICAgLy8gRklYTUU6IFNldCBvdXRwdXRCaXRSYXRlIGFjY29yZGlu
ZyBNZWRpYVJlY29yZGVyT3B0aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQuCisgICAgICAgIFVJbnQz
MiBvdXRwdXRCaXRSYXRlID0gNjQwMDA7CisgICAgICAgIHNpemUgPSBzaXplb2Yob3V0cHV0Qml0
UmF0ZSk7CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0
eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSwgc2l6ZSwg
Jm91dHB1dEJpdFJhdGUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRl
ckVuY29kZUJpdFJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3Jt
YXQubUJ5dGVzUGVyUGFja2V0KSB7CisgICAgICAgIC8vIElmIHRoZSBkZXN0aW5hdGlvbiBmb3Jt
YXQgaXMgVkJSLCB3ZSBuZWVkIHRvIGdldCBtYXggc2l6ZSBwZXIgcGFja2V0IGZyb20gdGhlIGNv
bnZlcnRlci4KKyAgICAgICAgc2l6ZSA9IHNpemVvZihtX21heE91dHB1dFBhY2tldFNpemUpOwor
CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2Nv
bnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVtT3V0cHV0UGFja2V0
U2l6ZSwgJnNpemUsICZtX21heE91dHB1dFBhY2tldFNpemUpKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBn
ZXR0aW5nIGtBdWRpb0NvbnZlcnRlclByb3BlcnR5TWF4aW11bU91dHB1dFBhY2tldFNpemUgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBtX2Rlc3RpbmF0aW9uQnVmZmVyLnJlc2VydmVDYXBhY2l0eShjb21w
dXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KG1fZGVzdGluYXRpb25Gb3JtYXQsIG1fbWF4T3V0
cHV0UGFja2V0U2l6ZSwgTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EKSk7CisgICAgaWYgKCFtX2Rl
c3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkKKyAgICAgICAgbV9kZXN0aW5hdGlvblBh
Y2tldERlc2NyaXB0aW9ucy5yZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBh
Y2l0eSgpIC8gbV9tYXhPdXRwdXRQYWNrZXRTaXplKTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitzaXplX3QgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZv
ckF1ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBmb3JtYXQsIFVJbnQzMiBt
YXhPdXRwdXRQYWNrZXRTaXplLCBGbG9hdDMyIGR1cmF0aW9uKQoreworICAgIFVJbnQzMiBudW1Q
YWNrZXRzID0gKGZvcm1hdC5tU2FtcGxlUmF0ZSAqIGR1cmF0aW9uKSAvIGZvcm1hdC5tRnJhbWVz
UGVyUGFja2V0OworICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gZm9ybWF0Lm1CeXRlc1Bl
clBhY2tldCA/IGZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtYXhPdXRwdXRQYWNrZXRTaXplOwor
ICAgIFVJbnQzMiBidWZmZXJTaXplID0gbnVtUGFja2V0cyAqIG91dHB1dFBhY2tldFNpemU7CisK
KyAgICByZXR1cm4gYnVmZmVyU2l6ZTsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZl
cikKK3sKKyAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQobV9yZW1haW5pbmdQcmltZUR1cmF0aW9u
KSkgeworICAgICAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07
CisgICAgICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKHByaW1lSW5mbyk7CisKKyAgICAgICAgaWYg
KGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgp
LCBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8sICZzaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3Jl
bWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVNYWtlKHByaW1lSW5mby5sZWFkaW5nRnJhbWVz
LCBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlKTsKKyAgICB9CisKKyAgICBpZiAoQ01U
SU1FX0NPTVBBUkVfSU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRp
b24pKSB7CisgICAgICAgIENNVGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0
RHVyYXRpb24oYnVmZmVyKTsKKyAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1p
bmltdW0oc2FtcGxlRHVyYXRpb24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7CisgICAgICAg
IENGRGljdGlvbmFyeVJlZiB0cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5
KHRyaW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgICAgIENNU2V0QXR0YWNo
bWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRT
dGFydCwgdHJpbUF0U3RhcnREaWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUp
OworICAgICAgICBDRlJlbGVhc2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAgbV9yZW1haW5p
bmdQcmltZUR1cmF0aW9uID0gQ01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQcmltZUR1cmF0aW9u
LCB0cmltRHVyYXRpb24pOworICAgIH0KK30KKworUmV0YWluUHRyPE5TTnVtYmVyPiBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCkKK3sKKyAg
ICBVSW50MzIgZGVsYXlTaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICB1aW50MzJfdCBvcmln
aW5hbERlbGF5TW9kZSA9IDA7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdl
dFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2Rl
LCAmZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcg
a0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICB1aW50MzJfdCBvcHRpbWFsRGVsYXlNb2Rl
ID0ga0F1ZGlvQ29kZWNEZWxheU1vZGVfT3B0aW1hbDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1
ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJv
cGVydHlEZWxheU1vZGUsIGRlbGF5U2l6ZSwgJm9wdGltYWxEZWxheU1vZGUpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIHNldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBVSW50MzIgcHJpbWVT
aXplID0gc2l6ZW9mKEF1ZGlvQ29kZWNQcmltZUluZm8pOworICAgIEF1ZGlvQ29kZWNQcmltZUlu
Zm8gcHJpbWVJbmZvIHsgMCwgMCB9OworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0
ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1l
SW5mbywgJnByaW1lU2l6ZSwgJnByaW1lSW5mbykpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVk
aW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZvIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAg
ICByZXR1cm4gbmlsOworICAgIH0KKworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0
ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5
TW9kZSwgZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRp
bmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0TlMoW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6KHByaW1lSW5mby5sZWFkaW5nRnJhbWVzIC8gbV9kZXN0aW5hdGlvbkZv
cm1hdC5tRnJhbWVzUGVyUGFja2V0KV0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKFVJbnQzMiBu
dW1QYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3QpCit7CisgICAgVmVjdG9y
PGNoYXI+IGNvb2tpZTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbikg
eworICAgICAgICBVSW50MzIgY29va2llU2l6ZSA9IDA7CisKKyAgICAgICAgYXV0byBlcnJvciA9
IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHlJbmZvKG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9D
b252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgTlVMTCk7CisgICAg
ICAgIGlmICgoZXJyb3IgPT0gbm9FcnIpICYmICEhY29va2llU2l6ZSkgeworICAgICAgICAgICAg
Y29va2llLnJlc2VydmVDYXBhY2l0eShjb29raWVTaXplKTsKKworICAgICAgICAgICAgaWYgKGF1
dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBr
QXVkaW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgY29va2ll
LmRhdGEoKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckNv
bXByZXNzaW9uTWFnaWNDb29raWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICAg
ICAgaWYgKGF1dG8gZXJyb3IgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIE5VTEwsIGNvb2tpZVNpemUs
IGNvb2tpZS5kYXRhKCksIE5VTEwsICZkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSkgewor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAgICAg
ICBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24gPSBhZG9wdENGKGRlc3RpbmF0aW9uRm9y
bWF0RGVzY3JpcHRpb24pOworICAgICAgICBtX2dkckNvdW50TnVtID0gZ3JhZHVhbERlY29kZXJS
ZWZyZXNoQ291bnQoKTsKKyAgICB9CisKKyAgICBjaGFyICpkYXRhID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhKTsKKyAgICBzaXplX3QgZGF0YVNp
emUgPSBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplOworCisgICAgQ01C
bG9ja0J1ZmZlclJlZiBibG9ja0J1ZmZlcjsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tC
dWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZGF0
YVNpemUsIGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIDAsIGRhdGFTaXplLCBrQ01CbG9ja0J1
ZmZlckFzc3VyZU1lbW9yeU5vd0ZsYWcsICZibG9ja0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01C
bG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKGJs
b2NrQnVmZmVyKTsKKworICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlclJlcGxhY2VE
YXRhQnl0ZXMoZGF0YSwgYnVmZmVyLmdldCgpLCAwLCBkYXRhU2l6ZSkpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
Q01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
QnVmZmVyOworICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBh
Y2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIuZ2V0KCksIHRydWUs
IE5VTEwsIE5VTEwsIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgbnVtUGFj
a2V0cywgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wLCBtX2Rlc3RpbmF0aW9u
UGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9y
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3Jp
cHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAg
IH0KKworICAgIGlmIChbbV9nZHJDb3VudE51bSBpbnRWYWx1ZV0pCisgICAgICAgIENNU2V0QXR0
YWNobWVudChzYW1wbGVCdWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVh
bERlY29kZXJSZWZyZXNoLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKW1fZ2RyQ291bnROdW0uZ2V0KCks
IGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisKKyAgICByZXR1cm4gc2FtcGxl
QnVmZmVyOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1Nh
bXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUgbG93V2F0ZXJUaW1lKQoreworICAg
IGlmICghbV9jb252ZXJ0ZXIpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSAoQ01TYW1wbGVCdWZm
ZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1faW5wdXRCdWZm
ZXJRdWV1ZS5nZXQoKSkpKTsKKworICAgICAgICBtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25U
aW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIp
OworICAgICAgICBtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBs
ZUJ1ZmZlckdldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIpOworCisgICAgICAg
IGF1dG8gZm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0
aW9uKGJ1ZmZlcik7CisgICAgICAgIGlmICghaW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9y
bWF0RGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRpb24sIG1fb3V0cHV0Q29kZWNUeXBlKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3aGlsZSAoQ01USU1FX0lTX0lOVkFMSUQo
bG93V2F0ZXJUaW1lKSB8fCBDTVRJTUVfQ09NUEFSRV9JTkxJTkUobG93V2F0ZXJUaW1lLCA8LCBD
TUJ1ZmZlclF1ZXVlR2V0RHVyYXRpb24obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpIHsKKyAg
ICAgICAgQXVkaW9CdWZmZXJMaXN0IGZpbGxCdWZmZXJMaXN0OworCisgICAgICAgIGZpbGxCdWZm
ZXJMaXN0Lm1OdW1iZXJCdWZmZXJzID0gMTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZl
cnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQ2hhbm5lbHNQZXJG
cmFtZTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9
IChVSW50MzIpbV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpOworICAgICAgICBmaWxsQnVm
ZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSA9IG1fZGVzdGluYXRpb25CdWZmZXIuZGF0YSgpOwor
CisgICAgICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5t
Qnl0ZXNQZXJQYWNrZXQgPyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA6IG1f
bWF4T3V0cHV0UGFja2V0U2l6ZTsKKyAgICAgICAgVUludDMyIG51bU91dHB1dFBhY2tldHMgPSAo
VUludDMyKW1fZGVzdGluYXRpb25CdWZmZXIuY2FwYWNpdHkoKSAvIG91dHB1dFBhY2tldFNpemU7
CisKKyAgICAgICAgYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIo
bV9jb252ZXJ0ZXIuZ2V0KCksIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MsIHRo
aXMsICZudW1PdXRwdXRQYWNrZXRzLCAmZmlsbEJ1ZmZlckxpc3QsIG1fZGVzdGluYXRpb25QYWNr
ZXREZXNjcmlwdGlvbnMuZGF0YSgpKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFudW1P
dXRwdXRQYWNrZXRzKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBidWZmZXIg
PSBzYW1wbGVCdWZmZXJXaXRoTnVtUGFja2V0cyhudW1PdXRwdXRQYWNrZXRzLCBmaWxsQnVmZmVy
TGlzdCk7CisKKyAgICAgICAgYXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoYnVmZmVyKTsKKwor
ICAgICAgICBlcnJvciA9IENNU2FtcGxlQnVmZmVyU2V0T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0
YW1wKGJ1ZmZlciwgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wKTsKKyAgICAg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNhbXBsZUJ1ZmZlclNldE91dHB1dFBy
ZXNlbnRhdGlvblRpbWVTdGFtcCBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIENNVGltZSBuYXRpdmVEdXJhdGlvbiA9IENN
U2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50TmF0aXZl
UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01UaW1lQWRkKG1fY3VycmVudE5hdGl2ZVByZXNlbnRh
dGlvblRpbWVTdGFtcCwgbmF0aXZlRHVyYXRpb24pOworCisgICAgICAgIENNVGltZSBvdXRwdXRE
dXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0T3V0cHV0RHVyYXRpb24oYnVmZmVyKTsKKyAgICAg
ICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01UaW1lQWRkKG1fY3Vy
cmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCwgb3V0cHV0RHVyYXRpb24pOworCisgICAg
ICAgIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQo
KSwgYnVmZmVyKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZl
clF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0KK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKiBudW1PdXRw
dXRQYWNrZXRzUHRyLCBBdWRpb0J1ZmZlckxpc3QqIGF1ZGlvQnVmZmVyTGlzdCwgQXVkaW9TdHJl
YW1QYWNrZXREZXNjcmlwdGlvbioqIHBhY2tldERlc2NyaXB0aW9uT3V0KQoreworICAgIGNvbnN0
IFVJbnQzMiBudW1QYWNrZXRzVG9Db3B5ID0gKm51bU91dHB1dFBhY2tldHNQdHI7CisgICAgc2l6
ZV90IG51bUJ5dGVzVG9Db3B5ID0gKG51bVBhY2tldHNUb0NvcHkgKiBtX3NvdXJjZUZvcm1hdC5t
Qnl0ZXNQZXJQYWNrZXQpOworICAgIHNpemVfdCBjdXJPZmZzZXRJblNyY0J1ZmZlciA9IDA7CisK
KyAgICBpZiAoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAxKSB7CisgICAgICAg
IG1fc291cmNlQnVmZmVyLnJlc2VydmVDYXBhY2l0eShudW1CeXRlc1RvQ29weSk7CisKKyAgICAg
ICAgd2hpbGUgKG51bUJ5dGVzVG9Db3B5KSB7CisgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9j
a0J1ZmZlclNpemUgPD0gbV9jdXJPZmZzZXRJblNhbXBsZUJidWYpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBtX3NhbXBs
ZUJsb2NrQnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1
ZmZlclNpemUgPSAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChD
TUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0g
YWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVl
dWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7CisgICAgICAg
ICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihz
YW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVm
ZmVyU2l6ZSA9IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fc2FtcGxlQmxvY2tCdWZmZXIu
Z2V0KCkpOworICAgICAgICAgICAgICAgIG1fY3VyT2Zmc2V0SW5TYW1wbGVCYnVmID0gMDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAg
ICAgICAgICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiA9IHN0ZDo6
bWluKG51bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgLSBtX2N1ck9mZnNl
dEluU2FtcGxlQmJ1ZikpOworICAgICAgICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9j
a0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJPZmZz
ZXRJblNhbXBsZUJidWYsIG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYsIChtX3NvdXJjZUJ1
ZmZlci5kYXRhKCkgKyBjdXJPZmZzZXRJblNyY0J1ZmZlcikpKSB7CisgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIG51bUJ5dGVzVG9Db3B5IC09IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBs
ZUJidWY7CisgICAgICAgICAgICAgICAgY3VyT2Zmc2V0SW5TcmNCdWZmZXIgKz0gbnVtQnl0ZXNU
b0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgICAgICBtX2N1ck9mZnNldEluU2FtcGxl
QmJ1ZiArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGEgPSBtX3Nv
dXJjZUJ1ZmZlci5kYXRhKCk7CisgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0u
bURhdGFCeXRlU2l6ZSA9IGN1ck9mZnNldEluU3JjQnVmZmVyOworICAgICAgICBhdWRpb0J1ZmZl
ckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fc291cmNlRm9ybWF0Lm1DaGFu
bmVsc1BlckZyYW1lOworICAgICAgICAqbnVtT3V0cHV0UGFja2V0c1B0ciA9IChhdWRpb0J1ZmZl
ckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgLyBtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQ
ZXJQYWNrZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdWRpb0J1ZmZlckxpc3QtPm1O
dW1iZXJCdWZmZXJzID09IDIpCisgICAgICAgICAgICBudW1CeXRlc1RvQ29weSA9IG51bUJ5dGVz
VG9Db3B5ICogMjsKKworICAgICAgICBpZiAoQ01CdWZmZXJRdWV1ZUlzRW1wdHkobV9pbnB1dEJ1
ZmZlclF1ZXVlLmdldCgpKSkgeworICAgICAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVy
c1swXS5tRGF0YSA9IG51bGxwdHI7CisgICAgICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZm
ZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSAwOworICAgICAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5t
QnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgICAgICAgICBhdWRpb0J1ZmZl
ckxpc3QtPm1CdWZmZXJzWzFdLm1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGF1ZGlvQnVm
ZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubURhdGFCeXRlU2l6ZSA9IDA7CisgICAgICAgICAgICBhdWRp
b0J1ZmZlckxpc3QtPm1CdWZmZXJzWzFdLm1OdW1iZXJDaGFubmVscyA9IDE7CisKKyAgICAgICAg
ICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0
X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJR
dWV1ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRD
RigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVC
dWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAgICAgICAg
bV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX3Nh
bXBsZUJsb2NrQnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIG1fc291cmNlQnVmZmVyLnJlc2Vy
dmVDYXBhY2l0eShtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSk7CisgICAgICAgICAgICBpZiAoYXV0
byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKG1fc2FtcGxlQmxvY2tCdWZmZXIu
Z2V0KCksIDAsIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplLCBtX3NvdXJjZUJ1ZmZlci5kYXRhKCkp
KSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRlcmxlYXZlZCBkYXRh
IGJ5IHVuaW50ZXJsZWF2aW5nIG1fc291cmNlQnVmZmVyIGlmIG5lZWRlZC4KKyAgICAgICAgICAg
IEFTU0VSVChtX3NvdXJjZUZvcm1hdC5tRm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNO
b25JbnRlcmxlYXZlZCk7CisKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IG1fc2FtcGxl
QmxvY2tCdWZmZXJTaXplIC8gMjsKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZl
cnNbMF0ubURhdGEgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7CisgICAgICAgICAgICBhdWRpb0J1
ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBidWZmZXJTaXplOworICAgICAg
ICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOwor
CisgICAgICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzFdLm1EYXRhID0gbV9zb3Vy
Y2VCdWZmZXIuZGF0YSgpICsgYnVmZmVyU2l6ZTsKKyAgICAgICAgICAgIGF1ZGlvQnVmZmVyTGlz
dC0+bUJ1ZmZlcnNbMV0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgICAgICAgICBh
dWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzFdLm1OdW1iZXJDaGFubmVscyA9IDE7CisKKyAgICAg
ICAgICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNb
MF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAocGFja2V0RGVzY3JpcHRpb25PdXQpCisgICAgICAgICpw
YWNrZXREZXNjcmlwdGlvbk91dCA9IE5VTEw7CisKKyAgICByZXR1cm4gbm9FcnI7Cit9CisKK3Zv
aWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2Ft
cGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVu
cXVldWUobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIHBy
b2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUobV9sb3dXYXRlclRpbWUpOworfQor
Cit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKENNU2Ft
cGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0
Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykKKyAgICAgICAgICAgIHByb2Nl
c3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVCdWZmZXJSZWYg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQorewor
ICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVy
UXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisKK1JldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0
cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJS
ZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1fb3V0
cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCBiMTQ3Y2EyODgyOWIwZjEwMzBi
ZGE3NGEwODQyNmM0NTY1ZTk4NzFlLi4zMjBiMWM4OGEzMTY1NWM5ZGYxZjg1ZDM0NjYwM2EwOGZj
NzFmMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaApAQCAtMjUsNiArMjUsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKIAogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgpAQCAtMzQsMTEgKzM1LDE2IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5h
cnlTZW1hcGhvcmUuaD4KKyNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KKyNp
bmNsdWRlIDxDb3JlTWVkaWEvQ01UaW1lLmg+CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2Ft
cGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1
ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7Cit0eXBlZGVmIHN0
cnVjdCBvcGFxdWVDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuICpDTUJ1ZmZlclF1ZXVlVHJpZ2dl
clRva2VuOwogCiBPQkpDX0NMQVNTIEFWQXNzZXRXcml0ZXI7CiBPQkpDX0NMQVNTIEFWQXNzZXRX
cml0ZXJJbnB1dDsKK09CSkNfQ0xBU1MgV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlOwogCiBuYW1l
c3BhY2UgV1RGIHsKIGNsYXNzIE1lZGlhVGltZTsKQEAgLTQ2LDI5ICs1Miw4MSBAQCBjbGFzcyBN
ZWRpYVRpbWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOwogY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNsYXNzIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7CitjbGFzcyBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiB7CitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRo
cmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlciwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFnZXI+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoY29uc3Qg
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNvbnN0IE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlKiB2aWRlb1RyYWNrKTsKICAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyPiBjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KTsKICAgICB+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKTsKLSAgICAKLSAgICBib29sIHNl
dHVwV3JpdGVyKCk7Ci0gICAgYm9vbCBzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhlaWdo
dCk7Ci0gICAgYm9vbCBzZXRBdWRpb0lucHV0KCk7CisKICAgICB2b2lkIGFwcGVuZFZpZGVvU2Ft
cGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxl
QnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNv
cmRpbmcoKTsKICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpPiYmKTsKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisg
ICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5k
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgorI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCisgICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9vbCBo
YXNBdWRpbywgYm9vbCBoYXNWaWRlbyk7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgYm9vbCBp
bml0aWFsaXplKCk7CisKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZm
ZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CisgICAgc3RhdGlj
IHZvaWQgY29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVy
UXVldWVUcmlnZ2VyVG9rZW4pOworCisgICAgdm9pZCBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAg
dm9pZCBmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisgICAgdm9pZCBhcHBlbmRDb21w
cmVzc2VkU2FtcGxlQnVmZmVycygpOworCisgICAgYm9vbCBhcHBlbmRDb21wcmVzc2VkQXVkaW9T
YW1wbGVCdWZmZXIoKTsKKyAgICBib29sIGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZl
cigpOworCisgICAgdm9pZCBwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygp
OworICAgIHZvaWQgcHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKKyNl
bHNlCiAgICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0
ZXI+JiYsIFN0cmluZyYmIHBhdGgpOwogICAgIHZvaWQgY2xlYXIoKTsKIAorICAgIGJvb2wgc2V0
dXBXcml0ZXIoKTsKKyAgICBib29sIHNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KTsKKyAgICBib29sIHNldEF1ZGlvSW5wdXQoKTsKKyNlbmRpZgorCisgICAgYm9vbCBtX2hhc1N0
YXJ0ZWRXcml0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsK
KwogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKKworICAgIGJvb2wgbV9p
c1N0b3BwaW5nIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7Cisg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4gbV9mZXRj
aERhdGFDb21wbGV0aW9uSGFuZGxlcjsKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisg
ICAgYm9vbCBtX2hhc0F1ZGlvOworICAgIGJvb2wgbV9oYXNWaWRlbzsKKworICAgIFJldGFpblB0
cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CisgICAg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXBy
ZXNzb3I7CisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0Fzc2V0V3Jp
dGVySW5wdXQ7CisKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV92aWRl
b0Zvcm1hdERlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I+IG1fdmlkZW9Db21wcmVzc29yOworICAgIFJldGFpblB0cjxBVkFzc2V0V3Jp
dGVySW5wdXQ+IG1fdmlkZW9Bc3NldFdyaXRlcklucHV0OworICAgIENNVGltZSBtX2xhc3RWaWRl
b1ByZXNlbnRhdGlvblRpbWU7CisgICAgQ01UaW1lIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lOwor
ICAgIGJvb2wgbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzIHsgZmFsc2UgfTsKKworICAgIFJldGFp
blB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+IG1fd3JpdGVyRGVsZWdhdGU7CisjZWxzZQog
ICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9JbnB1dDsKICAgICBSZXRh
aW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX2F1ZGlvSW5wdXQ7CiAKQEAgLTc4LDE3ICsxMzYs
MTMgQEAgcHJpdmF0ZToKICAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nU2VtYXBo
b3JlOwogICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZTsK
ICAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmU7Ci0gICAg
Ym9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNTdG9wcGVk
IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNGaXJzdEF1ZGlvU2FtcGxlIHsgdHJ1ZSB9OwogICAg
IGRpc3BhdGNoX3F1ZXVlX3QgbV9hdWRpb1B1bGxRdWV1ZTsKICAgICBkaXNwYXRjaF9xdWV1ZV90
IG1fdmlkZW9QdWxsUXVldWU7CiAgICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVm
Pj4gbV92aWRlb0J1ZmZlclBvb2w7CiAgICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPj4gbV9hdWRpb0J1ZmZlclBvb2w7CiAKLSAgICBib29sIG1faXNTdG9wcGluZyB7IGZhbHNl
IH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwotICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhh
bmRsZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAyMzM1
NGY0Nzg0ZGUwOTJmMDQ4N2MxODU0ZmM1YjI2YTVlMjIxMWFjLi4yNTE3MTlkOGU1NGNhMDI3ODE1
NjM5NjU3ZTBhZjUwMDA4YzBmOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0yNiwxMTEgKzI2LDEzMCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aCIKIAorI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgIk1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW0iCisjZWxzZQorCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAorI2luY2x1ZGUgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUu
aCIKKyNpbmNsdWRlICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJX
ZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRl
ci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQuaD4KKyNpbmNs
dWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcl9Qcml2YXRlLmg+CiAjaW5jbHVkZSA8cGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNh
c3RzQ0YuaD4KIAogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAK
LSN1bmRlZiBBVkVuY29kZXJCaXRSYXRlS2V5Ci0jZGVmaW5lIEFWRW5jb2RlckJpdFJhdGVLZXkg
Z2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZGb3JtYXRJREtl
eQotI2RlZmluZSBBVkZvcm1hdElES2V5IGdldEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQot
I3VuZGVmIEFWTnVtYmVyT2ZDaGFubmVsc0tleQotI2RlZmluZSBBVk51bWJlck9mQ2hhbm5lbHNL
ZXkgZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBBVlNhbXBs
ZVJhdGVLZXkKLSNkZWZpbmUgQVZTYW1wbGVSYXRlS2V5IGdldEFWU2FtcGxlUmF0ZUtleVdpdGhG
YWxsYmFjaygpCitAaW50ZXJmYWNlIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxBVkFzc2V0V3JpdGVyRGVsZWdhdGU+IHsKKyAgICBXZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyPiBtX3dyaXRlcjsKK30KIAotbmFtZXNwYWNlIFdlYkNvcmUgewor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlciopd3JpdGVyOworLSAodm9pZCljbG9zZTsKKy0gKHZvaWQpZmluaXNoOwogCi11
c2luZyBuYW1lc3BhY2UgUEFMOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZBc3NldFdy
aXRlckRlbGVnYXRlIHsKK307CiAKLXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZGb3JtYXRJREtleVdp
dGhGYWxsYmFjaygpCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKil3cml0ZXIKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2Fk
X0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9B
VkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoc2VsZikKKyAgICAgICAgc2VsZi0+
bV93cml0ZXIgPSBtYWtlV2Vha1B0cih3cml0ZXIpOwogCi0gICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkZvcm1hdElES2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZG
b3JtYXRJREtleSI7CisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqZ2V0
QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQpZGVhbGxvYwogewot
ICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgp
KQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVs
c0tleSgpOwotCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBB
Vk51bWJlck9mQ2hhbm5lbHNLZXkiKTsKLSAgICByZXR1cm4gQCJBVk51bWJlck9mQ2hhbm5lbHNL
ZXkiOworICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVlNh
bXBsZVJhdGVLZXlXaXRoRmFsbGJhY2soKQorLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdy
aXRlciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YTooTlNEYXRh
ICopZnJhZ21lbnRlZEhlYWRlckRhdGEKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRh
dGlvbl9BVlNhbXBsZVJhdGVLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRh
dGlvbl9BVlNhbXBsZVJhdGVLZXkoKTsKKyAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0ZXIpOwor
ICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2l6ZSA9IFtmcmFn
bWVudGVkSGVhZGVyRGF0YSBsZW5ndGhdKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4oc2Vs
ZiksIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihbZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyKQorICAgICAg
ICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZT
YW1wbGVSYXRlS2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZTYW1wbGVSYXRlS2V5IjsKKyAgICBpZiAo
bV93cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihbZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJE
YXRhIGxlbmd0aF0pOwogfQogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFWRW5jb2RlckJpdFJhdGVL
ZXlXaXRoRmFsbGJhY2soKQorLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdyaXRlciAqKWFz
c2V0V3JpdGVyIGRpZFByb2R1Y2VGcmFnbWVudGVkTWVkaWFEYXRhOihOU0RhdGEgKilmcmFnbWVu
dGVkTWVkaWFEYXRhIGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQ6KEFWRnJhZ21lbnRlZE1lZGlh
RGF0YVJlcG9ydCAqKWZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQKIHsKLSAgICBpZiAoUEFMOjpj
YW5Mb2FkX0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCkpCi0gICAgICAgIHJldHVy
biBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgpOworICAgIFVOVVNF
RF9QQVJBTShhc3NldFdyaXRlcik7CisgICAgVU5VU0VEX1BBUkFNKGZyYWdtZW50ZWRNZWRpYURh
dGFSZXBvcnQpOworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8g
c2l6ZSA9IFtmcmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0pIHsKKyAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRl
bGVnYXRlPihzZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkTWVkaWFEYXRhIGJ5dGVzXSksIHNpemUp
XSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLT5tX3dyaXRl
cikKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+bV93cml0ZXItPmFwcGVuZERh
dGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0
byBsb2FkIEFWRW5jb2RlckJpdFJhdGVLZXkiKTsKLSAgICByZXR1cm4gQCJBVkVuY29kZXJCaXRS
YXRlS2V5IjsKKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLT5hcHBlbmREYXRh
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBb
ZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5ndGhdKTsKIH0KIAotUmVmUHRyPE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGNvbnN0IE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBhdWRpb1RyYWNrLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSogdmlkZW9UcmFjaykKKy0gKHZvaWQpY2xvc2UKIHsKLSAgICBpbnQgd2lkdGggPSAw
LCBoZWlnaHQgPSAwOwotICAgIGlmICh2aWRlb1RyYWNrKSB7Ci0gICAgICAgIGF1dG8mIHNldHRp
bmdzID0gdmlkZW9UcmFjay0+c2V0dGluZ3MoKTsKLSAgICAgICAgd2lkdGggPSBzZXR0aW5ncy53
aWR0aCgpOwotICAgICAgICBoZWlnaHQgPSBzZXR0aW5ncy5oZWlnaHQoKTsKLSAgICB9Ci0gICAg
cmV0dXJuIGNyZWF0ZSghIWF1ZGlvVHJhY2ssIHdpZHRoLCBoZWlnaHQpOworICAgIG1fd3JpdGVy
ID0gbnVsbHB0cjsKIH0KIAotUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwg
aW50IGhlaWdodCkKKy0gKHZvaWQpZmluaXNoCiB7Ci0gICAgTlNTdHJpbmcgKmRpcmVjdG9yeSA9
IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAInZpZGVvcyIpOwotICAgIE5T
U3RyaW5nICpmaWxlbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiLyVsbGQubXA0
IiwgQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSkudmFsdWVdOwotICAg
IE5TU3RyaW5nICpwYXRoID0gW2RpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpmaWxl
bmFtZV07CisgICAgbV93cml0ZXIgPSBudWxscHRyOworfQogCi0gICAgTlNVUkwgKm91dHB1dFVS
TCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF07Ci0gICAgU3RyaW5nIGZpbGVQYXRoID0g
W3BhdGggVVRGOFN0cmluZ107Ci0gICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgYXV0byBh
dkFzc2V0V3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnN0YW5jZSgp
IGluaXRXaXRoVVJMOm91dHB1dFVSTCBmaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVy
cm9yXSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3Ig
Y29kZSAlbGQiLCAobG9uZyllcnJvci5jb2RlKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQorQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBhdXRvIHdyaXRlciA9IGFk
b3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoV1RGTW92ZShhdkFzc2V0V3Jp
dGVyKSwgV1RGTW92ZShmaWxlUGF0aCkpKTsKK3VzaW5nIG5hbWVzcGFjZSBQQUw7CiAKLSAgICBp
ZiAoaGFzQXVkaW8gJiYgIXdyaXRlci0+c2V0QXVkaW9JbnB1dCgpKQorUmVmUHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGJv
b2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBhdXRvIHdyaXRlciA9
IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoaGFzQXVkaW8sIHdpZHRo
ICYmIGhlaWdodCkpOworICAgIGlmICghd3JpdGVyLT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiB3cml0ZXI7Cit9CiAKLSAgICBpZiAod2lkdGggJiYg
aGVpZ2h0KSB7Ci0gICAgICAgIGlmICghd3JpdGVyLT5zZXRWaWRlb0lucHV0KHdpZHRoLCBoZWln
aHQpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9p
ZCAqbWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4p
Cit7CisgICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7CisgICAgd3JpdGVyLT5wcm9jZXNz
TmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpOworfQogCi0gICAgcmV0dXJuIFdURk1v
dmUod3JpdGVyKTsKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRB
dWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQgKm1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
LCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKQoreworICAgIGF1dG8gKndyaXRlciA9IHN0YXRp
Y19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKj4obWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIpOworICAgIHdyaXRlci0+cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZl
cnMoKTsKIH0KIAotTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiYmIGF2QXNzZXRXcml0ZXIsIFN0cmlu
ZyYmIGZpbGVQYXRoKQotICAgIDogbV93cml0ZXIoV1RGTW92ZShhdkFzc2V0V3JpdGVyKSkKLSAg
ICAsIG1fcGF0aChXVEZNb3ZlKGZpbGVQYXRoKSkKK01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVv
KQorICAgIDogbV9oYXNBdWRpbyhoYXNBdWRpbykKKyAgICAsIG1faGFzVmlkZW8oaGFzVmlkZW8p
CiB7CiB9CiAKQEAgLTEzOSw3OSArMTU4LDE3MSBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICBjbGVhcigpOwogfQogCi12b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVhcigpCitib29sIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjppbml0aWFsaXplKCkKIHsKLSAgICBpZiAobV92aWRlb0lucHV0KSB7Ci0g
ICAgICAgIG1fdmlkZW9JbnB1dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1f
dmlkZW9QdWxsUXVldWUpOworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIG1fd3JpdGVy
ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRXaXRoRmls
ZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOworICAgIGlmIChlcnJvcikgewor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3Jp
dGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29k
ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKG1fYXVkaW9JbnB1dCkg
ewotICAgICAgICBtX2F1ZGlvSW5wdXQuY2xlYXIoKTsKLSAgICAgICAgZGlzcGF0Y2hfcmVsZWFz
ZShtX2F1ZGlvUHVsbFF1ZXVlKTsKKworICAgIG1fd3JpdGVyRGVsZWdhdGUgPSBhZG9wdE5TKFtb
V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFdyaXRlcjogdGhpc10pOwor
ICAgIFttX3dyaXRlci5nZXQoKSBzZXREZWxlZ2F0ZTptX3dyaXRlckRlbGVnYXRlLmdldCgpXTsK
KworICAgIGlmIChtX2hhc0F1ZGlvKSB7CisgICAgICAgIG1fYXVkaW9Db21wcmVzc29yID0gQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoY29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVm
ZmVyQ2FsbGJhY2ssIHRoaXMpOworICAgICAgICBpZiAoIW1fYXVkaW9Db21wcmVzc29yKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAobV93cml0ZXIpCi0gICAgICAg
IG1fd3JpdGVyLmNsZWFyKCk7CisgICAgaWYgKG1faGFzVmlkZW8pIHsKKyAgICAgICAgbV92aWRl
b0NvbXByZXNzb3IgPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShrQ01WaWRl
b0NvZGVjVHlwZV9IMjY0LCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhp
cyk7CisgICAgICAgIGlmICghbV92aWRlb0NvbXByZXNzb3IpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQogCi0gICAgbV9kYXRhID0gbnVsbHB0
cjsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFD
b21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwor
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRl
b1NhbXBsZUJ1ZmZlcnMoKQoreworICAgIEFTU0VSVChtX2hhc1ZpZGVvKTsKKyAgICBpZiAoIW1f
dmlkZW9Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAgICBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRp
b24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKG1fdmlkZW9Db21wcmVzc29y
LT5nZXRPdXRwdXRTYW1wbGVCdWZmZXIoKSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dl
YWtQdHIgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10geworICAgICAgICAgICAgaWYgKCF3ZWFr
UHRyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgKG1faGFzQXVkaW8gJiYgIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICAgICAg
fSk7CisgICAgfQorICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGluZykKKyAgICAgICAgcmV0dXJu
OworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CiB9CiAKLWJvb2wgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRB
dWRpb1NhbXBsZUJ1ZmZlcnMoKQogewotICAgIEFTU0VSVCghbV92aWRlb0lucHV0KTsKLSAgICAK
LSAgICBOU0RpY3Rpb25hcnkgKmNvbXByZXNzaW9uUHJvcGVydGllcyA9IEB7Ci0gICAgICAgIEFW
VmlkZW9BdmVyYWdlQml0UmF0ZUtleSA6IFtOU051bWJlciBudW1iZXJXaXRoSW50OndpZHRoICog
aGVpZ2h0ICogMTJdLAotICAgICAgICBBVlZpZGVvRXhwZWN0ZWRTb3VyY2VGcmFtZVJhdGVLZXkg
OiBAKDMwKSwKLSAgICAgICAgQVZWaWRlb01heEtleUZyYW1lSW50ZXJ2YWxLZXkgOiBAKDEyMCks
Ci0gICAgICAgIEFWVmlkZW9Qcm9maWxlTGV2ZWxLZXkgOiBBVlZpZGVvUHJvZmlsZUxldmVsSDI2
NE1haW5BdXRvTGV2ZWwKLSAgICB9OwotCi0gICAgTlNEaWN0aW9uYXJ5ICp2aWRlb1NldHRpbmdz
ID0gQHsKLSAgICAgICAgQVZWaWRlb0NvZGVjS2V5OiBBVlZpZGVvQ29kZWNIMjY0LAotICAgICAg
ICBBVlZpZGVvV2lkdGhLZXk6IFtOU051bWJlciBudW1iZXJXaXRoSW50OndpZHRoXSwKLSAgICAg
ICAgQVZWaWRlb0hlaWdodEtleTogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6aGVpZ2h0XSwKLSAg
ICAgICAgQVZWaWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleTogY29tcHJlc3Npb25Qcm9wZXJ0
aWVzCi0gICAgfTsKKyAgICBBU1NFUlQobV9oYXNBdWRpbyk7CisgICAgaWYgKCFtX2F1ZGlvRm9y
bWF0RGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uID0gQ01T
YW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihtX2F1ZGlvQ29tcHJlc3Nvci0+Z2V0T3V0
cHV0U2FtcGxlQnVmZmVyKCkpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrUHRyID0g
bWFrZVdlYWtQdHIodGhpcyksIHRoaXNdIHsKKyAgICAgICAgICAgIGlmICghd2Vha1B0cikKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX2hh
c1ZpZGVvICYmICFtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24pCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAgICAgIH0pOworICAg
IH0KKyAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBh
cHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKCkKK3sKKyAgICBpZiAobV9oYXNWaWRlbykg
eworICAgICAgICBtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NB
VkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBl
VmlkZW8gb3V0cHV0U2V0dGluZ3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6bV92aWRlb0Zvcm1hdERl
c2NyaXB0aW9uLmdldCgpXSk7CisgICAgICAgIGlmICghW21fd3JpdGVyLmdldCgpIGNhbkFkZElu
cHV0Om1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpXSkgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3Rh
cnRBc3NldFdyaXRlciBmYWlsZWQgY2FuQWRkSW5wdXQgZm9yIHZpZGVvIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgW21fd3JpdGVyLmdldCgpIGFkZElucHV0Om1f
dmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpXTsKKyAgICB9CiAgICAgCi0gICAgbV92aWRlb0lu
cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5p
dFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBvdXRwdXRTZXR0aW5nczp2aWRlb1NldHRp
bmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7Ci0gICAgW21fdmlkZW9JbnB1dCBzZXRFeHBlY3Rz
TWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICBpZiAobV9oYXNBdWRpbykgeworICAgICAg
ICBtX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3Jp
dGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0
cHV0U2V0dGluZ3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9u
LmdldCgpXSk7CisgICAgICAgIGlmICghW21fd3JpdGVyLmdldCgpIGNhbkFkZElucHV0Om1fYXVk
aW9Bc3NldFdyaXRlcklucHV0LmdldCgpXSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdy
aXRlciBmYWlsZWQgY2FuQWRkSW5wdXQgZm9yIGF1ZGlvIik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgW21fd3JpdGVyLmdldCgpIGFkZElucHV0Om1fYXVkaW9Bc3Nl
dFdyaXRlcklucHV0LmdldCgpXTsKKyAgICB9CiAgICAgCi0gICAgaWYgKCFbbV93cml0ZXIgY2Fu
QWRkSW5wdXQ6bV92aWRlb0lucHV0LmdldCgpXSkgewotICAgICAgICBtX3ZpZGVvSW5wdXQgPSBu
dWxscHRyOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgInRoZSB2aWRl
byBpbnB1dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0ZXIiKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghW21fd3JpdGVyLmdldCgpIHN0YXJ0V3JpdGlu
Z10pIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlciBmYWlsZWQgc3RhcnRXcml0aW5nIik7
CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgW21fd3JpdGVyIGFkZElucHV0Om1fdmlkZW9J
bnB1dC5nZXQoKV07Ci0gICAgbV92aWRlb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0
ZSgiV2ViQ29yZVZpZGVvUmVjb3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVf
U0VSSUFMKTsKLSAgICByZXR1cm4gdHJ1ZTsKKworICAgIFttX3dyaXRlci5nZXQoKSBzdGFydFNl
c3Npb25BdFNvdXJjZVRpbWU6a0NNVGltZVplcm9dOworCisgICAgYXBwZW5kQ29tcHJlc3NlZFNh
bXBsZUJ1ZmZlcnMoKTsKKworICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOwogfQogCi1i
b29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRBdWRpb0lucHV0KCkKK2Jvb2wgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZl
cigpCiB7Ci0gICAgQVNTRVJUKCFtX2F1ZGlvSW5wdXQpOworICAgIGF1dG8gYnVmZmVyID0gbV9h
dWRpb0NvbXByZXNzb3ItPnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTlNEaWN0aW9uYXJ5ICphdWRpb1NldHRp
bmdzID0gQHsKLSAgICAgICAgQVZFbmNvZGVyQml0UmF0ZUtleSA6IEAoMjgwMDApLAotICAgICAg
ICBBVkZvcm1hdElES2V5IDogQChrQXVkaW9Gb3JtYXRNUEVHNEFBQyksCi0gICAgICAgIEFWTnVt
YmVyT2ZDaGFubmVsc0tleSA6IEAoMSksCi0gICAgICAgIEFWU2FtcGxlUmF0ZUtleSA6IEAoMjIw
NTApCi0gICAgfTsKKyAgICBpZiAoIVttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9y
TW9yZU1lZGlhRGF0YV0pCisgICAgICAgIFttX3dyaXRlciBmbHVzaF07CisgICAgW21fYXVkaW9B
c3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwor
ICAgIHJldHVybiB0cnVlOworfQogCi0gICAgbV9hdWRpb0lucHV0ID0gYWRvcHROUyhbUEFMOjph
bGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRp
YVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczphdWRpb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6
bmlsXSk7Ci0gICAgW21fYXVkaW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0
cnVlXTsKLSAgICAKLSAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1dDptX2F1ZGlvSW5wdXQu
Z2V0KCldKSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1dCA9IG51bGxwdHI7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIGF1ZGlvIGlucHV0IGlzIG5vdCBhbGxvd2Vk
IHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOworYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKCkKK3sKKyAgICBhdXRv
IGJ1ZmZlciA9IG1fdmlkZW9Db21wcmVzc29yLT50YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7Cisg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgW21fd3Jp
dGVyIGFkZElucHV0Om1fYXVkaW9JbnB1dC5nZXQoKV07Ci0gICAgbV9hdWRpb1B1bGxRdWV1ZSA9
IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUF1ZGlvUmVjb3JkaW5nUHVsbEJ1ZmZlclF1
ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKworICAgIG1fbGFzdFZpZGVvUHJlc2VudGF0
aW9uVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlci5n
ZXQoKSk7CisgICAgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUgPSBDTVNhbXBsZUJ1ZmZlckdldERl
Y29kZVRpbWVTdGFtcChidWZmZXIuZ2V0KCkpOworICAgIG1faGFzRW5jb2RlZFZpZGVvU2FtcGxl
cyA9IHRydWU7CisKKyAgICBpZiAoIVttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9y
TW9yZU1lZGlhRGF0YV0pCisgICAgICAgIFttX3dyaXRlciBmbHVzaF07CisgICAgW21fdmlkZW9B
c3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwog
ICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjph
cHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpCit7CisgICAgd2hpbGUgKGFwcGVuZENvbXBy
ZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpIHx8IGFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1
ZmZlcigpKSB7IH07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRFbmRzUHJldmlvdXNT
YW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3JpdGVySW5wdXQgKmFzc2V0V3JpdGVySW5wdXQs
IENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBkZWNvZGluZ1RpbWVTdGFtcCkK
K3sKKyAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nSW5mbyA9IHsga0NNVGltZUludmFsaWQs
IHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZGVjb2RpbmdUaW1lU3RhbXB9OworCisgICAgQ01TYW1w
bGVCdWZmZXJSZWYgYnVmZmVyID0gTlVMTDsKKyAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZm
ZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgdHJ1ZSwgTlVMTCwgTlVMTCwgTlVM
TCwgMCwgMSwgJnRpbWluZ0luZm8sIDAsIE5VTEwsICZidWZmZXIpOworICAgIGlmIChlcnJvcikg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2VyIGZhaWxl
ZCBDTVNhbXBsZUJ1ZmZlckNyZWF0ZSB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRihidWZmZXIpOworCisgICAg
Q01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NNU2FtcGxlQnVmZmVyQXR0YWNo
bWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwga0NGQm9vbGVhblRydWUsIGtDTUF0
dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisgICAgaWYgKCFbYXNzZXRXcml0ZXJJbnB1
dCBhcHBlbmRTYW1wbGVCdWZmZXI6c2FtcGxlQnVmZmVyLmdldCgpXSkKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBl
bmRTYW1wbGVCdWZmZXIgdG8gd3JpdGVyIGlucHV0IGZhaWxlZCIpOworfQorCit2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCkKK3sK
KyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworICAgIAorICAgIGlmIChtX2hh
c0VuY29kZWRWaWRlb1NhbXBsZXMpCisgICAgICAgIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1
cmF0aW9uTWFya2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpLCBtX2xhc3RWaWRlb1By
ZXNlbnRhdGlvblRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsKK30KKwordm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQoreworICAgIGlmIChtX3dyaXRlcikKKyAg
ICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKworICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgaWYg
KGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhh
bmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKK30KKwogc3RhdGlj
IGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZmZXJXaXRo
Q3VycmVudFRpbWVTdGFtcChDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikKIHsKICAg
ICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xv
Y2soKSk7CkBAIC0yMjEsNTggKzMzMiwyOSBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNh
bXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKAogICAg
IFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWVJbmZvKGNvdW50KTsKICAgICBDTVNhbXBs
ZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRp
bWVJbmZvLmRhdGEoKSwgJmNvdW50KTsKICAgICAKLSAgICBmb3IgKENNSXRlbUNvdW50IGkgPSAw
OyBpIDwgY291bnQ7IGkrKykgeworICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGNvdW50OyBpKysp
IHsKICAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1wID0ga0NNVGltZUludmFsaWQ7
CiAgICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IHN0YXJ0VGltZTsK
ICAgICB9CiAgICAgCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3QnVmZmVyID0gbnVsbHB0cjsK
LSAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEo
KSwgJm5ld0J1ZmZlcik7Ci0gICAgaWYgKGVycm9yKQorICAgIGlmIChhdXRvIGVycm9yID0gQ01T
YW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBv
cmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcikpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlciBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgcmV0dXJu
IGFkb3B0Q0YobmV3QnVmZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVy
KQogewotICAgIEFTU0VSVChtX3ZpZGVvSW5wdXQpOwotICAgIGlmIChtX2lzU3RvcHBlZCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKSB7Ci0gICAgICAg
IGlmICghW21fd3JpdGVyIHN0YXJ0V3JpdGluZ10pIHsKLSAgICAgICAgICAgIG1faXNTdG9wcGVk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3Jl
YXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAo
bG9uZylbbV93cml0ZXIgZXJyb3JdKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1l
KENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKLSAgICAgICAgbV9oYXNTdGFydGVkV3JpdGlu
ZyA9IHRydWU7Ci0gICAgICAgIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gcHJv
dGVjdGVkVGhpcyA9IHRoaXM7Ci0gICAgICAgIFttX3ZpZGVvSW5wdXQgcmVxdWVzdE1lZGlhRGF0
YVdoZW5SZWFkeU9uUXVldWU6bV92aWRlb1B1bGxRdWV1ZSB1c2luZ0Jsb2NrOlt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewotICAgICAgICAgICAgZG8gewot
ICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0
YV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOwotICAgICAgICAgICAgICAgIGlmIChtX3ZpZGVv
QnVmZmVyUG9vbC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gbV92aWRlb0J1ZmZlclBvb2wudGFrZUZpcnN0KCk7Ci0g
ICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFbbV92aWRlb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldKQotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpOwotICAgICAg
ICAgICAgaWYgKG1faXNTdG9wcGVkICYmIG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgICAgIFttX3ZpZGVvSW5wdXQgbWFya0FzRmluaXNoZWRdOwotICAgICAgICAg
ICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLnNpZ25hbCgpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9XTsKKyAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29yKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIAogICAgIGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29w
eVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7CiAgICAgaWYg
KCFidWZmZXJXaXRoQ3VycmVudFRpbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOwotICAgIG1fdmlkZW9CdWZmZXJQb29sLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcldpdGhDdXJyZW50VGltZSkpOworICAgIG1fdmlkZW9Db21wcmVzc29y
LT5hZGRTYW1wbGVCdWZmZXIoYnVmZmVyV2l0aEN1cnJlbnRUaW1lLmdldCgpKTsKIH0KIAogc3Rh
dGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9G
b3JtYXREZXNjcmlwdGlvbihjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlv
bikKQEAgLTI4MCw4ICszNjIsMTAgQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXRE
ZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb24KICAgICBhdXRv
IGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOwog
ICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0ID0gbnVsbHB0cjsKICAgICBhdXRvIGVy
cm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGJhc2ljRGVzY3JpcHRpb24sIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXQpOwotICAg
IGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTUF1ZGlvRm9ybWF0RGVz
Y3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihmb3JtYXQpOwogfQogCkBAIC0yOTAs
OTUgKzM3NCw2NyBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4g
Y3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzYwogICAgIENNVGltZSBzdGFydFRp
bWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsKICAgICBDTVNh
bXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBudWxscHRyOwogICAgIGF1dG8gZXJyb3IgPSBD
TUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgZm9ybWF0LCBzYW1wbGVDb3VudCwg
c3RhcnRUaW1lLCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYg
KGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIgY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVz
Y3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKIH0KIAogdm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3Qg
UGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVDb3VudCkKIHsK
LSAgICBBU1NFUlQobV9hdWRpb0lucHV0KTsKLSAgICBpZiAoKCFtX2hhc1N0YXJ0ZWRXcml0aW5n
ICYmIG1fdmlkZW9JbnB1dCkgfHwgbV9pc1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKICAgICBh
dXRvIGZvcm1hdCA9IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOwog
ICAgIGlmICghZm9ybWF0KQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1faXNGaXJzdEF1ZGlv
U2FtcGxlKSB7Ci0gICAgICAgIGlmICghbV92aWRlb0lucHV0KSB7Ci0gICAgICAgICAgICAvLyBh
dWRpby1vbmx5IHJlY29yZGluZy4KLSAgICAgICAgICAgIGlmICghW21fd3JpdGVyIHN0YXJ0V3Jp
dGluZ10pIHsKLSAgICAgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgW21fd3JpdGVyIHN0YXJ0
U2Vzc2lvbkF0U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9j
aygpKV07Ci0gICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAgICAgICAg
fQotICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IGZhbHNlOwotICAgICAgICBSZWZQdHI8
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwotICAgICAg
ICBbbV9hdWRpb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fYXVkaW9Q
dWxsUXVldWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyldIHsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAoIVttX2F1
ZGlvSW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2Nr
KTsKLSAgICAgICAgICAgICAgICBpZiAobV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1f
YXVkaW9CdWZmZXJQb29sLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGxvY2tlci51bmxv
Y2tFYXJseSgpOwotICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgYXBwZW5kU2FtcGxlQnVm
ZmVyOmJ1ZmZlci5nZXQoKV07Ci0gICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsKLSAgICAgICAg
ICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IG1hcmtBc0ZpbmlzaGVkXTsKLSAgICAgICAgICAg
ICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfV07Ci0gICAgfQogCiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVhdGVB
dWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMoZm9ybWF0LmdldCgpLCBzYW1w
bGVDb3VudCk7CiAgICAgaWYgKCFzYW1wbGVCdWZmZXIpCiAgICAgICAgIHJldHVybjsKKwogICAg
IGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJM
aXN0KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9y
RGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkpOwot
ICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTVNhbXBsZUJ1ZmZl
clNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0IGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2F1ZGlvTG9jayk7Ci0gICAgbV9hdWRpb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUoc2FtcGxl
QnVmZmVyKSk7CisgICAgbV9hdWRpb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihzYW1wbGVC
dWZmZXIuZ2V0KCkpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9w
UmVjb3JkaW5nKCkKIHsKICAgICBpZiAobV9pc1N0b3BwZWQpCiAgICAgICAgIHJldHVybjsKLQor
ICAgIAogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKICAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRp
bmcpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZB
c3NldFdyaXRlclN0YXR1c1dyaXRpbmcpOwotICAgIGlmIChtX3ZpZGVvSW5wdXQpCi0gICAgICAg
IG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLndhaXQoKTsKIAotICAgIGlmIChtX2F1ZGlv
SW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKKyAg
ICBpZiAobV92aWRlb0NvbXByZXNzb3IpCisgICAgICAgIG1fdmlkZW9Db21wcmVzc29yLT5maW5p
c2goKTsKKyAgICBtX2F1ZGlvQ29tcHJlc3Nvci0+ZmluaXNoKCk7CisKKyAgICBmbHVzaENvbXBy
ZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisKKyAgICBbbV93cml0ZXIgZmx1c2hdOwogCiAgICAgbV9p
c1N0b3BwaW5nID0gdHJ1ZTsKICAgICBbbV93cml0ZXIgZmluaXNoV3JpdGluZ1dpdGhDb21wbGV0
aW9uSGFuZGxlcjpbdGhpcywgd2Vha1B0ciA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1B0ciA9IFdURk1vdmUod2Vh
a1B0ciksIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1f
cGF0aCldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQ
dHIgPSBXVEZNb3ZlKHdlYWtQdHIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFr
UHRyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgbV9pc1N0b3BwaW5n
ID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikK
KyAgICAgICAgICAgIGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBXVEZNb3ZlKG1fZGF0YSk7CiAgICAgICAgICAgICAgICAg
bV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSBmYWxzZTsKICAgICAgICAgICAg
IG1faGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIG1faXNGaXJzdEF1ZGlv
U2FtcGxlID0gdHJ1ZTsKICAgICAgICAgICAgIGNsZWFyKCk7CiAgICAgICAgIH0pOwotICAgICAg
ICBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgfV07Ci0gICAgbV9maW5p
c2hXcml0aW5nU2VtYXBob3JlLndhaXQoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0zOTIsNiArNDQ4LDI1IEBAIHZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxTaGFyZWRCCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIp
KTsKIH0KIAordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAoIW1fZGF0YSkgeworICAgICAg
ICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKK30KKwordm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3sKKyAgICBpZiAoIW1fZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBXVEZNb3Zl
KGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9kYXRhLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
RmlsZUJhc2VkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczZmIxZWVhZTdkNGE0NTVlMzU0YTE2ZWI2YTY4NDY4
ZWQ0MTJlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQu
bW0KQEAgLTAsMCArMSwzODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKKyNpbmNsdWRlIDxBVkZv
dW5kYXRpb24vQVZBc3NldFdyaXRlci5oPgorI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0
V3JpdGVySW5wdXQuaD4KKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgorCisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworI3Vu
ZGVmIEFWRW5jb2RlckJpdFJhdGVLZXkKKyNkZWZpbmUgQVZFbmNvZGVyQml0UmF0ZUtleSBnZXRB
VkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKyN1bmRlZiBBVkZvcm1hdElES2V5Cisj
ZGVmaW5lIEFWRm9ybWF0SURLZXkgZ2V0QVZGb3JtYXRJREtleVdpdGhGYWxsYmFjaygpCisjdW5k
ZWYgQVZOdW1iZXJPZkNoYW5uZWxzS2V5CisjZGVmaW5lIEFWTnVtYmVyT2ZDaGFubmVsc0tleSBn
ZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2soKQorI3VuZGVmIEFWU2FtcGxlUmF0
ZUtleQorI2RlZmluZSBBVlNhbXBsZVJhdGVLZXkgZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxi
YWNrKCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgUEFMOworCitz
dGF0aWMgTlNTdHJpbmcgKmdldEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQoreworICAgIGlm
IChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKSkKKyAgICAgICAgcmV0
dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCk7CisKKyAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRm9ybWF0SURLZXkiKTsKKyAgICBy
ZXR1cm4gQCJBVkZvcm1hdElES2V5IjsKK30KKworc3RhdGljIE5TU3RyaW5nICpnZXRBVk51bWJl
ck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2soKQoreworICAgIGlmIChQQUw6OmNhbkxvYWRfQVZG
b3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgpKQorICAgICAgICByZXR1cm4gUEFMOjpn
ZXRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgpOworCisgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVk51bWJlck9mQ2hhbm5lbHNLZXkiKTsK
KyAgICByZXR1cm4gQCJBVk51bWJlck9mQ2hhbm5lbHNLZXkiOworfQorCitzdGF0aWMgTlNTdHJp
bmcgKmdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCit7CisgICAgaWYgKFBBTDo6Y2Fu
TG9hZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCisgICAgICAgIHJldHVybiBQQUw6
OmdldF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCk7CisKKyAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWU2FtcGxlUmF0ZUtleSIpOworICAgIHJldHVy
biBAIkFWU2FtcGxlUmF0ZUtleSI7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqZ2V0QVZFbmNvZGVy
Qml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCit7CisgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5k
YXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgpKQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZG
b3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVLZXkoKTsKKworICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZFbmNvZGVyQml0UmF0ZUtleSIpOworICAgIHJldHVy
biBAIkFWRW5jb2RlckJpdFJhdGVLZXkiOworfQorCitSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNBdWRp
bywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIE5TU3RyaW5nICpkaXJlY3RvcnkgPSBG
aWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJ2aWRlb3MiKTsKKyAgICBOU1N0
cmluZyAqZmlsZW5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIi8lbGxkLm1wNCIs
IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpLnZhbHVlXTsKKyAgICBO
U1N0cmluZyAqcGF0aCA9IFtkaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6ZmlsZW5h
bWVdOworCisgICAgTlNVUkwgKm91dHB1dFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0
aF07CisgICAgU3RyaW5nIGZpbGVQYXRoID0gW3BhdGggVVRGOFN0cmluZ107CisgICAgTlNFcnJv
ciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byBhdkFzc2V0V3JpdGVyID0gYWRvcHROUyhbUEFMOjph
bGxvY0FWQXNzZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRXaXRoVVJMOm91dHB1dFVSTCBmaWxlVHlw
ZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7CisgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIg
aW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAobG9uZyllcnJvci5jb2RlKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byB3cml0ZXIgPSBhZG9w
dFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRl
ciksIFdURk1vdmUoZmlsZVBhdGgpKSk7CisKKyAgICBpZiAoaGFzQXVkaW8gJiYgIXdyaXRlci0+
c2V0QXVkaW9JbnB1dCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICh3aWR0
aCAmJiBoZWlnaHQpIHsKKyAgICAgICAgaWYgKCF3cml0ZXItPnNldFZpZGVvSW5wdXQod2lkdGgs
IGhlaWdodCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1
cm4gV1RGTW92ZSh3cml0ZXIpOworfQorCitNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYgYXZBc3Nl
dFdyaXRlciwgU3RyaW5nJiYgZmlsZVBhdGgpCisgICAgOiBtX3dyaXRlcihXVEZNb3ZlKGF2QXNz
ZXRXcml0ZXIpKQorICAgICwgbV9wYXRoKFdURk1vdmUoZmlsZVBhdGgpKQoreworfQorCitNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKK3sK
KyAgICBjbGVhcigpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVh
cigpCit7CisgICAgaWYgKG1fdmlkZW9JbnB1dCkgeworICAgICAgICBtX3ZpZGVvSW5wdXQuY2xl
YXIoKTsKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3ZpZGVvUHVsbFF1ZXVlKTsKKyAgICB9
CisgICAgaWYgKG1fYXVkaW9JbnB1dCkgeworICAgICAgICBtX2F1ZGlvSW5wdXQuY2xlYXIoKTsK
KyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2F1ZGlvUHVsbFF1ZXVlKTsKKyAgICB9CisgICAg
aWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dyaXRlci5jbGVhcigpOworCisgICAgbV9kYXRhID0g
bnVsbHB0cjsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRj
aERhdGFDb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxw
dHIpOworfQorCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRWaWRlb0lucHV0
KGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBBU1NFUlQoIW1fdmlkZW9JbnB1dCk7Cisg
ICAgCisgICAgTlNEaWN0aW9uYXJ5ICpjb21wcmVzc2lvblByb3BlcnRpZXMgPSBAeworICAgICAg
ICBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0
aCAqIGhlaWdodCAqIDEyXSwKKyAgICAgICAgQVZWaWRlb0V4cGVjdGVkU291cmNlRnJhbWVSYXRl
S2V5IDogQCgzMCksCisgICAgICAgIEFWVmlkZW9NYXhLZXlGcmFtZUludGVydmFsS2V5IDogQCgx
MjApLAorICAgICAgICBBVlZpZGVvUHJvZmlsZUxldmVsS2V5IDogQVZWaWRlb1Byb2ZpbGVMZXZl
bEgyNjRNYWluQXV0b0xldmVsCisgICAgfTsKKworICAgIE5TRGljdGlvbmFyeSAqdmlkZW9TZXR0
aW5ncyA9IEB7CisgICAgICAgIEFWVmlkZW9Db2RlY0tleTogQVZWaWRlb0NvZGVjSDI2NCwKKyAg
ICAgICAgQVZWaWRlb1dpZHRoS2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0aF0sCisg
ICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6IFtOU051bWJlciBudW1iZXJXaXRoSW50OmhlaWdodF0s
CisgICAgICAgIEFWVmlkZW9Db21wcmVzc2lvblByb3BlcnRpZXNLZXk6IGNvbXByZXNzaW9uUHJv
cGVydGllcworICAgIH07CisgICAgCisgICAgbV92aWRlb0lucHV0ID0gYWRvcHROUyhbUEFMOjph
bGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRp
YVR5cGVWaWRlbyBvdXRwdXRTZXR0aW5nczp2aWRlb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6
bmlsXSk7CisgICAgW21fdmlkZW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0
cnVlXTsKKyAgICAKKyAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1dDptX3ZpZGVvSW5wdXQu
Z2V0KCldKSB7CisgICAgICAgIG1fdmlkZW9JbnB1dCA9IG51bGxwdHI7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIHZpZGVvIGlucHV0IGlzIG5vdCBhbGxvd2Vk
IHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIFttX3dyaXRlciBhZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldOworICAgIG1f
dmlkZW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVWaWRlb1JlY29y
ZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldEF1ZGlvSW5w
dXQoKQoreworICAgIEFTU0VSVCghbV9hdWRpb0lucHV0KTsKKworICAgIE5TRGljdGlvbmFyeSAq
YXVkaW9TZXR0aW5ncyA9IEB7CisgICAgICAgIEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4MDAw
KSwKKyAgICAgICAgQVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAorICAg
ICAgICBBVk51bWJlck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAorICAgICAgICBBVlNhbXBsZVJhdGVL
ZXkgOiBAKDIyMDUwKQorICAgIH07CisKKyAgICBtX2F1ZGlvSW5wdXQgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1l
ZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdzOmF1ZGlvU2V0dGluZ3Mgc291cmNlRm9ybWF0SGlu
dDpuaWxdKTsKKyAgICBbbV9hdWRpb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1l
OnRydWVdOworICAgIAorICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElucHV0Om1fYXVkaW9JbnB1
dC5nZXQoKV0pIHsKKyAgICAgICAgbV9hdWRpb0lucHV0ID0gbnVsbHB0cjsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgYXVkaW8gaW5wdXQgaXMgbm90IGFsbG93
ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgW21fd3JpdGVyIGFkZElucHV0Om1fYXVkaW9JbnB1dC5nZXQoKV07CisgICAg
bV9hdWRpb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUF1ZGlvUmVj
b3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+
IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFtcChDTVNhbXBsZUJ1ZmZlclJlZiBv
cmlnaW5hbEJ1ZmZlcikKK3sKKyAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUo
Q01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7CisgICAgQ01JdGVtQ291bnQgY291bnQgPSAwOwor
ICAgIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVy
LCAwLCBuaWwsICZjb3VudCk7CisgICAgCisgICAgVmVjdG9yPENNU2FtcGxlVGltaW5nSW5mbz4g
dGltZUluZm8oY291bnQpOworICAgIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0Fy
cmF5KG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAmY291bnQpOworICAg
IAorICAgIGZvciAoQ01JdGVtQ291bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAg
IHRpbWVJbmZvW2ldLmRlY29kZVRpbWVTdGFtcCA9IGtDTVRpbWVJbnZhbGlkOworICAgICAgICB0
aW1lSW5mb1tpXS5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBzdGFydFRpbWU7CisgICAgfQorICAg
IAorICAgIENNU2FtcGxlQnVmZmVyUmVmIG5ld0J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBl
cnJvciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgb3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5mby5kYXRhKCksICZuZXdCdWZm
ZXIpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IGFkb3B0Q0YobmV3QnVmZmVyKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVy
KQoreworICAgIEFTU0VSVChtX3ZpZGVvSW5wdXQpOworICAgIGlmIChtX2lzU3RvcHBlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKSB7CisgICAgICAg
IGlmICghW21fd3JpdGVyIHN0YXJ0V3JpdGluZ10pIHsKKyAgICAgICAgICAgIG1faXNTdG9wcGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3Jl
YXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAo
bG9uZylbbV93cml0ZXIgZXJyb3JdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1l
KENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKKyAgICAgICAgbV9oYXNTdGFydGVkV3JpdGlu
ZyA9IHRydWU7CisgICAgICAgIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gcHJv
dGVjdGVkVGhpcyA9IHRoaXM7CisgICAgICAgIFttX3ZpZGVvSW5wdXQgcmVxdWVzdE1lZGlhRGF0
YVdoZW5SZWFkeU9uUXVldWU6bV92aWRlb1B1bGxRdWV1ZSB1c2luZ0Jsb2NrOlt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0geworICAgICAgICAgICAgZG8gewor
ICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0
YV0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOworICAgICAgICAgICAgICAgIGlmIChtX3ZpZGVv
QnVmZmVyUG9vbC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gbV92aWRlb0J1ZmZlclBvb2wudGFrZUZpcnN0KCk7Cisg
ICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7CisgICAgICAgICAgICAgICAgaWYg
KCFbbV92aWRlb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpOworICAgICAg
ICAgICAgaWYgKG1faXNTdG9wcGVkICYmIG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgICAgIFttX3ZpZGVvSW5wdXQgbWFya0FzRmluaXNoZWRdOworICAgICAgICAg
ICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGJ1ZmZl
cldpdGhDdXJyZW50VGltZSA9IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFtcChz
YW1wbGVCdWZmZXIpOworICAgIGlmICghYnVmZmVyV2l0aEN1cnJlbnRUaW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2NrKTsKKyAgICBt
X3ZpZGVvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShidWZmZXJXaXRoQ3VycmVudFRpbWUpKTsK
K30KKworc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3Jl
YXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbikKK3sKKyAgICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25z
dCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2Ny
aXB0aW9uKCkuZGVzY3JpcHRpb24pOworICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0
ID0gbnVsbHB0cjsKKyAgICBhdXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24sIDAsIE5VTEwsIDAsIE5V
TEwsIE5VTEwsICZmb3JtYXQpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIGFkb3B0Q0YoZm9ybWF0KTsKK30KKworc3RhdGljIGlubGluZSBSZXRh
aW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tl
dERlc2NyaXB0aW9ucyhDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdCwgc2l6ZV90IHNhbXBs
ZUNvdW50KQoreworICAgIENNVGltZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2Nr
R2V0SG9zdFRpbWVDbG9jaygpKTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIg
PSBudWxscHRyOworICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0
aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVM
TCwgTlVMTCwgZm9ybWF0LCBzYW1wbGVDb3VudCwgc3RhcnRUaW1lLCBOVUxMLCAmc2FtcGxlQnVm
ZmVyKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biBhZG9wdENGKHNhbXBsZUJ1ZmZlcik7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBk
YXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgV1RG
OjpNZWRpYVRpbWUmLCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgQVNTRVJUKG1fYXVkaW9J
bnB1dCk7CisgICAgaWYgKCghbV9oYXNTdGFydGVkV3JpdGluZyAmJiBtX3ZpZGVvSW5wdXQpIHx8
IG1faXNTdG9wcGVkKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBmb3JtYXQgPSBjcmVhdGVB
dWRpb0Zvcm1hdERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKKyAgICBpZiAoIWZvcm1hdCkKKyAg
ICAgICAgcmV0dXJuOworICAgIGlmIChtX2lzRmlyc3RBdWRpb1NhbXBsZSkgeworICAgICAgICBp
ZiAoIW1fdmlkZW9JbnB1dCkgeworICAgICAgICAgICAgLy8gYXVkaW8tb25seSByZWNvcmRpbmcu
CisgICAgICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7CisgICAgICAgICAg
ICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6
Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOworICAgICAgICAgICAg
bV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgbV9pc0ZpcnN0
QXVkaW9TYW1wbGUgPSBmYWxzZTsKKyAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKKyAgICAgICAgW21fYXVkaW9JbnB1dCByZXF1
ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX2F1ZGlvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7CisgICAgICAg
ICAgICBkbyB7CisgICAgICAgICAgICAgICAgaWYgKCFbbV9hdWRpb0lucHV0IGlzUmVhZHlGb3JN
b3JlTWVkaWFEYXRhXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7CisgICAgICAgICAgICAgICAg
aWYgKG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyUG9vbC50YWtl
Rmlyc3QoKTsKKyAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKKyAgICAgICAg
ICAgICAgICBbbV9hdWRpb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwor
ICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7CisgICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQg
JiYgbV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgW21fYXVk
aW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07CisgICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5n
QXVkaW9TZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworICAg
IH0KKworICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRo
UGFja2V0RGVzY3JpcHRpb25zKGZvcm1hdC5nZXQoKSwgc2FtcGxlQ291bnQpOworICAgIGlmICgh
c2FtcGxlQnVmZmVyKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBlcnJvciA9IENNU2FtcGxl
QnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3Qoc2FtcGxlQnVmZmVyLmdldCgp
LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBkb3duY2FzdDxX
ZWJBdWRpb0J1ZmZlckxpc3Q+KGRhdGEpLmxpc3QoKSk7CisgICAgaWYgKGVycm9yKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2NrKTsKKyAg
ICBtX2F1ZGlvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShzYW1wbGVCdWZmZXIpKTsKK30KKwor
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCit7CisgICAg
aWYgKG1faXNTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzU3RvcHBlZCA9IHRy
dWU7CisgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKQorICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKFttX3dyaXRlciBzdGF0dXNdID09IEFWQXNzZXRXcml0ZXJTdGF0dXNXcml0aW5nKTsK
KyAgICBpZiAobV92aWRlb0lucHV0KQorICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFw
aG9yZS53YWl0KCk7CisKKyAgICBpZiAobV9hdWRpb0lucHV0KQorICAgICAgICBtX2ZpbmlzaFdy
aXRpbmdBdWRpb1NlbWFwaG9yZS53YWl0KCk7CisKKyAgICBtX2lzU3RvcHBpbmcgPSB0cnVlOwor
ICAgIFttX3dyaXRlciBmaW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3
ZWFrUHRyID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzLCB3ZWFrUHRyID0gV1RGTW92ZSh3ZWFrUHRyKSwgYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGlmICghd2Vha1B0cikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIG1faXNTdG9wcGluZyA9IGZhbHNlOworICAgICAgICAgICAgaWYgKG1fZmV0Y2hE
YXRhQ29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICAgICAgbV9mZXRjaERhdGFDb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG1fZGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKworICAgICAgICAgICAgbV9pc1N0b3Bw
ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZTsKKyAg
ICAgICAgICAgIG1faXNGaXJzdEF1ZGlvU2FtcGxlID0gdHJ1ZTsKKyAgICAgICAgICAgIGNsZWFy
KCk7CisgICAgICAgIH0pOworICAgICAgICBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmUuc2lnbmFs
KCk7CisgICAgfV07CisgICAgbV9maW5pc2hXcml0aW5nU2VtYXBob3JlLndhaXQoKTsKK30KKwor
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgaWYgKG1faXNTdG9wcGluZykgeworICAgICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIGJ1ZmZlciA9IFdURk1vdmUobV9kYXRhKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Nzc1ZDI5NjNlZjQ0NTFmZWY5ZDc2NDBmZWMwZjA3MzJkMjM5MWQ5OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04p
CisKKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW5jbHVkZSA8VmlkZW9Ub29s
Qm94L1ZURXJyb3JzLmg+CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpD
TVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZVZUQ29tcHJlc3Npb25TZXNz
aW9uKiAgVlRDb21wcmVzc2lvblNlc3Npb25SZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKENNVmlkZW9Db2RlY1R5cGUsIENNQnVmZmVyUXVldWVU
cmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKyAgICB+VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yKCk7CisKKyAgICB2b2lkIGZpbmlzaCgpOworICAgIHZvaWQgYWRkU2Ft
cGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRP
dXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHRh
a2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSk7CisKKyAgICBib29sIGluaXRp
YWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3Qp
OworCisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAg
ICBib29sIGluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVm
KTsKKworICAgIHN0YXRpYyB2b2lkIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZD
b24sIHZvaWQqLCBPU1N0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVm
KTsKKworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIFJl
dGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVlOworICAgIFJldGFp
blB0cjxWVENvbXByZXNzaW9uU2Vzc2lvblJlZj4gbV92dFNlc3Npb247CisKKyAgICBib29sIG1f
aXNFbmNvZGluZyB7IGZhbHNlIH07CisKKyAgICBDTVZpZGVvQ29kZWNUeXBlIG1fb3V0cHV0Q29k
ZWNUeXBlOworICAgIGZsb2F0IG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uIHsgMi4wIH07
CisgICAgdW5zaWduZWQgbV9leHBlY3RlZEZyYW1lUmF0ZSB7IDMwIH07Cit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMDhmZTQzMjk1ZWY1MmE2NzkwZmYxZGVjYWNhNmYzMGQ5YmJiYWZjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTAsMCArMSwxNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJ
T04pCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVkaWEu
aD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8VmlkZW9Ub29s
Ym94L1ZUQ29tcHJlc3Npb25TZXNzaW9uLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
KworI2ltcG9ydCA8cGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBQQUw7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVh
dGUoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUsIENNQnVmZmVyUXVldWVUcmlnZ2Vy
Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KQoreworICAgIGF1dG8gY29t
cHJlc3NvciA9IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+KG5l
dyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iob3V0cHV0Q29kZWNUeXBlKSk7CisgICAgaWYg
KCFjb21wcmVzc29yLT5pbml0aWFsaXplKGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb21wcmVzc29yOworfQorCitWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVv
Q29kZWNUeXBlIG91dHB1dENvZGVjVHlwZSkKKyAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7
IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkgfQorICAgICwgbV9vdXRwdXRDb2RlY1R5cGUg
eyBvdXRwdXRDb2RlY1R5cGUgfQoreworfQorCitWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQoreworICAgIGlmIChtX3NlcmlhbERpc3Bh
dGNoUXVldWUpCisgICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVl
KTsKK30KKworYm9vbCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUoQ01C
dWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3Qp
Cit7CisgICAgQ01CdWZmZXJRdWV1ZVJlZiBvdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBpZiAoYXV0
byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ01C
dWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycygpLCAmb3V0cHV0
QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIHF1ZXVl
ICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fb3V0cHV0
QnVmZmVyUXVldWUgPSBvdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBDTUJ1ZmZlclF1ZXVlSW5zdGFs
bFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgY2FsbGJhY2ssIGNhbGxiYWNrT2Jq
ZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hlbkRhdGFCZWNvbWVzUmVhZHksIGtDTVRpbWVa
ZXJvLCBOVUxMKTsKKworICAgIG1faXNFbmNvZGluZyA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2goKQoreworICAg
IGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBhdXRvIGVy
cm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyhtX3Z0U2Vzc2lvbi5nZXQo
KSwga0NNVGltZUludmFsaWQpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwg
TWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNl
c3Npb25Db21wbGV0ZUZyYW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgICAgICBl
cnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0
KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICAgICAgbV9pc0VuY29kaW5nID0gZmFsc2U7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp2aWRlb0NvbXBy
ZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwgT1NTdGF0dXMgc3RhdHVzLCBWVEVu
Y29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGKHN0YXR1cywgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrIHN0YXR1cyBpcyAlZCIsIHN0YXR1cyk7Cisg
ICAgaWYgKHN0YXR1cyAhPSBub0VycikKKyAgICAgICAgcmV0dXJuOworCisgICAgVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yICpjb21wcmVzc29yID0gc3RhdGljX2Nhc3Q8VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yKj4ocmVmQ29uKTsKKworICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1
ZXVlRW5xdWV1ZShjb21wcmVzc29yLT5tX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIp
OworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKK30KKworYm9vbCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRDb21w
cmVzc2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0
aW9uKQoreworICAgIENNVmlkZW9EaW1lbnNpb25zIGRpbWVuc2lvbnMgPSBDTVZpZGVvRm9ybWF0
RGVzY3JpcHRpb25HZXREaW1lbnNpb25zKGZvcm1hdERlc2NyaXB0aW9uKTsKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgTlNEaWN0aW9uYXJ5ICplbmNvZGVyU3BlY2lmaWNhdGlvbnMgPSBuaWw7Cisj
ZWxzZQorICAgIE5TRGljdGlvbmFyeSAqZW5jb2RlclNwZWNpZmljYXRpb25zID0gQHsoX19icmlk
Z2UgTlNTdHJpbmcgKilrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJl
QWNjZWxlcmF0ZWRWaWRlb0VuY29kZXI6QFlFU307CisjZW5kaWYKKworICAgIFZUQ29tcHJlc3Np
b25TZXNzaW9uUmVmIHZ0U2Vzc2lvbjsKKyAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNl
c3Npb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGltZW5zaW9ucy53aWR0aCwgZGltZW5z
aW9ucy5oZWlnaHQsIG1fb3V0cHV0Q29kZWNUeXBlLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVm
KWVuY29kZXJTcGVjaWZpY2F0aW9ucywgTlVMTCwgTlVMTCwgdmlkZW9Db21wcmVzc2lvbkNhbGxi
YWNrLCB0aGlzLCAmdnRTZXNzaW9uKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRD
b21wcmVzc2lvblNlc3Npb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAg
IHJldHVybiBOTzsKKyAgICB9CisgICAgbV92dFNlc3Npb24gPSBhZG9wdENGKHZ0U2Vzc2lvbik7
CisKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBr
VlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENvbXByZXNzaW9uUHJvcGVydHlL
ZXlfUmVhbFRpbWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgZXJyb3IgPSBWVFNlc3Np
b25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24sIChfX2JyaWRnZSBDRlR5cGVSZWYpQChtX21h
eEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbikpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVy
cm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25T
ZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxE
dXJhdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNl
dFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4
cGVjdGVkRnJhbWVSYXRlLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKUAobV9leHBlY3RlZEZyYW1lUmF0
ZSkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lv
blByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
CisgICAgLy8gRklYTUU6IFNldCB2aWRlbyBjb21wcmVzc2lvbiByYXRlLgorICAgIGVycm9yID0g
VlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMobV92dFNlc3Npb24uZ2V0
KCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29k
ZUZyYW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIHJldHVybiBZRVM7Cit9CisK
K3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENN
U2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIW1fdnRTZXNzaW9uKSB7CisgICAg
ICAgIGlmICghaW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERl
c2NyaXB0aW9uKGJ1ZmZlcikpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKGJ1ZmZlcik7Cisg
ICAgYXV0byBwcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRh
dGlvblRpbWVTdGFtcChidWZmZXIpOworICAgIGF1dG8gZHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZl
ckdldER1cmF0aW9uKGJ1ZmZlcik7CisgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNz
aW9uRW5jb2RlRnJhbWUobV92dFNlc3Npb24uZ2V0KCksIGltYWdlQnVmZmVyLCBwcmVzZW50YXRp
b25UaW1lU3RhbXAsIGR1cmF0aW9uLCBOVUxMLCB0aGlzLCBOVUxMKTsKKyAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKK30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZl
cihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgZGlzcGF0Y2hfc3luYyhtX3Nlcmlh
bERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGlmICghbV9pc0VuY29kaW5nKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHByb2Nlc3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKKyAgICB9
KTsKK30KKworQ01TYW1wbGVCdWZmZXJSZWYgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpn
ZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVl
dWUuZ2V0KCkpKSk7Cit9CisKK1JldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1
cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVy
UXVldWVEZXF1ZXVlQW5kUmV0YWluKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworfQor
Cit9CisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388847</attachid>
            <date>2020-01-27 05:03:03 -0800</date>
            <delta_ts>2020-01-27 09:18:54 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206582-20200127140301.patch</filename>
            <type>text/plain</type>
            <size>132177</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI3NTQ3MzhkNTg1NWM2
YTE4MmQxYjFjNDE4NmZkNDE5MDk4Njg1NS4uMDU2MTEzOWFiODk2YmM2NTBmODJjMmUyOWRjODFi
OGI0ZDk1Mzc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTAxLTI3ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
YWxsb3dzIHRvIGdyYWIgcmVjb3JkZWQgZGF0YSB3aGVuZXZlciB3YW50ZWQuCisgICAgICAgIFRo
aXMgZGVsZWdhdGUgcmVxdWlyZXMgcGFzc2luZyBjb21wcmVzc2VkIHNhbXBsZXMgdG8gQVZBc3Nl
dFdyaXRlci4KKyAgICAgICAgSW1wbGVtZW50IHZpZGVvIGVuY29kaW5nIGFuZCBhdWRpbyBlbmNv
ZGluZyBpbiBkZWRpY2F0ZWQgY2xhc3NlcyBhbmQgdXNlIHRoZXNlIGNsYXNzZXMgYmVmb3JlIGFk
ZGluZyBidWZmZXJzIHRvIEFWQXNzZXRXcml0ZXIuCisgICAgICAgIFNpbmNlIEFWQXNzZXRXcml0
ZXJEZWxlZ2F0ZSBpcyBBcHBsZSBTREsgb25seSwga2VlcCB0aGUgZXhpc3RpbmcgZmlsZSBiYXNl
ZCBpbXBsZW1lbnRhdGlvbiBhcyBhIGZhbGxiYWNrLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVBy
b2MpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0
QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVk
aW9Gb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0
aE51bVBhY2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1P
dXRwdXRQYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1w
bGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojpwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRp
b1NhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2Ft
cGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1w
bGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKToKKwogMjAyMC0wMS0yNiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBET01DYWNoZUVu
Z2luZTo6ZXJyb3JUb0V4Y2VwdGlvbiBiYWNrIG91dCBvZiBoZWFkZXIgYW5kIGludG8gLmNwcCBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4MTg1NDgzMjI2ZjVjYzFlNjVjZjRkYjg4NWM5NTlk
MzQyZTNjZmYxLi43MzAzZmQzODY1MGQyNDFhZmUxOWM4ODhhM2I0NzdiNGEyM2U2NWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wMS0yNyAgeW91ZW5uIGZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRl
ckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIHNvZnQgbGluayBtYWNyb3MgZm9yIFZpZGVv
VG9vbGJveCBhbmQgQXVkaW9Ub29sYm94LgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcDog
QWRkZWQuCisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmg6IEFkZGVkLgor
ICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHA6CisgICAgICAgICogcGFsL2Nm
L0NvcmVNZWRpYVNvZnRMaW5rLmg6CisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRM
aW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg6
IEFkZGVkLgorCiAyMDIwLTAxLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgc29tZSB1bm5lZWRlZCBkZWZpbml0aW9ucyBmcm9tIFBsYXRmb3JtLmgg
ZmFtaWx5IGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjljYjIzYmZlM2ExMGNhZDUyMjZkMzFiYjg4OTY4
ZmFiNTRhYWFmNS4uNTFjYjk2MjgzMzY1MmQ1YWNmMTEzYjk4Y2IzYWFkMDZlZGRmYzBlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMS0yNyAgeW91ZW5uIGZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRl
IHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24uCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgVXNlIG5ldyBjb25zdHJ1Y3Rvci4KKwogMjAyMC0wMS0yNiAgRnVqaWkgSGlyb25vcmkg
IDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dW2N1cmxdIEFT
U0VSVElPTiBGQUlMRUQ6IHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpIGluIE5ldHdvcmtQcm9jZXNzIHNpbmNlIHIyNTUwNjcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNDE5YWM5OGI0ZDE5
MmM5ZjM2MWRiMTk3NzNmMmI2ZmI4ZTBjOWNhLi4zZjgxNDZhZDE1NWFmY2MwODU4ZDY4YjNkMjc0
ZTM5MmUwZmY0N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMTUsNiArMTE1LDEwIEBACiAJCTJFMTM0MkNDMjE1QUExMEEw
MDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTEzNDJDQTIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGlu
ay5oICovOyB9OwogCQkyRTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNC
MjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLm1tICovOyB9OwogCQkzMTMwOEIxNDIw
QTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzMDhCMTMyMEEyMTcwNTAwM0ZCOTI5IC8qIFN5
c3RlbVByZXZpZXdTUEkuaCAqLzsgfTsKKwkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1
ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0
TGluay5jcHAgKi87IH07CisJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xi
b3hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE2RTk5NTIyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi87
IH07CisJCTQxNkU5OTU3MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1
NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovOyB9OworCQk0
MTZFOTk1ODIzREFFRkY4MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU2MjNEQUVGRjcw
MEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5oICovOyB9OwogCQk0NDI5NTZDRDIxOEE3
MkRGMDA4MERCNTQgLyogUmV2ZWFsU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2ZWFsU1BJLmgg
Ki87IH07CiAJCTQ0NTBGQzlGMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlE
MjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLzsgfTsKIAkJNDQ1MEZD
QTAyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYg
LyogUXVpY2tMb29rU29mdExpbmsuaCAqLzsgfTsKQEAgLTI5MSw2ICsyOTUsMTAgQEAKIAkJMkUx
MzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVSUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMTMwOEIxMzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmll
d1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1QcmV2aWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM3MTE5QTc4MjBDQ0I1RkYwMDJDNkRDOSAvKiBXZWJLaXRUYXJnZXRD
b25kaXRpb25hbHMueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViS2l0VGFyZ2V0Q29uZGl0aW9u
YWxzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1MTIzREFF
NkJEMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29s
Ym94U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Ub29s
Ym94U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2RTk5NTUyM0RB
RUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9v
bGJveFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVG9v
bGJveFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Mjk1NkNDMjE4
QTcyREUwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmV2ZWFsU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlE
MjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFF1aWNrTG9va1NvZnRMaW5rLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29r
U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tMb29rU29m
dExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNCw4ICs1MzIsMTIgQEAK
IAkJMENGOTlDQTUxRjczODQxQzAwN0VFNzkzIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyogQXVk
aW9Ub29sYm94U29mdExpbmsuY3BwICovLAorCQkJCTQxNkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAv
KiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oICovLAogCQkJCTBDRjk5Q0E2MUY3Mzg0MzYwMDdFRTc5
MyAvKiBDb3JlTWVkaWFTb2Z0TGluay5jcHAgKi8sCiAJCQkJMENGOTlDQTcxRjczODQzNzAwN0VF
NzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmggKi8sCisJCQkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3
MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCAqLywKKwkJCQk0MTZFOTk1NjIzREFFRkY3
MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
Y2Y7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzE1LDYgKzcyNyw3IEBACiAJCQlm
aWxlcyA9ICgKIAkJCQk1N0ZEMzE4QjIyQjM1OTg5MDA4RDBFOEIgLyogQXBwU1NPU29mdExpbmsu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3NkNBOUQ2MjJCODU0QUIwMDMwMTQzQyAvKiBBcHBTU09T
UEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRp
b1Rvb2xib3hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwMkU5M0MyMDU2RkFBNzAw
QTEzNzk3IC8qIEF1ZGlvVG9vbGJveFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTEwNzgy
MkI0NTZGNTAwRjQxMEM4IC8qIEF1dGhLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3N0U4
N0IyMjI2QTQ2MDMwMEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMg
Ki8sCkBAIC04MzgsNiArODUxLDcgQEAKIAkJCQkyRTEzNDJDQzIxNUFBMTBBMDA3MTk5RDIgLyog
VUlLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MjIxRjQzQTRDNzAwMkVB
QzAyIC8qIFVJS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE0NzFGM0JFQjQ5MDBE
QkMzMTcgLyogVVJMRm9ybWF0dGluZ1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTk5NTgy
M0RBRUZGODAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwQzJEQTE1OTFGM0JFQjQ5MDBEQkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTA4MjZGOTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKQEAgLTkzMCw2ICs5NDQsNyBAQAogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThBMjJCMzU5M0Uw
MDhEMEU4QiAvKiBBcHBTU09Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNkU5OTUz
MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzdFODdCMTIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwQzVGRkYwRjFGNzhEOURBMDA5RUZGMUEgLyogQ2xvY2tD
TS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBDRjk5Q0E4MUY3Mzg0MzcwMDdFRTc5MyAvKiBDb3Jl
TWVkaWFTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk1Niw2ICs5NzEsNyBAQAogCQkJ
CUEzQUI2RTU3MUYzRDFEREIwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExp
c3RlbmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUxMzQyQ0QyMTVBQTEwQTAwNzE5OUQy
IC8qIFVJS2l0U29mdExpbmsubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTZFOTk1NzIzREFFRkY4
MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTEwODI2RkExRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjZjU1MDU2YWNkYTZmNTY1M2FkYzdlMTdlYzAyYTJkODI2ZTQ0N2YKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5r
LmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9D
b252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQuaD4KKworI2lu
Y2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VS
Q0UoUEFMLCBBdWRpb1Rvb2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgQXVkaW9Ub29sYm94LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlv
Rm9ybWF0UHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNv
bnN0IHZvaWQqIGluU3BlY2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCog
b3V0UHJvcGVydHlEYXRhKSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNp
ZmllciwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBP
U1N0YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3Jt
YXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1h
dCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0
LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJTZXRQcm9w
ZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRp
b0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5Qcm9wZXJ0eURhdGFT
aXplLCBjb25zdCB2b2lkKiBpblByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblBy
b3BlcnR5SUQsIGluUHJvcGVydHlEYXRhU2l6ZSwgaW5Qcm9wZXJ0eURhdGEpKQorU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0
UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwg
QXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5
RGF0YVNpemUsIHZvaWQqIG91dFByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblBy
b3BlcnR5SUQsIGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKworI2VuZGlm
IC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1
ZGlvVG9vbGJveFNvZnRMaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDczMTE4NzE3NGFjMTU1NDQzNzFkZWUw
M2IxNDMyZTNlNjU2MzJlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0
Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBB
dWRpb1Rvb2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9U
b29sYm94LCBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVy
dGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3Bl
cnR5SUQsIFVJbnQzMiogaW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEp
LCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9wZXJ0eUlELCBpb1Byb3BlcnR5RGF0YVNpemUsIG91
dFByb3BlcnR5RGF0YSkpCisjZGVmaW5lIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkgc29mdExp
bmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NT
dGF0dXMsIChjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0
LCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQs
IEF1ZGlvQ29udmVydGVyUmVmKiBvdXRBdWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwg
aW5EZXN0aW5hdGlvbkZvcm1hdCwgb3V0QXVkaW9Db252ZXJ0ZXIpKQorI2RlZmluZSBBdWRpb0Nv
bnZlcnRlck5ldyBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJOZXcKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRl
clNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0
ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblByb3Bl
cnR5RGF0YVNpemUsIGNvbnN0IHZvaWQqIGluUHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0
ZXIsIGluUHJvcGVydHlJRCwgaW5Qcm9wZXJ0eURhdGFTaXplLCBpblByb3BlcnR5RGF0YSkpCisj
ZGVmaW5lIEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1
ZGlvQ29udmVydGVyU2V0UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQXVkaW9Ub29sYm94LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlv
Rm9ybWF0UHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNv
bnN0IHZvaWQqIGluU3BlY2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCog
b3V0UHJvcGVydHlEYXRhKSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNp
ZmllciwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorI2RlZmluZSBBdWRp
b0Zvcm1hdEdldFByb3BlcnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0Zvcm1hdEdldFBy
b3BlcnR5CisKKworI2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCmluZGV4IDJiODIzMTM2NWNiOWFh
ZjkzNTk3ZjE4N2ZhMjJjMTQ5YmU0MmZiM2EuLmRjOGFiNDFjYmM3OGJhMTljZWNkZGE3ZmNmYTcw
ZDkzNTA5M2MyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlh
U29mdExpbmsuY3BwCkBAIC00Niw2ICs0Niw3IEBAIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSkKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXR1cywgKENNQmxv
Y2tCdWZmZXJSZWYgdGhlU291cmNlQnVmZmVyLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCwgdm9pZCogZGVzdGluYXRpb24pLCAodGhlU291cmNlQnVmZmVyLCBvZmZzZXRU
b0RhdGEsIGRhdGFMZW5ndGgsIGRlc3RpbmF0aW9uKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aCwgc2l6ZV90
LCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVCdWZmZXIpLCAodGhlQnVmZmVyKSkKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyUmVwbGFjZURh
dGFCeXRlcywgT1NTdGF0dXMsIChjb25zdCB2b2lkKiBzb3VyY2VCeXRlcywgQ01CbG9ja0J1ZmZl
clJlZiBkZXN0aW5hdGlvbkJ1ZmZlciwgc2l6ZV90IG9mZnNldEludG9EZXN0aW5hdGlvbiwgc2l6
ZV90IGRhdGFMZW5ndGgpLCAoc291cmNlQnl0ZXMsIGRlc3RpbmF0aW9uQnVmZmVyLCBvZmZzZXRJ
bnRvRGVzdGluYXRpb24sIGRhdGFMZW5ndGgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRp
Y3Rpb25hcnlSZWYsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJH
ZXRUeXBlSUQsIENGVHlwZUlELCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciwgQ01CbG9j
a0J1ZmZlclJlZiwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCkBAIC0xMzYsNiAr
MTM3LDcgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENN
QnVmZmVyUXVldWVHZXRCdWZmZXJDb3VudCwgQ01JdGUKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25U
aW1lU3RhbXAsIENNVGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVH
ZXRFbmRQcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVl
dWUpLCAocXVldWUpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVk
aWEsIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0
YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJh
Y2sgdHJpZ2dlckNhbGxiYWNrLCB2b2lkKiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJp
Z2dlckNvbmRpdGlvbiB0cmlnZ2VyQ29uZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNo
b2xkLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUs
IHRyaWdnZXJDYWxsYmFjaywgdHJpZ2dlclJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dl
clRocmVzaG9sZCwgdHJpZ2dlclRva2VuT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSwgT1NTdGF0dXMs
IChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKIAogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3RE
aXNwbGF5LCBDRlN0cmluZ1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X05vdFN5bmMsIENGU3RyaW5nUmVmKQpA
QCAtMTYzLDYgKzE2NSw5IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tlCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVm
ZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdCwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVm
LCBDRkFsbG9jYXRvclJlZiBiYnVmU3RydWN0QWxsb2NhdG9yLCBDRkFsbG9jYXRvclJlZiBiYnVm
TWVtb3J5QWxsb2NhdG9yLCB1aW50MzJfdCBmbGFncywgY29uc3QgQXVkaW9CdWZmZXJMaXN0ICpi
dWZmZXJMaXN0KSwgKHNidWYsIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIGJidWZNZW1vcnlBbGxvY2F0
b3IsIGZsYWdzLCBidWZmZXJMaXN0KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlclNldERhdGFSZWFkeSwgT1NTdGF0dXMsIChDTVNh
bXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSwgT1NTdGF0
dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiogYXNiZCwgc2l6ZV90IGxheW91dFNpemUsIGNvbnN0IEF1ZGlvQ2hhbm5lbExheW91
dCogbGF5b3V0LCBzaXplX3QgbWFnaWNDb29raWVTaXplLCBjb25zdCB2b2lkKiBtYWdpY0Nvb2tp
ZSwgQ0ZEaWN0aW9uYXJ5UmVmIGV4dGVuc2lvbnMsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJl
Ziogb3V0RGVzYyksIChhbGxvY2F0b3IsIGFzYmQsIGxheW91dFNpemUsIGxheW91dCwgbWFnaWND
b29raWVTaXplLCBtYWdpY0Nvb2tpZSwgZXh0ZW5zaW9ucywgb3V0RGVzYykpCitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0
aW9uR2V0TWFnaWNDb29raWUsIGNvbnN0IHZvaWQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9u
UmVmIGRlc2MsIHNpemVfdCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRp
b25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICos
IChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKKwogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRIb3N0VGltZUNs
b2NrLCBDTUNsb2NrUmVmLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRUaW1lLCBDTVRpbWUsIChDTUNsb2NrUmVmIGNs
b2NrKSwgKGNsb2NrKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1l
ZGlhLCBDTVNhbXBsZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlLCBPU1N0YXR1cywgKENNU2FtcGxl
QnVmZmVyUmVmIHNidWYsIE9TU3RhdHVzICgqIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBj
YWxsYmFjaykoIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgQ01JdGVtQ291bnQgaW5k
ZXgsIHZvaWQgKnJlZmNvbiksIHZvaWQgKnJlZmNvbiksIChzYnVmLCBjYWxsYmFjaywgcmVmY29u
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExp
bmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRl
eCAyNjhkMTY3ZjI3ZDZkM2FiYmZmNTkzNTI2N2ZjMjIyMzkxMDEwZTNkLi5hMGM3MzI5MjYyZTBi
MDZjYmI2YzM2ZDgyODQyZjJmZDZmMWY4NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCkBAIC00OSw2ICs0OSw4IEBAIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRl
cywgT1NTdGF0CiAjZGVmaW5lIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIHNvZnRMaW5rX0Nv
cmVNZWRpYV9DTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXpl
X3QsIChDTUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciksICh0aGVCdWZmZXIpKQogI2RlZmluZSBD
TUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZl
ckdldERhdGFMZW5ndGgKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcywgT1NTdGF0dXMsIChjb25zdCB2b2lk
KiBzb3VyY2VCeXRlcywgQ01CbG9ja0J1ZmZlclJlZiBkZXN0aW5hdGlvbkJ1ZmZlciwgc2l6ZV90
IG9mZnNldEludG9EZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5ndGgpLCAoc291cmNlQnl0ZXMs
IGRlc3RpbmF0aW9uQnVmZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRpb24sIGRhdGFMZW5ndGgpKQor
I2RlZmluZSBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyBzb2Z0TGlua19Db3JlTWVkaWFf
Q01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZE
aWN0aW9uYXJ5UmVmLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQogI2Rl
ZmluZSBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucyBzb2Z0TGlua19Db3JlTWVkaWFf
Q01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQs
ICh2b2lkKSwgKCkpCkBAIC0yMjcsNiArMjI5LDggQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRFbmRQcmVzZW50YXRpb25UaW0K
ICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcAogU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJ
bnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVl
dWVSZWYgcXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNr
LCB2b2lkKiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmln
Z2VyQ29uZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVl
VHJpZ2dlclRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywg
dHJpZ2dlclJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dl
clRva2VuT3V0KSkKICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVn
ZXJUaHJlc2hvbGQgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dl
cldpdGhJbnRlZ2VyVGhyZXNob2xkCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUws
IENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZm
ZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVNYXJrRW5k
T2ZEYXRhIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YQogCiBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0
YWNobWVudEtleV9Eb05vdERpc3BsYXksIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVB
dHRhY2htZW50S2V5X0RvTm90RGlzcGxheSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1l
bnRLZXlfRG9Ob3REaXNwbGF5KCkKQEAgLTI1Niw2ICsyNjAsOSBAQCBTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGlt
ZUp1bXBlZAogI2RlZmluZSBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkIGdldF9D
b3JlTWVkaWFfa0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCgpCiBTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQ29uc3Vt
ZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQsIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01T
YW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCBnZXRfQ29yZU1l
ZGlhX2tDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkKCkK
KworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9G
b3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llLCBjb25zdCB2b2lkKiwgKENNQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvblJlZiBkZXNjLCBzaXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCkp
CisjZGVmaW5lIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZQogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24sIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiAqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykp
CiAjZGVmaW5lIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRp
b24gc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJh
c2ljRGVzY3JpcHRpb24KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrLCBPU1N0YXR1cywgKENGQWxs
b2NhdG9yUmVmIHN0cnVjdHVyZUFsbG9jYXRvciwgdm9pZCogbWVtb3J5QmxvY2ssIHNpemVfdCBi
bG9ja0xlbmd0aCwgQ0ZBbGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tC
dWZmZXJDdXN0b21CbG9ja1NvdXJjZSogY3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRU
b0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxv
Y2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgbWVtb3J5
QmxvY2ssIGJsb2NrTGVuZ3RoLCBibG9ja0FsbG9jYXRvciwgY3VzdG9tQmxvY2tTb3VyY2UsIG9m
ZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSkKQEAgLTI2NCw2
ICsyNzEsOCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZl
ckdldEF1ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyIHNvZnRMaW5rX0NvcmVN
ZWRpYV9DTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVm
ZmVyCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1w
bGVCdWZmZXJHZXROdW1TYW1wbGVzLCBDTUl0ZW1Db3VudCwgKENNU2FtcGxlQnVmZmVyUmVmIHNi
dWYpLCAoc2J1ZikpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcyBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzCitTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0
UmljaGVzdERlY29kYWJsZUZvcm1hdCwgY29uc3QgQXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01B
dWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCisjZGVmaW5lIENNQXVkaW9G
b3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQgc29mdExpbmtfQ29yZU1l
ZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQKIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZl
ckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxv
Y2F0b3IsIENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENGUmFuZ2Ugc2FtcGxlUmFuZ2UsIENNU2Ft
cGxlQnVmZmVyUmVmKiBzQnVmT3V0KSwgKGFsbG9jYXRvciwgc2J1Ziwgc2FtcGxlUmFuZ2UsIHNC
dWZPdXQpKQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZSBz
b2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2UK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1
ZmZlckdldFNhbXBsZVNpemVBcnJheSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVm
LCBDTUl0ZW1Db3VudCBzaXplQXJyYXlFbnRyaWVzLCBzaXplX3QqIHNpemVBcnJheU91dCwgQ01J
dGVtQ291bnQqIHNpemVBcnJheUVudHJpZXNOZWVkZWRPdXQpLCAoc2J1Ziwgc2l6ZUFycmF5RW50
cmllcywgc2l6ZUFycmF5T3V0LCBzaXplQXJyYXlFbnRyaWVzTmVlZGVkT3V0KSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2ZlNjkzY2E5ZTQxZmQ4NTk3YTgyYjdjNzk2NjAxYjhhNzBjYWE0OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsu
Y3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJl
c3Npb25TZXNzaW9uLmg+CisKKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9M
SU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94KQorCitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Np
b25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgQ01WaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUsIENGRGljdGlv
bmFyeVJlZiBlbmNvZGVyU3BlY2lmaWNhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUltYWdl
QnVmZmVyQXR0cmlidXRlcywgQ0ZBbGxvY2F0b3JSZWYgY29tcHJlc3NlZERhdGFBbGxvY2F0b3Is
IFZUQ29tcHJlc3Npb25PdXRwdXRDYWxsYmFjayBvdXRwdXRDYWxsYmFjaywgdm9pZCogb3V0cHV0
Q2FsbGJhY2tSZWZDb24sIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmKiBjb21wcmVzc2lvblNlc3Np
b25PdXQpLCAoYWxsb2NhdG9yLCB3aWR0aCwgaGVpZ2h0LCBjb2RlY1R5cGUsIGVuY29kZXJTcGVj
aWZpY2F0aW9uLCBzb3VyY2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMsIGNvbXByZXNzZWREYXRhQWxs
b2NhdG9yLCBvdXRwdXRDYWxsYmFjaywgb3V0cHV0Q2FsbGJhY2tSZWZDb24sIGNvbXByZXNzaW9u
U2Vzc2lvbk91dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9v
bGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENv
bXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRh
dGlvblRpbWVTdGFtcCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0
YW1wKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBW
VENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25T
ZXNzaW9uUmVmIHNlc3Npb24sIENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGltZSBw
cmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBkdXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIGZy
YW1lUHJvcGVydGllcywgdm9pZCogc291cmNlRnJhbWVSZWZjb24sIFZURW5jb2RlSW5mb0ZsYWdz
KiBpbmZvRmxhZ3NPdXQpLCAoc2Vzc2lvbiwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVT
dGFtcCwgZHVyYXRpb24sIGZyYW1lUHJvcGVydGllcywgc291cmNlRnJhbWVSZWZjb24sIGluZm9G
bGFnc091dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJv
eCwgVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAo
VlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKworI2VuZGlmIC8v
IFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Nm
L1ZpZGVvVG9vbGJveFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVv
VG9vbGJveFNvZnRMaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjUwODM4YTNhZmRlZDJlZDdkNmY4ZTM0OGZm
ZGY2ZGQxMTUxYmM0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y2YvVmlkZW9Ub29sYm94U29mdExpbmsuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9T
b2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBWaWRl
b1Rvb2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29s
Ym94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJl
ZiBhbGxvY2F0b3IsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVvQ29kZWNU
eXBlIGNvZGVjVHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBDRkRp
Y3Rpb25hcnlSZWYgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRvclJlZiBj
b21wcmVzc2VkRGF0YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNrIG91dHB1
dENhbGxiYWNrLCB2b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lvblNlc3Np
b25SZWYqIGNvbXByZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBoZWlnaHQs
IGNvZGVjVHlwZSwgZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVyQXR0cmli
dXRlcywgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRwdXRDYWxs
YmFja1JlZkNvbiwgY29tcHJlc3Npb25TZXNzaW9uT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lv
blNlc3Npb25DcmVhdGUgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9u
Q3JlYXRlCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwg
VlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNz
aW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRp
bWVTdGFtcCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkK
KyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBzb2Z0TGlua19WaWRl
b1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcworU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9u
RW5jb2RlRnJhbWUsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwg
Q1ZJbWFnZUJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFt
cCwgQ01UaW1lIGR1cmF0aW9uLCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lk
KiBzb3VyY2VGcmFtZVJlZmNvbiwgVlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChz
ZXNzaW9uLCBpbWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJh
bWVQcm9wZXJ0aWVzLCBzb3VyY2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKKyNkZWZpbmUg
VlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRD
b21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2Rl
RnJhbWVzLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vz
c2lvbikpCisjZGVmaW5lIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVz
IHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29k
ZUZyYW1lcworCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZDJhMzEzODI1YTVk
ZjNlYWI2MTM3ZDExNmIxMzgxYmMyNjNlOWI1Li43ODQ4MTMyMzk2NDNjY2FiNTNlYTQwMTZiNmFh
OTE2OTRmNDRmMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMDk3LDYgKzEwOTcsNyBAQAogCQk0MTZFNkZFODFCQkQxMkRG
MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2
NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYw
NDMgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxl
U3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWls
dGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIw
M0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTZGNzk5MDIzRDc1
MENGMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2Rjc5OEYyM0Q3NTBDQjAwODI5
RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLzsgfTsKIAkJNDE3MjUzQUIx
MzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEg
LyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKIAkJNDE3NjEyQUYxRTNBOTk0MDAwQzNE
ODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUIxRTNBOTkzQjAwQzNEODFEIC8qIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQuY3BwICovOyB9OwogCQk0MTc2MTJCMDFFM0E5OTQwMDBDM0Q4MUQg
LyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUMxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQuaCAqLzsgfTsKQEAgLTExMzcsNiArMTEzOCw3IEBACiAJCTQxQjg3NzYyMjNE
RTEwNDUwMDM2MzhCOCAvKiBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCODc3NjAyM0RFMTA0MjAw
MzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFCRjIwNDkyMkJBN0JFODAwMDRG
ODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkYyMDQwMjJCOTQ3MTYwMDA0RjgxMiAvKiBSZWFsdGltZVZp
ZGVvU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBD
MTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk0MUNENkY4QzIzRDZFODIxMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSAqLzsgfTsKIAkJNDFEMDE1Q0EwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRU
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQw
MTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUQxMjlDRTFGM0QwRUY2MDBEMTVFNDcg
LyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkIyNzhEMUYzNEMyODIwMDc5NTQ4NyAvKiBXb3JrZXJHbG9i
YWxTY29wZUNhY2hlcy5oICovOyB9OwogCQk0MUQxMjlEMDFGM0QwRjA1MDBEMTVFNDcgLyogQ2Fj
aGVRdWVyeU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRkIyNzlCMUYzNENFRjAwMDc5NTQ4NyAvKiBDYWNoZVF1ZXJ5T3B0aW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NDE4LDYg
Kzc0MjAsOSBAQAogCQk0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZv
cm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTG9hZElu
Zm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUwQjM3MjA5QkMz
QzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRmV0Y2hJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTZGNzk5MzIzRDhCNjlDMDA4MjlGQzEgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YUZpbGVCYXNlZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxNzBBMkU5MUQ4QzBDQzAwMDMxODQ1MiAvKiBKU0RPTVdyYXBwZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01XcmFwcGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MjUzQTgxMzU0QkJCQzAwMzYwRjJB
IC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTI1LDYgKzc1MzAsOCBAQAogCQk0
MUM3RTEwNTFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEw
NjFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDgxRTZBQTM3QzAwMjdC
NERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxQ0Q2Rjg5MjNENkU4MUMwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
Q0Q2RjhCMjNENkU4MUQwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQ0Y4QkU0MUQ0
NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25z
dW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQwMTVDODBGNEI1QzcxMDA0QTY2
MkYgLyogQ29udGVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
dGVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MDE3LDggKzE5MDI0
LDEzIEBACiAJCTREM0MwNUQ0MjFBRjQ4MDkwMEYyODkwQSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDE2Rjc5OEQyM0Q3NTBDQTAwODI5
RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovLAorCQkJCTQxNkY3OThGMjNE
NzUwQ0IwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8sCiAJCQkJ
NEQ3M0Y5NEMyMThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaCAqLywKIAkJCQk0RDczRjk0RDIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbSAqLywKKwkJCQk0MTZGNzk5MzIzRDhCNjlDMDA4MjlGQzEgLyog
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbSAqLywKKwkJCQk0MUNE
NkY4OTIzRDZFODFDMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8s
CisJCQkJNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMzM2NzQsNiArMzM2ODYsNyBAQAogCQkJCUE5Nzg3Q0I0MUY1RjVDNjYwMEM1
NTFDNiAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0Q1NTk2OTExNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRl
cklPUy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTZGNzk5MDIzRDc1MENGMDA4MjlGQzEgLyog
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBNzk4
MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUNEOEE3QkJCMTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRp
b1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzQ0MDYsNiArMzQ0MTksNyBAQAogCQkJCTdD
NzNGQjA3MTkxRUY0MTcwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTNGQkM0QUYzMTg5ODgxNTYwMDQ2RUUzOCAvKiBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUyRDVBMThGMUM1
NDU5MjMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNDFDRDZGOEMyM0Q2RTgyMTAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1
OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEUxMTcxNUQy
QTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDMz
NkY2NzE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KaW5kZXggZmE4ZWUwYjEwMGNmMjE0
MDg1NjUwNTE2YmM0ZTIzYTFkYjE1YmYzNS4uZmMyOTA4Y2ViZTNkNzRlNWYxNTEwNGE1ZDc4MjMw
Y2JmOWVkNTMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCkBAIC05NSw2ICs5NSw3IEBA
IGJvb2wgSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXpl
KQogICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZVBy
b3BlcnRpZXNLZXkgOiBAeyAvKmVtcHR5IGRpY3Rpb25hcnkqLyB9LAogICAgIH07CiAKKwogICAg
IE5TRGljdGlvbmFyeSogcGl4ZWxCdWZmZXJQb29sT3B0aW9ucyA9IEB7CiAgICAgICAgIChfX2Jy
aWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUG9vbE1pbmltdW1CdWZmZXJDb3VudEtleTog
QCg2KQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5k
ZXggNzNmMWQwYTE1MTlmMmMwM2I5MWQ2OTUxMDUxMzVhNGYyMGQxZGE2NC4uZDQ3OTM0ODgzODYx
OTE3ZjZiMzYwZWYxNGRkODJjMWUzNTNiMmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAKICNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgi
CiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCkBAIC02OCw3ICs2OSwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGF1ZGlvVHJhY2ssIHZpZGVvVHJhY2spOworCisgICAg
aW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKKyAgICBpZiAodmlkZW9UcmFjaykgeworICAgICAg
ICBhdXRvJiBzZXR0aW5ncyA9IHZpZGVvVHJhY2stPnNldHRpbmdzKCk7CisgICAgICAgIHdpZHRo
ID0gc2V0dGluZ3Mud2lkdGgoKTsKKyAgICAgICAgaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7
CisgICAgfQorICAgIGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNy
ZWF0ZSghIWF1ZGlvVHJhY2ssIHdpZHRoLCBoZWlnaHQpOwogICAgIGlmICghd3JpdGVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ3YmY4MWUxZDQ1NmM3MGMyZDk0NGY3MDQ1YThl
MTZlMDU5YmNmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTAsMCAr
MSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVk
aWEuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVm
ZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQXVkaW9Db252ZXJ0ZXIqIEF1ZGlvQ29udmVy
dGVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IGNyZWF0
ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7Cisg
ICAgfkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpOworCisgICAgdm9pZCBmaW5pc2goKTsK
KyAgICB2b2lkIGFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CisgICAgQ01TYW1w
bGVCdWZmZXJSZWYgZ2V0T3V0cHV0U2FtcGxlQnVmZmVyKCk7CisgICAgUmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPiB0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisgICAgYm9vbCBpbml0aWFsaXplKENNQnVm
ZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKworICAgIHN0
YXRpYyBPU1N0YXR1cyBhdWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jKEF1ZGlvQ29u
dmVydGVyUmVmLCBVSW50MzIqLCBBdWRpb0J1ZmZlckxpc3QqLCBBdWRpb1N0cmVhbVBhY2tldERl
c2NyaXB0aW9uKiosIHZvaWQqKTsKKworICAgIHZvaWQgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNh
bXBsZUJ1ZmZlclJlZik7CisgICAgYm9vbCBpbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3Jt
YXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmLCBBdWRpb0Zvcm1hdElEKTsKKyAg
ICBzaXplX3QgY29tcHV0ZUJ1ZmZlclNpemVGb3JBdWRpb0Zvcm1hdChBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24sIFVJbnQzMiwgRmxvYXQzMik7CisgICAgdm9pZCBhdHRhY2hQcmltaW5nVHJp
bXNJZk5lZWRlZChDTVNhbXBsZUJ1ZmZlclJlZik7CisgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBn
cmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudCgpOworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKFVJbnQzMiBudW1QYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3Qp
OworICAgIHZvaWQgcHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUp
OworICAgIE9TU3RhdHVzIHByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIq
LCBBdWRpb0J1ZmZlckxpc3QqLCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiopOworCisg
ICAgUmV0YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CisgICAg
UmV0YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1faW5wdXRCdWZmZXJRdWV1ZTsKKyAgICBkaXNw
YXRjaF9xdWV1ZV90IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKKyAgICBDTVRpbWUgbV9sb3dXYXRl
clRpbWU7CisgICAgYm9vbCBtX2lzRW5jb2RpbmcgeyBmYWxzZSB9OworCisgICAgUmV0YWluUHRy
PEF1ZGlvQ29udmVydGVyUmVmPiBtX2NvbnZlcnRlcjsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVz
Y3JpcHRpb24gbV9zb3VyY2VGb3JtYXQ7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
IG1fZGVzdGluYXRpb25Gb3JtYXQ7CisgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25S
ZWY+IG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICBSZXRhaW5QdHI8TlNOdW1i
ZXI+IG1fZ2RyQ291bnROdW07CisgICAgVUludDMyIG1fbWF4T3V0cHV0UGFja2V0U2l6ZTsKKyAg
ICBWZWN0b3I8QXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbj4gbV9kZXN0aW5hdGlvblBhY2tl
dERlc2NyaXB0aW9uczsKKworICAgIENNVGltZSBtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25U
aW1lU3RhbXA7CisgICAgQ01UaW1lIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFt
cDsKKyAgICBDTVRpbWUgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uOworCisgICAgVmVjdG9yPGNo
YXI+IG1fc291cmNlQnVmZmVyOworICAgIFZlY3RvcjxjaGFyPiBtX2Rlc3RpbmF0aW9uQnVmZmVy
OworCisgICAgUmV0YWluUHRyPENNQmxvY2tCdWZmZXJSZWY+IG1fc2FtcGxlQmxvY2tCdWZmZXI7
CisgICAgc2l6ZV90IG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplOworICAgIHNpemVfdCBtX2N1cnJl
bnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyOworICAgIEF1ZGlvRm9ybWF0SUQgbV9vdXRwdXRD
b2RlY1R5cGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTQyNDMyZTQwZmIyNjAyMjdiNmQzZThlMzA5ZDQ4ZGRk
YjFjZTg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTAsMCArMSw0
ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
VVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxBdWRp
b1Rvb2xib3gvQXVkaW9Db2RlYy5oPgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvbnZl
cnRlci5oPgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0Zvcm1hdC5oPgorI2luY2x1ZGUg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCisjaW1wb3J0IDxwYWwvY2YvQXVkaW9Ub29sYm94
U29mdExpbmsuaD4KKworI2RlZmluZSBMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQgMC4xCisKK3Vz
aW5nIG5hbWVzcGFjZSBQQUw7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpjcmVhdGUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCog
Y2FsbGJhY2tPYmplY3QpCit7CisgICAgYXV0byBjb21wcmVzc29yID0gc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4obmV3IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcigpKTsKKyAgICBpZiAoIWNvbXByZXNzb3ItPmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxi
YWNrT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbXByZXNz
b3I7Cit9CisKK0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yKCkKKyAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgiY29tLmFwcGxlLkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENI
X1FVRVVFX1NFUklBTCkgfQorICAgICwgbV9sb3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNl
Y29uZHMoTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05ELCAxMDAwKSB9CisgICAgLCBtX291dHB1dENv
ZGVjVHlwZSB7IGtBdWRpb0Zvcm1hdE1QRUc0QUFDIH0KK3sKK30KKworQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjp+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKK3sKKyAgICBpZiAo
bV9zZXJpYWxEaXNwYXRjaFF1ZXVlKQorICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VyaWFs
RGlzcGF0Y2hRdWV1ZSk7Cit9CisKK2Jvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrT2JqZWN0KQoreworICAgIENNQnVmZmVyUXVldWVSZWYgaW5wdXRCdWZmZXJRdWV1ZTsK
KyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVy
cygpLCAmaW5wdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUNyZWF0
ZSBmb3IgbV9pbnB1dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1faW5wdXRCdWZmZXJRdWV1ZSA9IGFkb3B0Q0Yo
aW5wdXRCdWZmZXJRdWV1ZSk7CisKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1
ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVC
dWZmZXJzKCksICZvdXRwdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1
ZUNyZWF0ZSBmb3IgbV9vdXRwdXRCdWZmZXJRdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX291dHB1dEJ1ZmZlclF1ZXVlID0g
YWRvcHRDRihvdXRwdXRCdWZmZXJRdWV1ZSk7CisgICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmln
Z2VyKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwg
a0NNQnVmZmVyUXVldWVUcmlnZ2VyX1doZW5EYXRhQmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywg
TlVMTCk7CisKKyAgICBtX2lzRW5jb2RpbmcgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKK3sKKyAgICBkaXNw
YXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgcHJvY2Vzc1NhbXBs
ZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShrQ01UaW1lSW52YWxpZCk7CisgICAgICAgIGF1dG8g
ZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVlLmdl
dCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZh
aWxlZCAlZCIsIGVycm9yKTsKKyAgICAgICAgbV9pc0VuY29kaW5nID0gZmFsc2U7CisgICAgfSk7
Cit9CisKK2Jvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9Db252ZXJ0
ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1h
dERlc2NyaXB0aW9uLCBBdWRpb0Zvcm1hdElEIG91dHB1dEZvcm1hdElEKQoreworICAgIGNvbnN0
IGF1dG8gKmF1ZGlvRm9ybWF0TGlzdEl0ZW0gPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRS
aWNoZXN0RGVjb2RhYmxlRm9ybWF0KGZvcm1hdERlc2NyaXB0aW9uKTsKKyAgICBtX3NvdXJjZUZv
cm1hdCA9IGF1ZGlvRm9ybWF0TGlzdEl0ZW0tPm1BU0JEOworCisgICAgbV9kZXN0aW5hdGlvbkZv
cm1hdC5tRm9ybWF0SUQgPSBvdXRwdXRGb3JtYXRJRDsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0
Lm1TYW1wbGVSYXRlID0gbV9zb3VyY2VGb3JtYXQubVNhbXBsZVJhdGU7CisgICAgbV9kZXN0aW5h
dGlvbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IG1fc291cmNlRm9ybWF0Lm1DaGFubmVsc1Bl
ckZyYW1lOworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKG1fZGVzdGluYXRpb25Gb3JtYXQpOwor
ICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eShrQXVkaW9Gb3JtYXRQ
cm9wZXJ0eV9Gb3JtYXRJbmZvLCAwLCBOVUxMLCAmc2l6ZSwgJm1fZGVzdGluYXRpb25Gb3JtYXQp
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBBdWRpb0NvbnZlcnRl
clJlZiBjb252ZXJ0ZXI7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlck5ldygm
bV9zb3VyY2VGb3JtYXQsICZtX2Rlc3RpbmF0aW9uRm9ybWF0LCAmY29udmVydGVyKSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBBdWRpb0NvbnZlcnRlck5ldyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX2NvbnZlcnRlciA9IGFkb3B0Q0YoY29udmVy
dGVyKTsKKworICAgIHNpemVfdCBjb29raWVTaXplID0gMDsKKyAgICBjb25zdCB2b2lkICpjb29r
aWUgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZShmb3JtYXREZXNjcmlw
dGlvbiwgJmNvb2tpZVNpemUpOworICAgIGlmIChjb29raWVTaXplKSB7CisgICAgICAgIGlmIChh
dXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwg
a0F1ZGlvQ29udmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29va2llLCAoVUludDMyKWNvb2tpZVNp
emUsIGNvb2tpZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29udmVydGVyRGVj
b21wcmVzc2lvbk1hZ2ljQ29va2llIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgc2l6ZSA9IHNpemVvZiht
X3NvdXJjZUZvcm1hdCk7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFBy
b3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50SW5wdXRTdHJl
YW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX3NvdXJjZUZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0
dGluZyBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50SW5wdXRTdHJlYW1EZXNjcmlwdGlvbiBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
ICghbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAibUJ5dGVzUGVyUGFja2V0IHNob3VsZCBub3QgYmUgemVybyIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc2l6ZSA9IHNpemVvZihtX2Rl
c3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0
UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRPdXRwdXRT
dHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRPdXRwdXRTdHJlYW1EZXNjcmlwdGlv
biBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9PSBrQXVkaW9Gb3JtYXRN
UEVHNEFBQykgeworICAgICAgICAvLyBGSVhNRTogU2V0IG91dHB1dEJpdFJhdGUgYWNjb3JkaW5n
IE1lZGlhUmVjb3JkZXJPcHRpb25zLmF1ZGlvQml0c1BlclNlY29uZC4KKyAgICAgICAgVUludDMy
IG91dHB1dEJpdFJhdGUgPSA2NDAwMDsKKyAgICAgICAgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQu
bVNhbXBsZVJhdGUgPj0gNDQxMDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMTkyMDAw
OworICAgICAgICBlbHNlIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlIDwgMjIw
MDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMzIwMDA7CisKKyAgICAgICAgc2l6ZSA9
IHNpemVvZihvdXRwdXRCaXRSYXRlKTsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0Nv
bnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJFbmNv
ZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRp
bmcga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgh
bV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpIHsKKyAgICAgICAgLy8gSWYgdGhl
IGRlc3RpbmF0aW9uIGZvcm1hdCBpcyBWQlIsIHdlIG5lZWQgdG8gZ2V0IG1heCBzaXplIHBlciBw
YWNrZXQgZnJvbSB0aGUgY29udmVydGVyLgorICAgICAgICBzaXplID0gc2l6ZW9mKG1fbWF4T3V0
cHV0UGFja2V0U2l6ZSk7CisKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRl
ckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eU1h
eGltdW1PdXRwdXRQYWNrZXRTaXplLCAmc2l6ZSwgJm1fbWF4T3V0cHV0UGFja2V0U2l6ZSkpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVtT3V0
cHV0UGFja2V0U2l6ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fZGVzdGluYXRpb25CdWZmZXIucmVz
ZXJ2ZUNhcGFjaXR5KGNvbXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQobV9kZXN0aW5hdGlv
bkZvcm1hdCwgbV9tYXhPdXRwdXRQYWNrZXRTaXplLCBMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQp
KTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0KQorICAgICAg
ICBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLnJlc2VydmVDYXBhY2l0eShtX2Rlc3Rp
bmF0aW9uQnVmZmVyLmNhcGFjaXR5KCkgLyBtX21heE91dHB1dFBhY2tldFNpemUpOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNv
bXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
IGZvcm1hdCwgVUludDMyIG1heE91dHB1dFBhY2tldFNpemUsIEZsb2F0MzIgZHVyYXRpb24pCit7
CisgICAgVUludDMyIG51bVBhY2tldHMgPSAoZm9ybWF0Lm1TYW1wbGVSYXRlICogZHVyYXRpb24p
IC8gZm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQ7CisgICAgVUludDMyIG91dHB1dFBhY2tldFNpemUg
PSBmb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gZm9ybWF0Lm1CeXRlc1BlclBhY2tldCA6IG1heE91
dHB1dFBhY2tldFNpemU7CisgICAgVUludDMyIGJ1ZmZlclNpemUgPSBudW1QYWNrZXRzICogb3V0
cHV0UGFja2V0U2l6ZTsKKworICAgIHJldHVybiBidWZmZXJTaXplOworfQorCit2b2lkIEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoQ01TYW1w
bGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGlmIChDTVRJTUVfSVNfSU5WQUxJRChtX3JlbWFp
bmluZ1ByaW1lRHVyYXRpb24pKSB7CisgICAgICAgIEF1ZGlvQ29udmVydGVyUHJpbWVJbmZvIHBy
aW1lSW5mbyB7IDAsIDAgfTsKKyAgICAgICAgVUludDMyIHNpemUgPSBzaXplb2YocHJpbWVJbmZv
KTsKKworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHko
bV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlclByaW1lSW5mbywgJnNpemUsICZwcmlt
ZUluZm8pKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlclByaW1lSW5m
byBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiA9IENNVGltZU1ha2UocHJpbWVJ
bmZvLmxlYWRpbmdGcmFtZXMsIG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUpOworICAg
IH0KKworICAgIGlmIChDTVRJTUVfQ09NUEFSRV9JTkxJTkUoa0NNVGltZVplcm8sIDwsIG1fcmVt
YWluaW5nUHJpbWVEdXJhdGlvbikpIHsKKyAgICAgICAgQ01UaW1lIHNhbXBsZUR1cmF0aW9uID0g
Q01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgICAgICBDTVRpbWUgdHJpbUR1
cmF0aW9uID0gQ01UaW1lTWluaW11bShzYW1wbGVEdXJhdGlvbiwgbV9yZW1haW5pbmdQcmltZUR1
cmF0aW9uKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHRyaW1BdFN0YXJ0RGljdCA9IENNVGlt
ZUNvcHlBc0RpY3Rpb25hcnkodHJpbUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKKyAg
ICAgICAgQ01TZXRBdHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtl
eV9UcmltRHVyYXRpb25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QsIGtDTUF0dGFjaG1lbnRNb2Rl
X1Nob3VsZFByb3BhZ2F0ZSk7CisgICAgICAgIENGUmVsZWFzZSh0cmltQXRTdGFydERpY3QpOwor
ICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVTdWJ0cmFjdChtX3JlbWFp
bmluZ1ByaW1lRHVyYXRpb24sIHRyaW1EdXJhdGlvbik7CisgICAgfQorfQorCitSZXRhaW5QdHI8
TlNOdW1iZXI+IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z3JhZHVhbERlY29kZXJSZWZy
ZXNoQ291bnQoKQoreworICAgIFVJbnQzMiBkZWxheVNpemUgPSBzaXplb2YodWludDMyX3QpOwor
ICAgIHVpbnQzMl90IG9yaWdpbmFsRGVsYXlNb2RlID0gMDsKKyAgICBpZiAoYXV0byBlcnJvciA9
IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVj
UHJvcGVydHlEZWxheU1vZGUsICZkZWxheVNpemUsICZvcmlnaW5hbERlbGF5TW9kZSkpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIHVpbnQzMl90
IG9wdGltYWxEZWxheU1vZGUgPSBrQXVkaW9Db2RlY0RlbGF5TW9kZV9PcHRpbWFsOworICAgIGlm
IChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQo
KSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSwgZGVsYXlTaXplLCAmb3B0aW1hbERlbGF5
TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2Rl
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKwor
ICAgIFVJbnQzMiBwcmltZVNpemUgPSBzaXplb2YoQXVkaW9Db2RlY1ByaW1lSW5mbyk7CisgICAg
QXVkaW9Db2RlY1ByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07CisgICAgaWYgKGF1dG8gZXJy
b3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9D
b2RlY1Byb3BlcnR5UHJpbWVJbmZvLCAmcHJpbWVTaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBnZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlQcmltZUluZm8gZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgaWYgKGF1dG8gZXJy
b3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9D
b2RlY1Byb3BlcnR5RGVsYXlNb2RlLCBkZWxheVNpemUsICZvcmlnaW5hbERlbGF5TW9kZSkpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4g
YWRvcHROUyhbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoocHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMg
LyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQpXSk7Cit9CisKK0NNU2FtcGxl
QnVmZmVyUmVmIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0aE51
bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCBmaWxsQnVmZmVyTGlz
dCkKK3sKKyAgICBWZWN0b3I8Y2hhcj4gY29va2llOworICAgIGlmICghbV9kZXN0aW5hdGlvbkZv
cm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIFVJbnQzMiBjb29raWVTaXplID0gMDsKKworICAg
ICAgICBhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eUluZm8obV9jb252ZXJ0
ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29raWUsICZjb29raWVT
aXplLCBOVUxMKTsKKyAgICAgICAgaWYgKChlcnJvciA9PSBub0VycikgJiYgISFjb29raWVTaXpl
KSB7CisgICAgICAgICAgICBjb29raWUucmVzZXJ2ZUNhcGFjaXR5KGNvb2tpZVNpemUpOworCisg
ICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9j
b252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29raWUsICZj
b29raWVTaXplLCBjb29raWUuZGF0YSgpKSkgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcg
a0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tpZSBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXN0aW5hdGlvbkZvcm1hdERl
c2NyaXB0aW9uOworICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmbV9kZXN0aW5hdGlvbkZvcm1hdCwgMCwg
TlVMTCwgY29va2llU2l6ZSwgY29va2llLmRhdGEoKSwgTlVMTCwgJmRlc3RpbmF0aW9uRm9ybWF0
RGVzY3JpcHRpb24pKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25D
cmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gbmlsOwor
ICAgICAgICB9CisgICAgICAgIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbiA9IGFkb3B0
Q0YoZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbik7CisgICAgICAgIG1fZ2RyQ291bnROdW0g
PSBncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudCgpOworICAgIH0KKworICAgIGNoYXIgKmRhdGEg
PSBzdGF0aWNfY2FzdDxjaGFyKj4oZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEpOwor
ICAgIHNpemVfdCBkYXRhU2l6ZSA9IGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0
ZVNpemU7CisKKyAgICBDTUJsb2NrQnVmZmVyUmVmIGJsb2NrQnVmZmVyOworICAgIGlmIChhdXRv
IGVycm9yID0gQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBOVUxMLCBkYXRhU2l6ZSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgMCwgZGF0
YVNpemUsIGtDTUJsb2NrQnVmZmVyQXNzdXJlTWVtb3J5Tm93RmxhZywgJmJsb2NrQnVmZmVyKSkg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICBhdXRvIGJ1
ZmZlciA9IGFkb3B0Q0YoYmxvY2tCdWZmZXIpOworCisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJs
b2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyhkYXRhLCBidWZmZXIuZ2V0KCksIDAsIGRhdGFTaXpl
KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVC
dWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1
ZmZlci5nZXQoKSwgdHJ1ZSwgTlVMTCwgTlVMTCwgbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0
aW9uLmdldCgpLCBudW1QYWNrZXRzLCBtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3Rh
bXAsIG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnMuZGF0YSgpLCAmc2FtcGxlQnVmZmVy
KTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0
ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAg
IHJldHVybiBuaWw7CisgICAgfQorCisgICAgaWYgKFttX2dkckNvdW50TnVtIGludFZhbHVlXSkK
KyAgICAgICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0
YWNobWVudEtleV9HcmFkdWFsRGVjb2RlclJlZnJlc2gsIChfX2JyaWRnZSBDRlR5cGVSZWYpbV9n
ZHJDb3VudE51bS5nZXQoKSwga0NNQXR0YWNobWVudE1vZGVfU2hvdWxkUHJvcGFnYXRlKTsKKwor
ICAgIHJldHVybiBzYW1wbGVCdWZmZXI7Cit9CisKK09TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6YXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYyhBdWRpb0NvbnZl
cnRlclJlZiwgVUludDMyICpudW1PdXRwdXRQYWNrZXRzUHRyLCBBdWRpb0J1ZmZlckxpc3QgKmJ1
ZmZlckxpc3QsIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24gKipwYWNrZXREZXNjcmlwdGlv
bk91dCwgdm9pZCAqYXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKQoreworICAgIGF1dG8gKmNv
bXByZXNzb3IgPSBzdGF0aWNfY2FzdDxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IqPihhdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOworICAgIHJldHVybiBjb21wcmVzc29yLT5wcm92aWRl
U291cmNlRGF0YU51bU91dHB1dFBhY2tldHMobnVtT3V0cHV0UGFja2V0c1B0ciwgYnVmZmVyTGlz
dCwgcGFja2V0RGVzY3JpcHRpb25PdXQpOworfQorCitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIqIG51
bU91dHB1dFBhY2tldHNQdHIsIEF1ZGlvQnVmZmVyTGlzdCogYXVkaW9CdWZmZXJMaXN0LCBBdWRp
b1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiogcGFja2V0RGVzY3JpcHRpb25PdXQpCit7CisgICAg
aWYgKHBhY2tldERlc2NyaXB0aW9uT3V0KQorICAgICAgICAqcGFja2V0RGVzY3JpcHRpb25PdXQg
PSBOVUxMOworCisgICAgY29uc3QgVUludDMyIG51bVBhY2tldHNUb0NvcHkgPSAqbnVtT3V0cHV0
UGFja2V0c1B0cjsKKyAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHkgPSAobnVtUGFja2V0c1RvQ29w
eSAqIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisKKyAgICBpZiAoYXVkaW9CdWZm
ZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAxKSB7CisgICAgICAgIHNpemVfdCBjdXJyZW50T2Zm
c2V0SW5Tb3VyY2VCdWZmZXIgPSAwOworCisgICAgICAgIG1fc291cmNlQnVmZmVyLnJlc2VydmVD
YXBhY2l0eShudW1CeXRlc1RvQ29weSk7CisKKyAgICAgICAgd2hpbGUgKG51bUJ5dGVzVG9Db3B5
KSB7CisgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPD0gbV9jdXJyZW50
T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgIGlmIChtX3NhbXBs
ZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIg
PSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9
IDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVl
dWVJc0VtcHR5KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKChD
TVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVB
bmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsKKyAgICAgICAgICAgICAgICBt
X3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2Fz
dDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZl
ci5nZXQoKSkpKSkpOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0g
Q01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7Cisg
ICAgICAgICAgICAgICAgc2l6ZV90IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYgPSBzdGQ6
Om1pbihudW1CeXRlc1RvQ29weSwgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIC0gbV9jdXJyZW50
T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikpOworICAgICAgICAgICAgICAgIGlmIChhdXRvIGVy
cm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQo
KSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciwgbnVtQnl0ZXNUb0NvcHlGcm9t
U2FtcGxlQmJ1ZiwgKG1fc291cmNlQnVmZmVyLmRhdGEoKSArIGN1cnJlbnRPZmZzZXRJblNvdXJj
ZUJ1ZmZlcikpKSB7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQmxvY2tCdWZmZXJDb3B5RGF0
YUJ5dGVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG51bUJ5dGVzVG9D
b3B5IC09IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICAgICAgY3Vy
cmVudE9mZnNldEluU291cmNlQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7
CisgICAgICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArPSBu
dW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGEgPSBtX3NvdXJjZUJ1ZmZl
ci5kYXRhKCk7CisgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRl
U2l6ZSA9IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcjsKKyAgICAgICAgYXVkaW9CdWZmZXJM
aXN0LT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSBtX3NvdXJjZUZvcm1hdC5tQ2hhbm5l
bHNQZXJGcmFtZTsKKworICAgICAgICAqbnVtT3V0cHV0UGFja2V0c1B0ciA9IChhdWRpb0J1ZmZl
ckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgLyBtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQ
ZXJQYWNrZXQpOworICAgICAgICByZXR1cm4gbm9FcnI7CisgICAgfQorCisgICAgQVNTRVJUKGF1
ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnMgPT0gMik7CisKKyAgICAvLyBGSVhNRTogU3Vw
cG9ydCBpbnRlcmxlYXZlZCBkYXRhIGJ5IHVuaW50ZXJsZWF2aW5nIG1fc291cmNlQnVmZmVyIGlm
IG5lZWRlZC4KKyAgICBBU1NFUlQobV9zb3VyY2VGb3JtYXQubUZvcm1hdEZsYWdzICYga0F1ZGlv
Rm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQpOworCisgICAgbV9zb3VyY2VCdWZmZXIucmVzZXJ2
ZUNhcGFjaXR5KDIgKiBudW1CeXRlc1RvQ29weSk7CisgICAgYXV0byogZmlyc3RDaGFubmVsID0g
bV9zb3VyY2VCdWZmZXIuZGF0YSgpOworICAgIGF1dG8qIHNlY29uZENoYW5uZWwgPSBtX3NvdXJj
ZUJ1ZmZlci5kYXRhKCkgKyBudW1CeXRlc1RvQ29weTsKKworICAgIHNpemVfdCBjdXJyZW50T2Zm
c2V0SW5Tb3VyY2VCdWZmZXIgPSAwOworICAgIHdoaWxlIChudW1CeXRlc1RvQ29weSkgeworICAg
ICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPD0gbV9jdXJyZW50T2Zmc2V0SW5TYW1w
bGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXIpIHsK
KyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVmZmVyUXVldWUuZ2V0
KCkpKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBhdXRvIHNhbXBsZUJ1
ZmZlciA9IGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1
ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOwor
ICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJS
ZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZl
cihzYW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZm
ZXJTaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5n
ZXQoKSkgLyAyOworICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZl
ciA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgewor
ICAgICAgICAgICAgc2l6ZV90IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYgPSBzdGQ6Om1p
bihudW1CeXRlc1RvQ29weSwgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIC0gbV9jdXJyZW50T2Zm
c2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikpOworICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBD
TUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1
cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVC
YnVmLCAoZmlyc3RDaGFubmVsICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBmaXJzdCBjaGFubmVs
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZl
ckNvcHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50T2Zmc2V0
SW5TYW1wbGVCbG9ja0J1ZmZlciArIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplLCBudW1CeXRlc1Rv
Q29weUZyb21TYW1wbGVCYnVmLCAoc2Vjb25kQ2hhbm5lbCArIGN1cnJlbnRPZmZzZXRJblNvdXJj
ZUJ1ZmZlcikpKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0
ZXMgc2Vjb25kIGNoYW5uZWwgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbnVtQnl0ZXNUb0Nv
cHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgIGN1cnJlbnRP
ZmZzZXRJblNvdXJjZUJ1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAg
ICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArPSBudW1CeXRlc1Rv
Q29weUZyb21TYW1wbGVCYnVmOworICAgICAgICB9CisgICAgfQorCisgICAgYXVkaW9CdWZmZXJM
aXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IGZpcnN0Q2hhbm5lbDsKKyAgICBhdWRpb0J1ZmZlckxp
c3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZm
ZXI7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSAx
OworCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YSA9IHNlY29uZENoYW5u
ZWw7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gY3Vy
cmVudE9mZnNldEluU291cmNlQnVmZmVyOworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNb
MV0ubU51bWJlckNoYW5uZWxzID0gMTsKKworICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1
ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0
Lm1CeXRlc1BlclBhY2tldCk7CisgICAgcmV0dXJuIG5vRXJyOworfQorCit2b2lkIEF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGlt
ZShDTVRpbWUgbG93V2F0ZXJUaW1lKQoreworICAgIGlmICghbV9jb252ZXJ0ZXIpIHsKKyAgICAg
ICAgYXV0byBidWZmZXIgPSAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENN
QnVmZmVyUXVldWVHZXRIZWFkKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKKyAgICAgICAg
QVNTRVJUKGJ1ZmZlcik7CisKKyAgICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGlt
ZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsK
KyAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVC
dWZmZXJHZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKworICAgICAgICBh
dXRvIGZvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlv
bihidWZmZXIpOworICAgICAgICBpZiAoIWluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1h
dERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uLCBtX291dHB1dENvZGVjVHlwZSkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2hpbGUgKENNVElNRV9JU19JTlZBTElEKGxv
d1dhdGVyVGltZSkgfHwgQ01USU1FX0NPTVBBUkVfSU5MSU5FKGxvd1dhdGVyVGltZSwgPCwgQ01C
dWZmZXJRdWV1ZUdldER1cmF0aW9uKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSB7CisgICAg
ICAgIEF1ZGlvQnVmZmVyTGlzdCBmaWxsQnVmZmVyTGlzdDsKKworICAgICAgICBmaWxsQnVmZmVy
TGlzdC5tTnVtYmVyQnVmZmVycyA9IDE7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJz
WzBdLm1OdW1iZXJDaGFubmVscyA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJh
bWU7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSAo
VUludDMyKW1fZGVzdGluYXRpb25CdWZmZXIuY2FwYWNpdHkoKTsKKyAgICAgICAgZmlsbEJ1ZmZl
ckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2Rlc3RpbmF0aW9uQnVmZmVyLmRhdGEoKTsKKwor
ICAgICAgICBVSW50MzIgb3V0cHV0UGFja2V0U2l6ZSA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUJ5
dGVzUGVyUGFja2V0ID8gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtX21h
eE91dHB1dFBhY2tldFNpemU7CisgICAgICAgIFVJbnQzMiBudW1PdXRwdXRQYWNrZXRzID0gKFVJ
bnQzMiltX2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5KCkgLyBvdXRwdXRQYWNrZXRTaXplOwor
CisgICAgICAgIGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyKG1f
Y29udmVydGVyLmdldCgpLCBhdWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jLCB0aGlz
LCAmbnVtT3V0cHV0UGFja2V0cywgJmZpbGxCdWZmZXJMaXN0LCBtX2Rlc3RpbmF0aW9uUGFja2V0
RGVzY3JpcHRpb25zLmRhdGEoKSk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgQXVkaW9Db252ZXJ0ZXJGaWxsQ29tcGxleEJ1ZmZlciBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbnVtT3V0
cHV0UGFja2V0cykKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gYnVmZmVyID0g
c2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMobnVtT3V0cHV0UGFja2V0cywgZmlsbEJ1ZmZlckxp
c3QpOworCisgICAgICAgIGF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKGJ1ZmZlcik7CisKKyAg
ICAgICAgZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFt
cChidWZmZXIsIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCk7CisgICAgICAg
IGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVz
ZW50YXRpb25UaW1lU3RhbXAgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBDTVRpbWUgbmF0aXZlRHVyYXRpb24gPSBDTVNh
bXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE5hdGl2ZVBy
ZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRp
b25UaW1lU3RhbXAsIG5hdGl2ZUR1cmF0aW9uKTsKKworICAgICAgICBDTVRpbWUgb3V0cHV0RHVy
YXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAg
IG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJl
bnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAsIG91dHB1dER1cmF0aW9uKTsKKworICAgICAg
ICBlcnJvciA9IENNQnVmZmVyUXVldWVFbnF1ZXVlKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCks
IGJ1ZmZlcik7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJR
dWV1ZUVucXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Ojpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBh
dXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgp
LCBidWZmZXIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKworICAgIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRl
clRpbWUobV9sb3dXYXRlclRpbWUpOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBk
aXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKG1faXNF
bmNvZGluZykKKyAgICAgICAgICAgIHByb2Nlc3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKKyAgICB9
KTsKK30KKworQ01TYW1wbGVCdWZmZXJSZWYgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpn
ZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVl
dWUuZ2V0KCkpKSk7Cit9CisKK1JldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1
cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVy
UXVldWVEZXF1ZXVlQW5kUmV0YWluKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworfQor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aAppbmRleCBiMTQ3Y2EyODgyOWIwZjEwMzBiZGE3NGEwODQyNmM0NTY1ZTk4NzFlLi4zMjBiMWM4
OGEzMTY1NWM5ZGYxZjg1ZDM0NjYwM2EwOGZjNzFmMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMjUsNiArMjUsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24uaCIKIAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtMzQsMTEgKzM1LDE2IEBACiAjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KKyNpbmNsdWRlIDxDb3Jl
QXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ01UaW1lLmg+CiAK
IHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsK
K3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENNRm9ybWF0
RGVzY3JpcHRpb25SZWY7Cit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTUJ1ZmZlclF1ZXVlVHJpZ2dl
clRva2VuICpDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuOwogCiBPQkpDX0NMQVNTIEFWQXNzZXRX
cml0ZXI7CiBPQkpDX0NMQVNTIEFWQXNzZXRXcml0ZXJJbnB1dDsKK09CSkNfQ0xBU1MgV2ViQVZB
c3NldFdyaXRlckRlbGVnYXRlOwogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1lZGlhVGltZTsK
QEAgLTQ2LDI5ICs1Miw4MSBAQCBjbGFzcyBNZWRpYVRpbWU7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOwogY2xhc3MgQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbjsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxh
dGZvcm1BdWRpb0RhdGE7CitjbGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiAKLWNs
YXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXVEY6OkRlc3Ry
dWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyPiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXph
dGlvbjo6RWFnZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlv
VHJhY2ssIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKTsKICAgICBz
dGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoYm9vbCBoYXNB
dWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB+TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIoKTsKLSAgICAKLSAgICBib29sIHNldHVwV3JpdGVyKCk7Ci0gICAgYm9vbCBzZXRWaWRl
b0lucHV0KGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgYm9vbCBzZXRBdWRpb0lucHV0KCk7
CisKICAgICB2b2lkIGFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsK
ICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRh
JiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwg
c2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKICAgICB2b2lkIGZldGNoRGF0YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmKTsKIAorI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIq
LCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyNl
bmRpZgorCiBwcml2YXRlOgorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbyk7CisgICAg
dm9pZCBjbGVhcigpOworCisgICAgYm9vbCBpbml0aWFsaXplKCk7CisKKyAgICBzdGF0aWMgdm9p
ZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1
ZVRyaWdnZXJUb2tlbik7CisgICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVm
ZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOworCisgICAgdm9p
ZCBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAgdm9pZCBmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZm
ZXJzKCk7CisgICAgdm9pZCBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworCisgICAg
Ym9vbCBhcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKTsKKyAgICBib29sIGFwcGVu
ZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpOworCisgICAgdm9pZCBwcm9jZXNzTmV3Q29t
cHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOworICAgIHZvaWQgcHJvY2Vzc05ld0NvbXByZXNz
ZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKKyNlbHNlCiAgICAgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYsIFN0cmluZyYmIHBhdGgpOwogICAgIHZv
aWQgY2xlYXIoKTsKIAorICAgIGJvb2wgc2V0dXBXcml0ZXIoKTsKKyAgICBib29sIHNldFZpZGVv
SW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBib29sIHNldEF1ZGlvSW5wdXQoKTsK
KyNlbmRpZgorCisgICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKKwogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVy
PiBtX3dyaXRlcjsKKworICAgIGJvb2wgbV9pc1N0b3BwaW5nIHsgZmFsc2UgfTsKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKKworI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgYm9vbCBtX2hhc0F1ZGlvOworICAgIGJvb2wg
bV9oYXNWaWRlbzsKKworICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1
ZGlvRm9ybWF0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7CisgICAgUmV0YWluUHRyPEFWQXNzZXRX
cml0ZXJJbnB1dD4gbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQ7CisKKyAgICBSZXRhaW5QdHI8Q01G
b3JtYXREZXNjcmlwdGlvblJlZj4gbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fdmlkZW9Db21wcmVzc29y
OworICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9Bc3NldFdyaXRlcklu
cHV0OworICAgIENNVGltZSBtX2xhc3RWaWRlb1ByZXNlbnRhdGlvblRpbWU7CisgICAgQ01UaW1l
IG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lOworICAgIGJvb2wgbV9oYXNFbmNvZGVkVmlkZW9TYW1w
bGVzIHsgZmFsc2UgfTsKKworICAgIFJldGFpblB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+
IG1fd3JpdGVyRGVsZWdhdGU7CisjZWxzZQogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5w
dXQ+IG1fdmlkZW9JbnB1dDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX2F1
ZGlvSW5wdXQ7CiAKQEAgLTc4LDE3ICsxMzYsMTMgQEAgcHJpdmF0ZToKICAgICBCaW5hcnlTZW1h
cGhvcmUgbV9maW5pc2hXcml0aW5nU2VtYXBob3JlOwogICAgIEJpbmFyeVNlbWFwaG9yZSBtX2Zp
bmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZTsKICAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5pc2hX
cml0aW5nVmlkZW9TZW1hcGhvcmU7Ci0gICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsgZmFs
c2UgfTsKLSAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNGaXJz
dEF1ZGlvU2FtcGxlIHsgdHJ1ZSB9OwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9hdWRpb1B1bGxR
dWV1ZTsKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fdmlkZW9QdWxsUXVldWU7CiAgICAgRGVxdWU8
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV92aWRlb0J1ZmZlclBvb2w7CiAgICAgRGVx
dWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV9hdWRpb0J1ZmZlclBvb2w7CiAKLSAg
ICBib29sIG1faXNTdG9wcGluZyB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9kYXRhOwotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
Jik+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbQppbmRleCAyMzM1NGY0Nzg0ZGUwOTJmMDQ4N2MxODU0ZmM1YjI2YTVl
MjIxMWFjLi5mNTk2ZWFjNTZlMDBkMmI1NmIxMWFmMzUxODZlNjRmZjY2NDU1ZjVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBA
IC0yNiwxMTEgKzI2LDEzMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKIAorI2lmICFVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQorI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQu
bW0iCisjZWxzZQorCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElP
TikKIAorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1ZGUg
IkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRl
IDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9B
VkFzc2V0V3JpdGVySW5wdXQuaD4KKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRl
cl9Qcml2YXRlLmg+CisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5k
YXRpb24uaD4KICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZG
b3VuZGF0aW9uU29mdExpbmsuaD4KIAotI3VuZGVmIEFWRW5jb2RlckJpdFJhdGVLZXkKLSNkZWZp
bmUgQVZFbmNvZGVyQml0UmF0ZUtleSBnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNr
KCkKLSN1bmRlZiBBVkZvcm1hdElES2V5Ci0jZGVmaW5lIEFWRm9ybWF0SURLZXkgZ2V0QVZGb3Jt
YXRJREtleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZOdW1iZXJPZkNoYW5uZWxzS2V5Ci0jZGVm
aW5lIEFWTnVtYmVyT2ZDaGFubmVsc0tleSBnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFs
bGJhY2soKQotI3VuZGVmIEFWU2FtcGxlUmF0ZUtleQotI2RlZmluZSBBVlNhbXBsZVJhdGVLZXkg
Z2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKK0BpbnRlcmZhY2UgV2ViQVZBc3NldFdy
aXRlckRlbGVnYXRlIDogTlNPYmplY3QgPEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4geworICAgIFdl
YWtQdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IG1fd3JpdGVyOworfQog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKil3cml0ZXI7CistICh2b2lkKWNsb3Nl
OworLSAodm9pZClmaW5pc2g7CiAKLXVzaW5nIG5hbWVzcGFjZSBQQUw7CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgeworfTsKIAotc3RhdGljIE5TU3Ry
aW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqKXdyaXRlcgog
ewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKSkKLSAg
ICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCk7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlm
IChzZWxmKQorICAgICAgICBzZWxmLT5tX3dyaXRlciA9IG1ha2VXZWFrUHRyKHdyaXRlcik7CiAK
LSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRm9ybWF0SURL
ZXkiKTsKLSAgICByZXR1cm4gQCJBVkZvcm1hdElES2V5IjsKKyAgICByZXR1cm4gc2VsZjsKIH0K
IAotc3RhdGljIE5TU3RyaW5nICpnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2so
KQorLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25f
QVZOdW1iZXJPZkNoYW5uZWxzS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5k
YXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCk7Ci0KLSAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWTnVtYmVyT2ZDaGFubmVsc0tleSIpOwotICAgIHJldHVy
biBAIkFWTnVtYmVyT2ZDaGFubmVsc0tleSI7CisgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi1z
dGF0aWMgTlNTdHJpbmcgKmdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCistICh2b2lk
KWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdt
ZW50ZWRIZWFkZXJEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkSGVhZGVyRGF0YQogewotICAgIGlm
IChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpKQotICAgICAgICBy
ZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpOworICAgIFVOVVNF
RF9QQVJBTShhc3NldFdyaXRlcik7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAg
ICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pIHsKKyAgICAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZB
c3NldFdyaXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBi
eXRlc10pLCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVk
U2VsZi0+bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPm1fd3Jp
dGVyLT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWEsICJGYWlsZWQgdG8gbG9hZCBBVlNhbXBsZVJhdGVLZXkiKTsKLSAgICByZXR1cm4gQCJBVlNh
bXBsZVJhdGVLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93cml0ZXItPmFwcGVu
ZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRl
c10pLCBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3RoXSk7CiB9CiAKLXN0YXRpYyBOU1N0cmlu
ZyAqZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCistICh2b2lkKWFzc2V0V3Jp
dGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRNZWRp
YURhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRNZWRpYURhdGEgZnJhZ21lbnRlZE1lZGlhRGF0YVJl
cG9ydDooQVZGcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0ICopZnJhZ21lbnRlZE1lZGlhRGF0YVJl
cG9ydAogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJh
dGVLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkVuY29kZXJC
aXRSYXRlS2V5KCk7CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKKyAgICBVTlVTRURf
UEFSQU0oZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCk7CisgICAgaWYgKCFpc01haW5UaHJlYWQo
KSkgeworICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3Ro
XSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFp
blB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRN
ZWRpYURhdGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYg
KHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyKQorICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRT
ZWxmLT5tX3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZFbmNvZGVyQml0UmF0ZUtleSIpOwotICAg
IHJldHVybiBAIkFWRW5jb2RlckJpdFJhdGVLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAgICAg
ICAgbV93cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVu
dGVkTWVkaWFEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0pOwogfQog
Ci1SZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ss
IGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKQorLSAodm9pZCljbG9z
ZQogewotICAgIGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7Ci0gICAgaWYgKHZpZGVvVHJhY2sp
IHsKLSAgICAgICAgYXV0byYgc2V0dGluZ3MgPSB2aWRlb1RyYWNrLT5zZXR0aW5ncygpOwotICAg
ICAgICB3aWR0aCA9IHNldHRpbmdzLndpZHRoKCk7Ci0gICAgICAgIGhlaWdodCA9IHNldHRpbmdz
LmhlaWdodCgpOwotICAgIH0KLSAgICByZXR1cm4gY3JlYXRlKCEhYXVkaW9UcmFjaywgd2lkdGgs
IGhlaWdodCk7CisgICAgbV93cml0ZXIgPSBudWxscHRyOwogfQogCi1SZWZQdHI8TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9v
bCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorLSAodm9pZClmaW5pc2gKIHsKLSAg
ICBOU1N0cmluZyAqZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KEAidmlkZW9zIik7Ci0gICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIvJWxsZC5tcDQiLCBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRp
bWVDbG9jaygpKS52YWx1ZV07Ci0gICAgTlNTdHJpbmcgKnBhdGggPSBbZGlyZWN0b3J5IHN0cmlu
Z0J5QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1lXTsKKyAgICBtX3dyaXRlciA9IG51bGxwdHI7Cit9
CiAKLSAgICBOU1VSTCAqb3V0cHV0VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXTsK
LSAgICBTdHJpbmcgZmlsZVBhdGggPSBbcGF0aCBVVEY4U3RyaW5nXTsKLSAgICBOU0Vycm9yICpl
cnJvciA9IG5pbDsKLSAgICBhdXRvIGF2QXNzZXRXcml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
QVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhVUkw6b3V0cHV0VVJMIGZpbGVUeXBlOkFW
RmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0
YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKWVycm9yLmNvZGUpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CitAZW5kCiAKLSAgICBhdXRvIHdyaXRlciA9IGFk
b3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoV1RGTW92ZShhdkFzc2V0V3Jp
dGVyKSwgV1RGTW92ZShmaWxlUGF0aCkpKTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGlm
IChoYXNBdWRpbyAmJiAhd3JpdGVyLT5zZXRBdWRpb0lucHV0KCkpCit1c2luZyBuYW1lc3BhY2Ug
UEFMOworCitSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQoreworICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcihoYXNBdWRpbywgd2lkdGggJiYgaGVpZ2h0KSk7CisgICAgaWYgKCF3cml0ZXItPmlu
aXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHdyaXRlcjsK
K30KIAotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKLSAgICAgICAgaWYgKCF3cml0ZXItPnNl
dFZpZGVvSW5wdXQod2lkdGgsIGhlaWdodCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wcmVzc2VkVmlkZW9P
dXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkICptZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgQ01C
dWZmZXJRdWV1ZVRyaWdnZXJUb2tlbikKK3sKKyAgICBhdXRvICp3cml0ZXIgPSBzdGF0aWNfY2Fz
dDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcio+KG1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
KTsKKyAgICB3cml0ZXItPnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCk7
Cit9CiAKLSAgICByZXR1cm4gV1RGTW92ZSh3cml0ZXIpOwordm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6Y29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCAqbWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pCit7Cisg
ICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIq
PihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7CisgICAgd3JpdGVyLT5wcm9jZXNzTmV3Q29t
cHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOwogfQogCi1NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+
JiYgYXZBc3NldFdyaXRlciwgU3RyaW5nJiYgZmlsZVBhdGgpCi0gICAgOiBtX3dyaXRlcihXVEZN
b3ZlKGF2QXNzZXRXcml0ZXIpKQotICAgICwgbV9wYXRoKFdURk1vdmUoZmlsZVBhdGgpKQorTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGJvb2wg
aGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pCisgICAgOiBtX2hhc0F1ZGlvKGhhc0F1ZGlvKQorICAg
ICwgbV9oYXNWaWRlbyhoYXNWaWRlbykKIHsKIH0KIApAQCAtMTM5LDE0MCArMTU5LDE4MCBAQCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkK
ICAgICBjbGVhcigpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVh
cigpCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKCkKIHsKLSAg
ICBpZiAobV92aWRlb0lucHV0KSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1dC5jbGVhcigpOwotICAg
ICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fdmlkZW9QdWxsUXVldWUpOworICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOworICAgIG1fd3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0
ZXJJbnN0YW5jZSgpIGluaXRXaXRoRmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJv
cl0pOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNv
ZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29kZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgaWYgKG1fYXVkaW9JbnB1dCkgewotICAgICAgICBtX2F1ZGlvSW5wdXQuY2xlYXIoKTsK
LSAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2F1ZGlvUHVsbFF1ZXVlKTsKKworICAgIG1fd3Jp
dGVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aFdyaXRlcjogdGhpc10pOworICAgIFttX3dyaXRlci5nZXQoKSBzZXREZWxlZ2F0ZTpt
X3dyaXRlckRlbGVnYXRlLmdldCgpXTsKKworICAgIGlmIChtX2hhc0F1ZGlvKSB7CisgICAgICAg
IG1fYXVkaW9Db21wcmVzc29yID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUo
Y29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2ssIHRoaXMpOworICAgICAgICBpZiAo
IW1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICBpZiAobV93cml0ZXIpCi0gICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CisgICAgaWYgKG1faGFz
VmlkZW8pIHsKKyAgICAgICAgbV92aWRlb0NvbXByZXNzb3IgPSBWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmNyZWF0ZShrQ01WaWRlb0NvZGVjVHlwZV9IMjY0LCBjb21wcmVzc2VkVmlkZW9P
dXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7CisgICAgICAgIGlmICghbV92aWRlb0NvbXByZXNz
b3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG51bGxwdHIpOwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKQoreworICAgIEFTU0VSVCht
X2hhc1ZpZGVvKTsKKyAgICBpZiAoIW1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAg
ICBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2Ny
aXB0aW9uKG1fdmlkZW9Db21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVCdWZmZXIoKSk7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtQdHIgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10g
eworICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1faGFzQXVkaW8gJiYgIW1fYXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHN0YXJ0
QXNzZXRXcml0ZXIoKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIGlmICghbV9oYXNTdGFydGVk
V3JpdGluZykKKyAgICAgICAgcmV0dXJuOworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZm
ZXJzKCk7CiB9CiAKLWJvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldFZpZGVvSW5w
dXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcnMoKQogewotICAgIEFTU0VS
VCghbV92aWRlb0lucHV0KTsKLSAgICAKLSAgICBOU0RpY3Rpb25hcnkgKmNvbXByZXNzaW9uUHJv
cGVydGllcyA9IEB7Ci0gICAgICAgIEFWVmlkZW9BdmVyYWdlQml0UmF0ZUtleSA6IFtOU051bWJl
ciBudW1iZXJXaXRoSW50OndpZHRoICogaGVpZ2h0ICogMTJdLAotICAgICAgICBBVlZpZGVvRXhw
ZWN0ZWRTb3VyY2VGcmFtZVJhdGVLZXkgOiBAKDMwKSwKLSAgICAgICAgQVZWaWRlb01heEtleUZy
YW1lSW50ZXJ2YWxLZXkgOiBAKDEyMCksCi0gICAgICAgIEFWVmlkZW9Qcm9maWxlTGV2ZWxLZXkg
OiBBVlZpZGVvUHJvZmlsZUxldmVsSDI2NE1haW5BdXRvTGV2ZWwKLSAgICB9OwotCi0gICAgTlNE
aWN0aW9uYXJ5ICp2aWRlb1NldHRpbmdzID0gQHsKLSAgICAgICAgQVZWaWRlb0NvZGVjS2V5OiBB
VlZpZGVvQ29kZWNIMjY0LAotICAgICAgICBBVlZpZGVvV2lkdGhLZXk6IFtOU051bWJlciBudW1i
ZXJXaXRoSW50OndpZHRoXSwKLSAgICAgICAgQVZWaWRlb0hlaWdodEtleTogW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6aGVpZ2h0XSwKLSAgICAgICAgQVZWaWRlb0NvbXByZXNzaW9uUHJvcGVydGll
c0tleTogY29tcHJlc3Npb25Qcm9wZXJ0aWVzCi0gICAgfTsKKyAgICBBU1NFUlQobV9oYXNBdWRp
byk7CisgICAgaWYgKCFtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV9hdWRp
b0Zvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbiht
X2F1ZGlvQ29tcHJlc3Nvci0+Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkpOworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt3ZWFrUHRyID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXNdIHsKKyAgICAg
ICAgICAgIGlmICghd2Vha1B0cikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmIChtX2hhc1ZpZGVvICYmICFtX3ZpZGVvRm9ybWF0RGVzY3JpcHRp
b24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFydEFzc2V0V3Jp
dGVyKCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcp
CisgICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOwor
fQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKCkK
K3sKKyAgICBpZiAobV9oYXNWaWRlbykgeworICAgICAgICBtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1
dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRX
aXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6bmlsIHNvdXJjZUZv
cm1hdEhpbnQ6bV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7CisgICAgICAgIGlmICgh
W21fd3JpdGVyLmdldCgpIGNhbkFkZElucHV0Om1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgp
XSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlciBmYWlsZWQgY2FuQWRkSW5wdXQg
Zm9yIHZpZGVvIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgW21f
d3JpdGVyLmdldCgpIGFkZElucHV0Om1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpXTsKKyAg
ICB9CiAgICAgCi0gICAgbV92aWRlb0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRX
cml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBv
dXRwdXRTZXR0aW5nczp2aWRlb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7Ci0gICAg
W21fdmlkZW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICBp
ZiAobV9oYXNBdWRpbykgeworICAgICAgICBtX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFU
eXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6
bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7CisgICAgICAgIGlmICghW21fd3JpdGVy
LmdldCgpIGNhbkFkZElucHV0Om1fYXVkaW9Bc3NldFdyaXRlcklucHV0LmdldCgpXSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlciBmYWlsZWQgY2FuQWRkSW5wdXQgZm9yIGF1ZGlv
Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgW21fd3JpdGVyLmdl
dCgpIGFkZElucHV0Om1fYXVkaW9Bc3NldFdyaXRlcklucHV0LmdldCgpXTsKKyAgICB9CiAgICAg
Ci0gICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV92aWRlb0lucHV0LmdldCgpXSkgewot
ICAgICAgICBtX3ZpZGVvSW5wdXQgPSBudWxscHRyOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgInRoZSB2aWRlbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8g
dGhlIEFWQXNzZXRXcml0ZXIiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghW21f
d3JpdGVyLmdldCgpIHN0YXJ0V3JpdGluZ10pIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRl
ciBmYWlsZWQgc3RhcnRXcml0aW5nIik7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgW21f
d3JpdGVyIGFkZElucHV0Om1fdmlkZW9JbnB1dC5nZXQoKV07Ci0gICAgbV92aWRlb1B1bGxRdWV1
ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZVZpZGVvUmVjb3JkaW5nUHVsbEJ1ZmZl
clF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKLSAgICByZXR1cm4gdHJ1ZTsKKworICAg
IFttX3dyaXRlci5nZXQoKSBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6a0NNVGltZVplcm9dOwor
CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKworICAgIG1faGFzU3RhcnRl
ZFdyaXRpbmcgPSB0cnVlOwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpz
ZXRBdWRpb0lucHV0KCkKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENv
bXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpCiB7Ci0gICAgQVNTRVJUKCFtX2F1ZGlvSW5wdXQp
OworICAgIGlmICghbV9hdWRpb0NvbXByZXNzb3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIE5TRGljdGlvbmFyeSAqYXVkaW9TZXR0aW5ncyA9IEB7Ci0gICAgICAgIEFWRW5jb2RlckJp
dFJhdGVLZXkgOiBAKDI4MDAwKSwKLSAgICAgICAgQVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9y
bWF0TVBFRzRBQUMpLAotICAgICAgICBBVk51bWJlck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAotICAg
ICAgICBBVlNhbXBsZVJhdGVLZXkgOiBAKDIyMDUwKQotICAgIH07CisgICAgYXV0byBidWZmZXIg
PSBtX2F1ZGlvQ29tcHJlc3Nvci0+dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOworICAgIGlmICgh
YnVmZmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2F1ZGlvSW5wdXQgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlh
VHlwZTpBVk1lZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdzOmF1ZGlvU2V0dGluZ3Mgc291cmNl
Rm9ybWF0SGludDpuaWxdKTsKLSAgICBbbV9hdWRpb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJ
blJlYWxUaW1lOnRydWVdOwotICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElucHV0Om1f
YXVkaW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV9hdWRpb0lucHV0ID0gbnVsbHB0cjsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgYXVkaW8gaW5wdXQgaXMg
bm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7CisgICAgaWYgKCFbbV9h
dWRpb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICBb
bV93cml0ZXIgZmx1c2hdOworICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSBhcHBl
bmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxl
QnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29yKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIFttX3dyaXRlciBhZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCld
OwotICAgIG1fYXVkaW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVB
dWRpb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisK
KyAgICBhdXRvIGJ1ZmZlciA9IG1fdmlkZW9Db21wcmVzc29yLT50YWtlT3V0cHV0U2FtcGxlQnVm
ZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1f
bGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9u
VGltZVN0YW1wKGJ1ZmZlci5nZXQoKSk7CisgICAgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUgPSBD
TVNhbXBsZUJ1ZmZlckdldERlY29kZVRpbWVTdGFtcChidWZmZXIuZ2V0KCkpOworICAgIG1faGFz
RW5jb2RlZFZpZGVvU2FtcGxlcyA9IHRydWU7CisKKyAgICBpZiAoIVttX3ZpZGVvQXNzZXRXcml0
ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgIFttX3dyaXRlciBmbHVz
aF07CisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZl
cjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIFJl
dGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGlt
ZVN0YW1wKENNU2FtcGxlQnVmZmVyUmVmIG9yaWdpbmFsQnVmZmVyKQordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKQogewotICAg
IENNVGltZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9j
aygpKTsKLSAgICBDTUl0ZW1Db3VudCBjb3VudCA9IDA7Ci0gICAgQ01TYW1wbGVCdWZmZXJHZXRT
YW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIDAsIG5pbCwgJmNvdW50KTsKLSAg
ICAKLSAgICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3VudCk7Ci0gICAg
Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIGNv
dW50LCB0aW1lSW5mby5kYXRhKCksICZjb3VudCk7Ci0gICAgCi0gICAgZm9yIChDTUl0ZW1Db3Vu
dCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGlt
ZVN0YW1wID0ga0NNVGltZUludmFsaWQ7Ci0gICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlv
blRpbWVTdGFtcCA9IHN0YXJ0VGltZTsKLSAgICB9Ci0gICAgCi0gICAgQ01TYW1wbGVCdWZmZXJS
ZWYgbmV3QnVmZmVyID0gbnVsbHB0cjsKLSAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJD
cmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZl
ciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcik7Ci0gICAgaWYgKGVycm9yKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYWRvcHRDRihuZXdCdWZmZXIpOwor
ICAgIHdoaWxlIChhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIoKSB8fCBhcHBlbmRD
b21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKSkgeyB9OwogfQogCi12b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJl
ZiBzYW1wbGVCdWZmZXIpCitzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kRW5kc1ByZXZpb3VzU2Ft
cGxlRHVyYXRpb25NYXJrZXIoQVZBc3NldFdyaXRlcklucHV0ICphc3NldFdyaXRlcklucHV0LCBD
TVRpbWUgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUgZGVjb2RpbmdUaW1lU3RhbXApCiB7
Ci0gICAgQVNTRVJUKG1fdmlkZW9JbnB1dCk7Ci0gICAgaWYgKG1faXNTdG9wcGVkKQotICAgICAg
ICByZXR1cm47CisgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm8gPSB7IGtDTVRpbWVJ
bnZhbGlkLCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGRlY29kaW5nVGltZVN0YW1wfTsKIAotICAg
IGlmICghbV9oYXNTdGFydGVkV3JpdGluZykgewotICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFy
dFdyaXRpbmddKSB7Ci0gICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGlu
c3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpW21fd3JpdGVyIGVycm9y
XSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgW21fd3JpdGVyIHN0
YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVD
bG9jaygpKV07Ci0gICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOwotICAgICAgICBS
ZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwot
ICAgICAgICBbbV92aWRlb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1f
dmlkZW9QdWxsUXVldWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAo
IVttX3ZpZGVvSW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlk
ZW9Mb2NrKTsKLSAgICAgICAgICAgICAgICBpZiAobV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgp
KQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IG1fdmlkZW9CdWZmZXJQb29sLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGxvY2tl
ci51bmxvY2tFYXJseSgpOwotICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBhcHBl
bmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsKLSAgICAgICAgICAgIGlmIChtX2lzU3RvcHBl
ZCAmJiBtX3ZpZGVvQnVmZmVyUG9vbC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBbbV92
aWRlb0lucHV0IG1hcmtBc0ZpbmlzaGVkXTsKLSAgICAgICAgICAgICAgICBtX2ZpbmlzaFdyaXRp
bmdWaWRlb1NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfV07Cisg
ICAgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyID0gTlVMTDsKKyAgICBhdXRvIGVycm9yID0gQ01T
YW1wbGVCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgdHJ1ZSwgTlVMTCwg
TlVMTCwgTlVMTCwgMCwgMSwgJnRpbWluZ0luZm8sIDAsIE5VTEwsICZidWZmZXIpOworICAgIGlm
IChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFy
a2VyIGZhaWxlZCBDTVNhbXBsZUJ1ZmZlckNyZWF0ZSB3aXRoICVkIiwgZXJyb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNh
bXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7Ci0gICAgaWYgKCFi
dWZmZXJXaXRoQ3VycmVudFRpbWUpCi0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIHNhbXBsZUJ1
ZmZlciA9IGFkb3B0Q0YoYnVmZmVyKTsKKworICAgIENNU2V0QXR0YWNobWVudChzYW1wbGVCdWZm
ZXIuZ2V0KCksIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxl
RHVyYXRpb24sIGtDRkJvb2xlYW5UcnVlLCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdh
dGUpOworICAgIGlmICghW2Fzc2V0V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOnNhbXBs
ZUJ1ZmZlci5nZXQoKV0pCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgYXBwZW5kU2FtcGxlQnVmZmVyIHRvIHdyaXRlciBp
bnB1dCBmYWlsZWQiKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Zmx1
c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpCit7CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBs
ZUJ1ZmZlcnMoKTsKKyAgICAKKyAgICBpZiAobV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzKQorICAg
ICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihtX3ZpZGVvQXNzZXRX
cml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1lLCBtX2xhc3RWaWRl
b0RlY29kaW5nVGltZSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNs
ZWFyKCkKK3sKKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CisK
KyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobnVsbHB0cik7Cit9CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlk
ZW9Mb2NrKTsKLSAgICBtX3ZpZGVvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShidWZmZXJXaXRo
Q3VycmVudFRpbWUpKTsKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZFZp
ZGVvU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcikKK3sKKyAgICBt
X3ZpZGVvQ29tcHJlc3Nvci0+YWRkU2FtcGxlQnVmZmVyKHNhbXBsZUJ1ZmZlcik7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUF1ZGlv
Rm9ybWF0RGVzY3JpcHRpb24oY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24pCkBAIC0yODAsMTA1ICszNDAsNzcgQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3Jt
YXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb24KICAgICBh
dXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVz
Y3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24p
OwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0ID0gbnVsbHB0cjsKICAgICBhdXRv
IGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGJhc2ljRGVzY3JpcHRpb24sIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXQpOwot
ICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihmb3JtYXQpOwogfQogCi1zdGF0
aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQXVkaW9TYW1wbGVC
dWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0
LCBzaXplX3Qgc2FtcGxlQ291bnQpCi17Ci0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNQ2xvY2tH
ZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOwotICAgIENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVC
dWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5V
TEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQsIHNhbXBsZUNvdW50LCBzdGFydFRpbWUsIE5V
TEwsICZzYW1wbGVCdWZmZXIpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKLX0KLQotdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVDb3VudCkKK3N0YXRpYyBp
bmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZl
cihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0aW1lLCBzaXplX3Qgc2Ft
cGxlQ291bnQpCiB7Ci0gICAgQVNTRVJUKG1fYXVkaW9JbnB1dCk7Ci0gICAgaWYgKCghbV9oYXNT
dGFydGVkV3JpdGluZyAmJiBtX3ZpZGVvSW5wdXQpIHx8IG1faXNTdG9wcGVkKQotICAgICAgICBy
ZXR1cm47CiAgICAgYXV0byBmb3JtYXQgPSBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGRl
c2NyaXB0aW9uKTsKICAgICBpZiAoIWZvcm1hdCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICht
X2lzRmlyc3RBdWRpb1NhbXBsZSkgewotICAgICAgICBpZiAoIW1fdmlkZW9JbnB1dCkgewotICAg
ICAgICAgICAgLy8gYXVkaW8tb25seSByZWNvcmRpbmcuCi0gICAgICAgICAgICBpZiAoIVttX3dy
aXRlciBzdGFydFdyaXRpbmddKSB7Ci0gICAgICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVl
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFtt
X3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dl
dEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRy
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSBmYWxzZTsKLSAg
ICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0g
dGhpczsKLSAgICAgICAgW21fYXVkaW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25R
dWV1ZTptX2F1ZGlvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFbbV9hdWRpb0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2F1ZGlvTG9jayk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXVkaW9CdWZmZXJQb29sLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAg
ICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IGFw
cGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwotICAgICAgICAgICAgfSB3aGlsZSAodHJ1
ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV9hdWRpb0J1ZmZlclBvb2wuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07
Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUuc2lnbmFsKCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBl
cnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtD
RkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQuZ2V0KCks
IHNhbXBsZUNvdW50LCB0b0NNVGltZSh0aW1lKSwgTlVMTCwgJnNhbXBsZUJ1ZmZlcik7CisgICAg
aWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIgY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0
RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKHNhbXBsZUJ1ZmZlcik7CiAK
LSAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tl
dERlc2NyaXB0aW9ucyhmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50KTsKLSAgICBpZiAoIXNhbXBs
ZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZl
clNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NG
QWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVk
aW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0
dXJuOworICAgIGVycm9yID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVm
ZmVyTGlzdChidWZmZXIuZ2V0KCksIGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkubGlzdCgpKTsKKyAg
ICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9t
QXVkaW9CdWZmZXJMaXN0IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KIAotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9hdWRpb0xvY2spOwotICAgIG1fYXVkaW9CdWZmZXJQb29sLmFwcGVuZChX
VEZNb3ZlKHNhbXBsZUJ1ZmZlcikpOwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlh
VGltZSYgdGltZSwgc2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIGlmIChhdXRvIHNhbXBsZUJ1
ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGRhdGEsIGRlc2NyaXB0aW9uLCB0aW1lLCBz
YW1wbGVDb3VudCkpCisgICAgICAgIG1fYXVkaW9Db21wcmVzc29yLT5hZGRTYW1wbGVCdWZmZXIo
c2FtcGxlQnVmZmVyLmdldCgpKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6c3RvcFJlY29yZGluZygpCiB7CiAgICAgaWYgKG1faXNTdG9wcGVkKQogICAgICAgICByZXR1
cm47Ci0KKyAgICAKICAgICBtX2lzU3RvcHBlZCA9IHRydWU7CiAgICAgaWYgKCFtX2hhc1N0YXJ0
ZWRXcml0aW5nKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKFttX3dyaXRlciBzdGF0dXNd
ID09IEFWQXNzZXRXcml0ZXJTdGF0dXNXcml0aW5nKTsKLSAgICBpZiAobV92aWRlb0lucHV0KQot
ICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZS53YWl0KCk7CiAKLSAgICBpZiAo
bV9hdWRpb0lucHV0KQotICAgICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS53YWl0
KCk7CisgICAgaWYgKG1fdmlkZW9Db21wcmVzc29yKQorICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nv
ci0+ZmluaXNoKCk7CisgICAgaWYgKG1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICBtX2F1ZGlv
Q29tcHJlc3Nvci0+ZmluaXNoKCk7CisKKyAgICBmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJz
KCk7CisKKyAgICBbbV93cml0ZXIgZmx1c2hdOwogCiAgICAgbV9pc1N0b3BwaW5nID0gdHJ1ZTsK
ICAgICBbbV93cml0ZXIgZmluaXNoV3JpdGluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjpbdGhpcywg
d2Vha1B0ciA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgd2Vha1B0ciA9IFdURk1vdmUod2Vha1B0ciksIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCldKCkgbXV0YWJsZSB7
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3ZlKHdlYWtQ
dHIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGlmICht
X2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBXVEZNb3ZlKG1fZGF0YSk7CiAgICAgICAgICAgICAgICAgbV9mZXRjaERhdGFDb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIG1fZGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgbV9pc1N0b3BwZWQgPSBmYWxzZTsKICAgICAgICAgICAgIG1faGFzU3RhcnRlZFdyaXRp
bmcgPSBmYWxzZTsKLSAgICAgICAgICAgIG1faXNGaXJzdEF1ZGlvU2FtcGxlID0gdHJ1ZTsKICAg
ICAgICAgICAgIGNsZWFyKCk7CiAgICAgICAgIH0pOwotICAgICAgICBtX2ZpbmlzaFdyaXRpbmdT
ZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgfV07Ci0gICAgbV9maW5pc2hXcml0aW5nU2VtYXBob3Jl
LndhaXQoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC0zOTIsNiArNDI0LDI1IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRC
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKIH0KIAordm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKK3sKKyAgICBpZiAoIW1fZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBt
X2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6YXBwZW5kRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBp
ZiAoIW1fZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbV9kYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hRmlsZUJhc2VkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjczZmIxZWVhZTdkNGE0NTVlMzU0YTE2ZWI2YTY4NDY4ZWQ0MTJlNGYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW0KQEAgLTAsMCArMSwzODMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRB
VElPTikKKworI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRl
ICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdy
aXRlci5oPgorI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQuaD4KKyNp
bmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW1wb3J0IDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworI3VuZGVmIEFWRW5jb2RlckJpdFJh
dGVLZXkKKyNkZWZpbmUgQVZFbmNvZGVyQml0UmF0ZUtleSBnZXRBVkVuY29kZXJCaXRSYXRlS2V5
V2l0aEZhbGxiYWNrKCkKKyN1bmRlZiBBVkZvcm1hdElES2V5CisjZGVmaW5lIEFWRm9ybWF0SURL
ZXkgZ2V0QVZGb3JtYXRJREtleVdpdGhGYWxsYmFjaygpCisjdW5kZWYgQVZOdW1iZXJPZkNoYW5u
ZWxzS2V5CisjZGVmaW5lIEFWTnVtYmVyT2ZDaGFubmVsc0tleSBnZXRBVk51bWJlck9mQ2hhbm5l
bHNLZXlXaXRoRmFsbGJhY2soKQorI3VuZGVmIEFWU2FtcGxlUmF0ZUtleQorI2RlZmluZSBBVlNh
bXBsZVJhdGVLZXkgZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgUEFMOworCitzdGF0aWMgTlNTdHJpbmcgKmdl
dEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQoreworICAgIGlmIChQQUw6OmNhbkxvYWRfQVZG
b3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKSkKKyAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91
bmRhdGlvbl9BVkZvcm1hdElES2V5KCk7CisKKyAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwg
IkZhaWxlZCB0byBsb2FkIEFWRm9ybWF0SURLZXkiKTsKKyAgICByZXR1cm4gQCJBVkZvcm1hdElE
S2V5IjsKK30KKworc3RhdGljIE5TU3RyaW5nICpnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRo
RmFsbGJhY2soKQoreworICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWTnVtYmVy
T2ZDaGFubmVsc0tleSgpKQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FW
TnVtYmVyT2ZDaGFubmVsc0tleSgpOworCisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJG
YWlsZWQgdG8gbG9hZCBBVk51bWJlck9mQ2hhbm5lbHNLZXkiKTsKKyAgICByZXR1cm4gQCJBVk51
bWJlck9mQ2hhbm5lbHNLZXkiOworfQorCitzdGF0aWMgTlNTdHJpbmcgKmdldEFWU2FtcGxlUmF0
ZUtleVdpdGhGYWxsYmFjaygpCit7CisgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25f
QVZTYW1wbGVSYXRlS2V5KCkpCisgICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25f
QVZTYW1wbGVSYXRlS2V5KCk7CisKKyAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxl
ZCB0byBsb2FkIEFWU2FtcGxlUmF0ZUtleSIpOworICAgIHJldHVybiBAIkFWU2FtcGxlUmF0ZUtl
eSI7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxs
YmFjaygpCit7CisgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0
UmF0ZUtleSgpKQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRW5jb2Rl
ckJpdFJhdGVLZXkoKTsKKworICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRv
IGxvYWQgQVZFbmNvZGVyQml0UmF0ZUtleSIpOworICAgIHJldHVybiBAIkFWRW5jb2RlckJpdFJh
dGVLZXkiOworfQorCitSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQoreworICAgIE5TU3RyaW5nICpkaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkoQCJ2aWRlb3MiKTsKKyAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIi8lbGxkLm1wNCIsIENNQ2xvY2tHZXRUaW1lKENN
Q2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpLnZhbHVlXTsKKyAgICBOU1N0cmluZyAqcGF0aCA9IFtk
aXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6ZmlsZW5hbWVdOworCisgICAgTlNVUkwg
Km91dHB1dFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF07CisgICAgU3RyaW5nIGZp
bGVQYXRoID0gW3BhdGggVVRGOFN0cmluZ107CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Cisg
ICAgYXV0byBhdkFzc2V0V3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJ
bnN0YW5jZSgpIGluaXRXaXRoVVJMOm91dHB1dFVSTCBmaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQg
ZXJyb3I6JmVycm9yXSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdp
dGggZXJyb3IgY29kZSAlbGQiLCAobG9uZyllcnJvci5jb2RlKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgYXV0byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRlciksIFdURk1vdmUoZmlsZVBh
dGgpKSk7CisKKyAgICBpZiAoaGFzQXVkaW8gJiYgIXdyaXRlci0+c2V0QXVkaW9JbnB1dCgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKKyAg
ICAgICAgaWYgKCF3cml0ZXItPnNldFZpZGVvSW5wdXQod2lkdGgsIGhlaWdodCkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gV1RGTW92ZSh3cml0ZXIp
OworfQorCitNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYgYXZBc3NldFdyaXRlciwgU3RyaW5nJiYg
ZmlsZVBhdGgpCisgICAgOiBtX3dyaXRlcihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpKQorICAgICwg
bV9wYXRoKFdURk1vdmUoZmlsZVBhdGgpKQoreworfQorCitNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKK3sKKyAgICBjbGVhcigpOworfQor
Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVhcigpCit7CisgICAgaWYgKG1f
dmlkZW9JbnB1dCkgeworICAgICAgICBtX3ZpZGVvSW5wdXQuY2xlYXIoKTsKKyAgICAgICAgZGlz
cGF0Y2hfcmVsZWFzZShtX3ZpZGVvUHVsbFF1ZXVlKTsKKyAgICB9CisgICAgaWYgKG1fYXVkaW9J
bnB1dCkgeworICAgICAgICBtX2F1ZGlvSW5wdXQuY2xlYXIoKTsKKyAgICAgICAgZGlzcGF0Y2hf
cmVsZWFzZShtX2F1ZGlvUHVsbFF1ZXVlKTsKKyAgICB9CisgICAgaWYgKG1fd3JpdGVyKQorICAg
ICAgICBtX3dyaXRlci5jbGVhcigpOworCisgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBpZiAo
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFu
ZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworfQorCitib29sIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhl
aWdodCkKK3sKKyAgICBBU1NFUlQoIW1fdmlkZW9JbnB1dCk7CisgICAgCisgICAgTlNEaWN0aW9u
YXJ5ICpjb21wcmVzc2lvblByb3BlcnRpZXMgPSBAeworICAgICAgICBBVlZpZGVvQXZlcmFnZUJp
dFJhdGVLZXkgOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0aCAqIGhlaWdodCAqIDEyXSwK
KyAgICAgICAgQVZWaWRlb0V4cGVjdGVkU291cmNlRnJhbWVSYXRlS2V5IDogQCgzMCksCisgICAg
ICAgIEFWVmlkZW9NYXhLZXlGcmFtZUludGVydmFsS2V5IDogQCgxMjApLAorICAgICAgICBBVlZp
ZGVvUHJvZmlsZUxldmVsS2V5IDogQVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xldmVs
CisgICAgfTsKKworICAgIE5TRGljdGlvbmFyeSAqdmlkZW9TZXR0aW5ncyA9IEB7CisgICAgICAg
IEFWVmlkZW9Db2RlY0tleTogQVZWaWRlb0NvZGVjSDI2NCwKKyAgICAgICAgQVZWaWRlb1dpZHRo
S2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0aF0sCisgICAgICAgIEFWVmlkZW9IZWln
aHRLZXk6IFtOU051bWJlciBudW1iZXJXaXRoSW50OmhlaWdodF0sCisgICAgICAgIEFWVmlkZW9D
b21wcmVzc2lvblByb3BlcnRpZXNLZXk6IGNvbXByZXNzaW9uUHJvcGVydGllcworICAgIH07Cisg
ICAgCisgICAgbV92aWRlb0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJ
bnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBvdXRwdXRT
ZXR0aW5nczp2aWRlb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7CisgICAgW21fdmlk
ZW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICAKKyAgICBp
ZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldKSB7CisgICAgICAg
IG1fdmlkZW9JbnB1dCA9IG51bGxwdHI7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAidGhlIHZpZGVvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZB
c3NldFdyaXRlciIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFttX3dyaXRl
ciBhZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldOworICAgIG1fdmlkZW9QdWxsUXVldWUgPSBk
aXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVWaWRlb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1
ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldEF1ZGlvSW5wdXQoKQoreworICAgIEFTU0VS
VCghbV9hdWRpb0lucHV0KTsKKworICAgIE5TRGljdGlvbmFyeSAqYXVkaW9TZXR0aW5ncyA9IEB7
CisgICAgICAgIEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4MDAwKSwKKyAgICAgICAgQVZGb3Jt
YXRJREtleSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAorICAgICAgICBBVk51bWJlck9mQ2hh
bm5lbHNLZXkgOiBAKDEpLAorICAgICAgICBBVlNhbXBsZVJhdGVLZXkgOiBAKDIyMDUwKQorICAg
IH07CisKKyAgICBtX2F1ZGlvSW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRl
cklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvIG91dHB1
dFNldHRpbmdzOmF1ZGlvU2V0dGluZ3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsKKyAgICBbbV9h
dWRpb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOworICAgIAorICAg
IGlmICghW21fd3JpdGVyIGNhbkFkZElucHV0Om1fYXVkaW9JbnB1dC5nZXQoKV0pIHsKKyAgICAg
ICAgbV9hdWRpb0lucHV0ID0gbnVsbHB0cjsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJ0aGUgYXVkaW8gaW5wdXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBB
VkFzc2V0V3JpdGVyIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgW21fd3Jp
dGVyIGFkZElucHV0Om1fYXVkaW9JbnB1dC5nZXQoKV07CisgICAgbV9hdWRpb1B1bGxRdWV1ZSA9
IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUF1ZGlvUmVjb3JkaW5nUHVsbEJ1ZmZlclF1
ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3Rh
dGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZmZXJX
aXRoQ3VycmVudFRpbWVTdGFtcChDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikKK3sK
KyAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1l
Q2xvY2soKSk7CisgICAgQ01JdGVtQ291bnQgY291bnQgPSAwOworICAgIENNU2FtcGxlQnVmZmVy
R2V0U2FtcGxlVGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCAwLCBuaWwsICZjb3VudCk7
CisgICAgCisgICAgVmVjdG9yPENNU2FtcGxlVGltaW5nSW5mbz4gdGltZUluZm8oY291bnQpOwor
ICAgIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVy
LCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAmY291bnQpOworICAgIAorICAgIGZvciAoQ01JdGVt
Q291bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIHRpbWVJbmZvW2ldLmRlY29k
ZVRpbWVTdGFtcCA9IGtDTVRpbWVJbnZhbGlkOworICAgICAgICB0aW1lSW5mb1tpXS5wcmVzZW50
YXRpb25UaW1lU3RhbXAgPSBzdGFydFRpbWU7CisgICAgfQorICAgIAorICAgIENNU2FtcGxlQnVm
ZmVyUmVmIG5ld0J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVm
ZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3JpZ2luYWxC
dWZmZXIsIGNvdW50LCB0aW1lSW5mby5kYXRhKCksICZuZXdCdWZmZXIpOworICAgIGlmIChlcnJv
cikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0Q0YobmV3QnVmZmVy
KTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kVmlkZW9TYW1w
bGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKQoreworICAgIEFTU0VSVCht
X3ZpZGVvSW5wdXQpOworICAgIGlmIChtX2lzU3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKSB7CisgICAgICAgIGlmICghW21fd3JpdGVyIHN0
YXJ0V3JpdGluZ10pIHsKKyAgICAgICAgICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIg
aW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAobG9uZylbbV93cml0ZXIgZXJy
b3JdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIg
c3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGlt
ZUNsb2NrKCkpXTsKKyAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7CisgICAgICAg
IFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7
CisgICAgICAgIFttX3ZpZGVvSW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6
bV92aWRlb1B1bGxRdWV1ZSB1c2luZ0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKV0geworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGlm
ICghW21fdmlkZW9JbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92
aWRlb0xvY2spOworICAgICAgICAgICAgICAgIGlmIChtX3ZpZGVvQnVmZmVyUG9vbC5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gbV92aWRlb0J1ZmZlclBvb2wudGFrZUZpcnN0KCk7CisgICAgICAgICAgICAgICAgbG9j
a2VyLnVubG9ja0Vhcmx5KCk7CisgICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGFw
cGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpOworICAgICAgICAgICAgaWYgKG1faXNTdG9w
cGVkICYmIG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFtt
X3ZpZGVvSW5wdXQgbWFya0FzRmluaXNoZWRdOworICAgICAgICAgICAgICAgIG1fZmluaXNoV3Jp
dGluZ1ZpZGVvU2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICAgICAgfQorICAgICAgICB9XTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGJ1ZmZlcldpdGhDdXJyZW50VGltZSA9
IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFtcChzYW1wbGVCdWZmZXIpOworICAg
IGlmICghYnVmZmVyV2l0aEN1cnJlbnRUaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2NrKTsKKyAgICBtX3ZpZGVvQnVmZmVyUG9vbC5h
cHBlbmQoV1RGTW92ZShidWZmZXJXaXRoQ3VycmVudFRpbWUpKTsKK30KKworc3RhdGljIGlubGlu
ZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNj
cmlwdGlvbihjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKK3sKKyAg
ICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRp
b24pOworICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0ID0gbnVsbHB0cjsKKyAgICBh
dXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24sIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXQp
OworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFk
b3B0Q0YoZm9ybWF0KTsKK30KKworc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZm
ZXJSZWY+IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhDTUZv
cm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdCwgc2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIENN
VGltZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygp
KTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBudWxscHRyOworICAgIGF1
dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9u
cyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgZm9ybWF0LCBz
YW1wbGVDb3VudCwgc3RhcnRUaW1lLCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoZXJy
b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdENGKHNhbXBsZUJ1
ZmZlcik7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZEF1ZGlv
U2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBzaXpl
X3Qgc2FtcGxlQ291bnQpCit7CisgICAgQVNTRVJUKG1fYXVkaW9JbnB1dCk7CisgICAgaWYgKCgh
bV9oYXNTdGFydGVkV3JpdGluZyAmJiBtX3ZpZGVvSW5wdXQpIHx8IG1faXNTdG9wcGVkKQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byBmb3JtYXQgPSBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0
aW9uKGRlc2NyaXB0aW9uKTsKKyAgICBpZiAoIWZvcm1hdCkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChtX2lzRmlyc3RBdWRpb1NhbXBsZSkgeworICAgICAgICBpZiAoIW1fdmlkZW9JbnB1dCkg
eworICAgICAgICAgICAgLy8gYXVkaW8tb25seSByZWNvcmRpbmcuCisgICAgICAgICAgICBpZiAo
IVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7CisgICAgICAgICAgICAgICAgbV9pc1N0b3BwZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01D
bG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOworICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGlu
ZyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSBmYWxz
ZTsKKyAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRU
aGlzID0gdGhpczsKKyAgICAgICAgW21fYXVkaW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJl
YWR5T25RdWV1ZTptX2F1ZGlvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAg
ICAgICAgICAgaWYgKCFbbV9hdWRpb0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2F1ZGlvTG9jayk7CisgICAgICAgICAgICAgICAgaWYgKG1fYXVkaW9CdWZmZXJQ
b29sLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsKKyAgICAgICAg
ICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKKyAgICAgICAgICAgICAgICBbbV9hdWRpb0lu
cHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOworICAgICAgICAgICAgfSB3aGls
ZSAodHJ1ZSk7CisgICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV9hdWRpb0J1ZmZlclBv
b2wuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBtYXJrQXNGaW5p
c2hlZF07CisgICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUuc2ln
bmFsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworICAgIH0KKworICAgIGF1dG8gc2Ft
cGxlQnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25z
KGZvcm1hdC5nZXQoKSwgc2FtcGxlQ291bnQpOworICAgIGlmICghc2FtcGxlQnVmZmVyKQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZl
ckZyb21BdWRpb0J1ZmZlckxpc3Qoc2FtcGxlQnVmZmVyLmdldCgpLCBrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxpc3Q+
KGRhdGEpLmxpc3QoKSk7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2NrKTsKKyAgICBtX2F1ZGlvQnVmZmVyUG9v
bC5hcHBlbmQoV1RGTW92ZShzYW1wbGVCdWZmZXIpKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCit7CisgICAgaWYgKG1faXNTdG9wcGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2lzU3RvcHBlZCA9IHRydWU7CisgICAgaWYgKCFtX2hh
c1N0YXJ0ZWRXcml0aW5nKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKFttX3dyaXRlciBz
dGF0dXNdID09IEFWQXNzZXRXcml0ZXJTdGF0dXNXcml0aW5nKTsKKyAgICBpZiAobV92aWRlb0lu
cHV0KQorICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZS53YWl0KCk7CisKKyAg
ICBpZiAobV9hdWRpb0lucHV0KQorICAgICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9y
ZS53YWl0KCk7CisKKyAgICBtX2lzU3RvcHBpbmcgPSB0cnVlOworICAgIFttX3dyaXRlciBmaW5p
c2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrUHRyID0gbWFrZVdlYWtQ
dHIoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3
ZWFrUHRyID0gV1RGTW92ZSh3ZWFrUHRyKSwgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV9wYXRoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICgh
d2Vha1B0cikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1faXNTdG9w
cGluZyA9IGZhbHNlOworICAgICAgICAgICAgaWYgKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRs
ZXIpCisgICAgICAgICAgICAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGJ1ZmZlcikpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fZGF0YSA9IFdU
Rk1vdmUoYnVmZmVyKTsKKworICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIG1faXNGaXJz
dEF1ZGlvU2FtcGxlID0gdHJ1ZTsKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIH0pOwor
ICAgICAgICBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgfV07CisgICAg
bV9maW5pc2hXcml0aW5nU2VtYXBob3JlLndhaXQoKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKG1faXNTdG9w
cGluZykgeworICAgICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJ1
ZmZlciA9IFdURk1vdmUobV9kYXRhKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1
ZmZlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc1ZDI5NjNlZjQ0NTFmZWY5
ZDc2NDBmZWMwZjA3MzJkMjM5MWQ5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlIDxDb3Jl
TWVkaWEvQ29yZU1lZGlhLmg+CisjaW5jbHVkZSA8VmlkZW9Ub29sQm94L1ZURXJyb3JzLmg+CisK
K3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsK
K3R5cGVkZWYgc3RydWN0IE9wYXF1ZVZUQ29tcHJlc3Npb25TZXNzaW9uKiAgVlRDb21wcmVzc2lv
blNlc3Npb25SZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4g
Y3JlYXRlKENNVmlkZW9Db2RlY1R5cGUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZv
aWQqIGNhbGxiYWNrT2JqZWN0KTsKKyAgICB+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7
CisKKyAgICB2b2lkIGZpbmlzaCgpOworICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxl
QnVmZmVyUmVmKTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIo
KTsKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZm
ZXIoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IoQ01WaWRlb0NvZGVjVHlwZSk7CisKKyAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1
ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworCisgICAgdm9pZCBwcm9j
ZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRDb21wcmVz
c2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmKTsKKworICAgIHN0YXRpYyB2
b2lkIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1
cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmKTsKKworICAgIGRpc3BhdGNo
X3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1
ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVlOworICAgIFJldGFpblB0cjxWVENvbXByZXNzaW9u
U2Vzc2lvblJlZj4gbV92dFNlc3Npb247CisKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNl
IH07CisKKyAgICBDTVZpZGVvQ29kZWNUeXBlIG1fb3V0cHV0Q29kZWNUeXBlOworICAgIGZsb2F0
IG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uIHsgMi4wIH07CisgICAgdW5zaWduZWQgbV9l
eHBlY3RlZEZyYW1lUmF0ZSB7IDMwIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDhmZTQz
Mjk1ZWY1MmE2NzkwZmYxZGVjYWNhNmYzMGQ5YmJiYWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0KQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbXBvcnQgIkxv
Z2dpbmcuaCIKKyNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25T
ZXNzaW9uLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworI2ltcG9ydCA8cGFsL2Nm
L1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBQQUw7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoQ01WaWRlb0NvZGVjVHlw
ZSBvdXRwdXRDb2RlY1R5cGUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ss
IHZvaWQqIGNhbGxiYWNrT2JqZWN0KQoreworICAgIGF1dG8gY29tcHJlc3NvciA9IHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+KG5ldyBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3Iob3V0cHV0Q29kZWNUeXBlKSk7CisgICAgaWYgKCFjb21wcmVzc29yLT5pbml0
aWFsaXplKGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBjb21wcmVzc29yOworfQorCitWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENv
ZGVjVHlwZSkKKyAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2Ny
ZWF0ZSgiY29tLmFwcGxlLlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FV
RVVFX1NFUklBTCkgfQorICAgICwgbV9vdXRwdXRDb2RlY1R5cGUgeyBvdXRwdXRDb2RlY1R5cGUg
fQoreworfQorCitWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IoKQoreworICAgIGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAgICAg
IGRpc3BhdGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKK30KKworYm9vbCBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJD
YWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgQ01CdWZmZXJR
dWV1ZVJlZiBvdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVy
UXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxi
YWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycygpLCAmb3V0cHV0QnVmZmVyUXVldWUpKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIHVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIHF1ZXVlICVkIiwgZXJyb3IpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fb3V0cHV0QnVmZmVyUXVldWUgPSBvdXRw
dXRCdWZmZXJRdWV1ZTsKKyAgICBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRC
dWZmZXJRdWV1ZS5nZXQoKSwgY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1
ZVRyaWdnZXJfV2hlbkRhdGFCZWNvbWVzUmVhZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKKworICAg
IG1faXNFbmNvZGluZyA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2goKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9z
ZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lv
blNlc3Npb25Db21wbGV0ZUZyYW1lcyhtX3Z0U2Vzc2lvbi5nZXQoKSwga0NNVGltZUludmFsaWQp
OworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1l
cyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVl
dWVNYXJrRW5kT2ZEYXRhKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpOworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CisKKyAgICAgICAgbV9pc0VuY29kaW5nID0gZmFsc2U7CisgICAgfSk7Cit9CisKK3ZvaWQg
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9p
ZCAqcmVmQ29uLCB2b2lkKiwgT1NTdGF0dXMgc3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01T
YW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKHN0YXR1
cywgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdmlkZW9Db21wcmVz
c2lvbkNhbGxiYWNrIHN0YXR1cyBpcyAlZCIsIHN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyAhPSBu
b0VycikKKyAgICAgICAgcmV0dXJuOworCisgICAgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
ICpjb21wcmVzc29yID0gc3RhdGljX2Nhc3Q8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4o
cmVmQ29uKTsKKworICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZShjb21wcmVz
c29yLT5tX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKK30KKworYm9v
bCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24oQ01W
aWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQoreworICAgIENNVmlk
ZW9EaW1lbnNpb25zIGRpbWVuc2lvbnMgPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1l
bnNpb25zKGZvcm1hdERlc2NyaXB0aW9uKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgTlNEaWN0
aW9uYXJ5ICplbmNvZGVyU3BlY2lmaWNhdGlvbnMgPSBuaWw7CisjZWxzZQorICAgIE5TRGljdGlv
bmFyeSAqZW5jb2RlclNwZWNpZmljYXRpb25zID0gQHsoX19icmlkZ2UgTlNTdHJpbmcgKilrVlRW
aWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0Vu
Y29kZXI6QFlFU307CisjZW5kaWYKKworICAgIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHZ0U2Vz
c2lvbjsKKyAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgZGltZW5zaW9ucy53aWR0aCwgZGltZW5zaW9ucy5oZWlnaHQsIG1fb3V0
cHV0Q29kZWNUeXBlLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWVuY29kZXJTcGVjaWZpY2F0
aW9ucywgTlVMTCwgTlVMTCwgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrLCB0aGlzLCAmdnRTZXNz
aW9uKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25D
cmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9
CisgICAgbV92dFNlc3Npb24gPSBhZG9wdENGKHZ0U2Vzc2lvbik7CisKKyAgICBlcnJvciA9IFZU
U2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3Bl
cnR5S2V5X1JlYWxUaW1lLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vz
c2lvblNldFByb3BlcnR5IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0
U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVy
dmFsRHVyYXRpb24sIChfX2JyaWRnZSBDRlR5cGVSZWYpQChtX21heEtleUZyYW1lSW50ZXJ2YWxE
dXJhdGlvbikpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwg
IlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21w
cmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNz
aW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCAo
X19icmlkZ2UgQ0ZUeXBlUmVmKUAobV9leHBlY3RlZEZyYW1lUmF0ZSkpOworICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVj
dGVkRnJhbWVSYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgLy8gRklYTUU6IFNl
dCB2aWRlbyBjb21wcmVzc2lvbiByYXRlLgorICAgIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Np
b25QcmVwYXJlVG9FbmNvZGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCkpOworICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKworICAgIHJldHVybiBZRVM7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1
ZmZlcikKK3sKKyAgICBpZiAoIW1fdnRTZXNzaW9uKSB7CisgICAgICAgIGlmICghaW5pdENvbXBy
ZXNzaW9uU2Vzc2lvbihDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKGJ1ZmZlcikp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBD
TVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKGJ1ZmZlcik7CisgICAgYXV0byBwcmVzZW50YXRp
b25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZm
ZXIpOworICAgIGF1dG8gZHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZl
cik7CisgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUobV92
dFNlc3Npb24uZ2V0KCksIGltYWdlQnVmZmVyLCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGR1cmF0
aW9uLCBOVUxMLCB0aGlzLCBOVUxMKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwg
TWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNl
c3Npb25FbmNvZGVGcmFtZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKK30KKwordm9pZCBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJl
ZiBidWZmZXIpCit7CisgICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57
CisgICAgICAgIGlmICghbV9pc0VuY29kaW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHByb2Nlc3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVC
dWZmZXJSZWYgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZm
ZXIoKQoreworICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+
KENNQnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisK
K1JldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Ojp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1w
bGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0
YWluKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworfQorCit9CisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388867</attachid>
            <date>2020-01-27 09:18:58 -0800</date>
            <delta_ts>2020-01-27 11:11:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206582-20200127181857.patch</filename>
            <type>text/plain</type>
            <size>140260</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI3NTQ3MzhkNTg1NWM2
YTE4MmQxYjFjNDE4NmZkNDE5MDk4Njg1NS4uMDU2MTEzOWFiODk2YmM2NTBmODJjMmUyOWRjODFi
OGI0ZDk1Mzc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTAxLTI3ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
YWxsb3dzIHRvIGdyYWIgcmVjb3JkZWQgZGF0YSB3aGVuZXZlciB3YW50ZWQuCisgICAgICAgIFRo
aXMgZGVsZWdhdGUgcmVxdWlyZXMgcGFzc2luZyBjb21wcmVzc2VkIHNhbXBsZXMgdG8gQVZBc3Nl
dFdyaXRlci4KKyAgICAgICAgSW1wbGVtZW50IHZpZGVvIGVuY29kaW5nIGFuZCBhdWRpbyBlbmNv
ZGluZyBpbiBkZWRpY2F0ZWQgY2xhc3NlcyBhbmQgdXNlIHRoZXNlIGNsYXNzZXMgYmVmb3JlIGFk
ZGluZyBidWZmZXJzIHRvIEFWQXNzZXRXcml0ZXIuCisgICAgICAgIFNpbmNlIEFWQXNzZXRXcml0
ZXJEZWxlZ2F0ZSBpcyBBcHBsZSBTREsgb25seSwga2VlcCB0aGUgZXhpc3RpbmcgZmlsZSBiYXNl
ZCBpbXBsZW1lbnRhdGlvbiBhcyBhIGZhbGxiYWNrLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVBy
b2MpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0
QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVk
aW9Gb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0
aE51bVBhY2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1P
dXRwdXRQYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1w
bGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojpwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRp
b1NhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2Ft
cGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1w
bGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKToKKwogMjAyMC0wMS0yNiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBET01DYWNoZUVu
Z2luZTo6ZXJyb3JUb0V4Y2VwdGlvbiBiYWNrIG91dCBvZiBoZWFkZXIgYW5kIGludG8gLmNwcCBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4MTg1NDgzMjI2ZjVjYzFlNjVjZjRkYjg4NWM5NTlk
MzQyZTNjZmYxLi43MzAzZmQzODY1MGQyNDFhZmUxOWM4ODhhM2I0NzdiNGEyM2U2NWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wMS0yNyAgeW91ZW5uIGZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRl
ckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIHNvZnQgbGluayBtYWNyb3MgZm9yIFZpZGVv
VG9vbGJveCBhbmQgQXVkaW9Ub29sYm94LgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcDog
QWRkZWQuCisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmg6IEFkZGVkLgor
ICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHA6CisgICAgICAgICogcGFsL2Nm
L0NvcmVNZWRpYVNvZnRMaW5rLmg6CisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRM
aW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg6
IEFkZGVkLgorCiAyMDIwLTAxLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgc29tZSB1bm5lZWRlZCBkZWZpbml0aW9ucyBmcm9tIFBsYXRmb3JtLmgg
ZmFtaWx5IGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjljYjIzYmZlM2ExMGNhZDUyMjZkMzFiYjg4OTY4
ZmFiNTRhYWFmNS4uNTFjYjk2MjgzMzY1MmQ1YWNmMTEzYjk4Y2IzYWFkMDZlZGRmYzBlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMS0yNyAgeW91ZW5uIGZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRl
IHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24uCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgVXNlIG5ldyBjb25zdHJ1Y3Rvci4KKwogMjAyMC0wMS0yNiAgRnVqaWkgSGlyb25vcmkg
IDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dW2N1cmxdIEFT
U0VSVElPTiBGQUlMRUQ6IHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpIGluIE5ldHdvcmtQcm9jZXNzIHNpbmNlIHIyNTUwNjcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNDE5YWM5OGI0ZDE5
MmM5ZjM2MWRiMTk3NzNmMmI2ZmI4ZTBjOWNhLi4zZjgxNDZhZDE1NWFmY2MwODU4ZDY4YjNkMjc0
ZTM5MmUwZmY0N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMTUsNiArMTE1LDEwIEBACiAJCTJFMTM0MkNDMjE1QUExMEEw
MDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTEzNDJDQTIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGlu
ay5oICovOyB9OwogCQkyRTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNC
MjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLm1tICovOyB9OwogCQkzMTMwOEIxNDIw
QTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzMDhCMTMyMEEyMTcwNTAwM0ZCOTI5IC8qIFN5
c3RlbVByZXZpZXdTUEkuaCAqLzsgfTsKKwkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1
ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0
TGluay5jcHAgKi87IH07CisJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xi
b3hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE2RTk5NTIyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi87
IH07CisJCTQxNkU5OTU3MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1
NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovOyB9OworCQk0
MTZFOTk1ODIzREFFRkY4MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU2MjNEQUVGRjcw
MEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5oICovOyB9OwogCQk0NDI5NTZDRDIxOEE3
MkRGMDA4MERCNTQgLyogUmV2ZWFsU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2ZWFsU1BJLmgg
Ki87IH07CiAJCTQ0NTBGQzlGMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlE
MjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLzsgfTsKIAkJNDQ1MEZD
QTAyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYg
LyogUXVpY2tMb29rU29mdExpbmsuaCAqLzsgfTsKQEAgLTI5MSw2ICsyOTUsMTAgQEAKIAkJMkUx
MzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVSUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMTMwOEIxMzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmll
d1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1QcmV2aWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM3MTE5QTc4MjBDQ0I1RkYwMDJDNkRDOSAvKiBXZWJLaXRUYXJnZXRD
b25kaXRpb25hbHMueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViS2l0VGFyZ2V0Q29uZGl0aW9u
YWxzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1MTIzREFF
NkJEMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29s
Ym94U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Ub29s
Ym94U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2RTk5NTUyM0RB
RUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9v
bGJveFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVG9v
bGJveFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Mjk1NkNDMjE4
QTcyREUwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmV2ZWFsU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlE
MjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFF1aWNrTG9va1NvZnRMaW5rLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29r
U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tMb29rU29m
dExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNCw4ICs1MzIsMTIgQEAK
IAkJMENGOTlDQTUxRjczODQxQzAwN0VFNzkzIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyogQXVk
aW9Ub29sYm94U29mdExpbmsuY3BwICovLAorCQkJCTQxNkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAv
KiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oICovLAogCQkJCTBDRjk5Q0E2MUY3Mzg0MzYwMDdFRTc5
MyAvKiBDb3JlTWVkaWFTb2Z0TGluay5jcHAgKi8sCiAJCQkJMENGOTlDQTcxRjczODQzNzAwN0VF
NzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmggKi8sCisJCQkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3
MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCAqLywKKwkJCQk0MTZFOTk1NjIzREFFRkY3
MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
Y2Y7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzE1LDYgKzcyNyw3IEBACiAJCQlm
aWxlcyA9ICgKIAkJCQk1N0ZEMzE4QjIyQjM1OTg5MDA4RDBFOEIgLyogQXBwU1NPU29mdExpbmsu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3NkNBOUQ2MjJCODU0QUIwMDMwMTQzQyAvKiBBcHBTU09T
UEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRp
b1Rvb2xib3hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwMkU5M0MyMDU2RkFBNzAw
QTEzNzk3IC8qIEF1ZGlvVG9vbGJveFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTEwNzgy
MkI0NTZGNTAwRjQxMEM4IC8qIEF1dGhLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3N0U4
N0IyMjI2QTQ2MDMwMEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMg
Ki8sCkBAIC04MzgsNiArODUxLDcgQEAKIAkJCQkyRTEzNDJDQzIxNUFBMTBBMDA3MTk5RDIgLyog
VUlLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MjIxRjQzQTRDNzAwMkVB
QzAyIC8qIFVJS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE0NzFGM0JFQjQ5MDBE
QkMzMTcgLyogVVJMRm9ybWF0dGluZ1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTk5NTgy
M0RBRUZGODAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwQzJEQTE1OTFGM0JFQjQ5MDBEQkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTA4MjZGOTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKQEAgLTkzMCw2ICs5NDQsNyBAQAogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThBMjJCMzU5M0Uw
MDhEMEU4QiAvKiBBcHBTU09Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNkU5OTUz
MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzdFODdCMTIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwQzVGRkYwRjFGNzhEOURBMDA5RUZGMUEgLyogQ2xvY2tD
TS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBDRjk5Q0E4MUY3Mzg0MzcwMDdFRTc5MyAvKiBDb3Jl
TWVkaWFTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk1Niw2ICs5NzEsNyBAQAogCQkJ
CUEzQUI2RTU3MUYzRDFEREIwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExp
c3RlbmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUxMzQyQ0QyMTVBQTEwQTAwNzE5OUQy
IC8qIFVJS2l0U29mdExpbmsubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTZFOTk1NzIzREFFRkY4
MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTEwODI2RkExRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjZjU1MDU2YWNkYTZmNTY1M2FkYzdlMTdlYzAyYTJkODI2ZTQ0N2YKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5r
LmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9D
b252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQuaD4KKworI2lu
Y2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VS
Q0UoUEFMLCBBdWRpb1Rvb2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgQXVkaW9Ub29sYm94LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlv
Rm9ybWF0UHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNv
bnN0IHZvaWQqIGluU3BlY2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCog
b3V0UHJvcGVydHlEYXRhKSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNp
ZmllciwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBP
U1N0YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3Jt
YXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1h
dCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0
LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJTZXRQcm9w
ZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRp
b0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5Qcm9wZXJ0eURhdGFT
aXplLCBjb25zdCB2b2lkKiBpblByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblBy
b3BlcnR5SUQsIGluUHJvcGVydHlEYXRhU2l6ZSwgaW5Qcm9wZXJ0eURhdGEpKQorU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0
UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwg
QXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5
RGF0YVNpemUsIHZvaWQqIG91dFByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblBy
b3BlcnR5SUQsIGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKworI2VuZGlm
IC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1
ZGlvVG9vbGJveFNvZnRMaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDczMTE4NzE3NGFjMTU1NDQzNzFkZWUw
M2IxNDMyZTNlNjU2MzJlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0
Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBB
dWRpb1Rvb2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9U
b29sYm94LCBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVy
dGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3Bl
cnR5SUQsIFVJbnQzMiogaW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEp
LCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9wZXJ0eUlELCBpb1Byb3BlcnR5RGF0YVNpemUsIG91
dFByb3BlcnR5RGF0YSkpCisjZGVmaW5lIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkgc29mdExp
bmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NT
dGF0dXMsIChjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0
LCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQs
IEF1ZGlvQ29udmVydGVyUmVmKiBvdXRBdWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwg
aW5EZXN0aW5hdGlvbkZvcm1hdCwgb3V0QXVkaW9Db252ZXJ0ZXIpKQorI2RlZmluZSBBdWRpb0Nv
bnZlcnRlck5ldyBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJOZXcKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRl
clNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0
ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblByb3Bl
cnR5RGF0YVNpemUsIGNvbnN0IHZvaWQqIGluUHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0
ZXIsIGluUHJvcGVydHlJRCwgaW5Qcm9wZXJ0eURhdGFTaXplLCBpblByb3BlcnR5RGF0YSkpCisj
ZGVmaW5lIEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1
ZGlvQ29udmVydGVyU2V0UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQXVkaW9Ub29sYm94LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlv
Rm9ybWF0UHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNv
bnN0IHZvaWQqIGluU3BlY2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCog
b3V0UHJvcGVydHlEYXRhKSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNp
ZmllciwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorI2RlZmluZSBBdWRp
b0Zvcm1hdEdldFByb3BlcnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0Zvcm1hdEdldFBy
b3BlcnR5CisKKworI2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCmluZGV4IDJiODIzMTM2NWNiOWFh
ZjkzNTk3ZjE4N2ZhMjJjMTQ5YmU0MmZiM2EuLmRjOGFiNDFjYmM3OGJhMTljZWNkZGE3ZmNmYTcw
ZDkzNTA5M2MyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlh
U29mdExpbmsuY3BwCkBAIC00Niw2ICs0Niw3IEBAIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSkKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXR1cywgKENNQmxv
Y2tCdWZmZXJSZWYgdGhlU291cmNlQnVmZmVyLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCwgdm9pZCogZGVzdGluYXRpb24pLCAodGhlU291cmNlQnVmZmVyLCBvZmZzZXRU
b0RhdGEsIGRhdGFMZW5ndGgsIGRlc3RpbmF0aW9uKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aCwgc2l6ZV90
LCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVCdWZmZXIpLCAodGhlQnVmZmVyKSkKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyUmVwbGFjZURh
dGFCeXRlcywgT1NTdGF0dXMsIChjb25zdCB2b2lkKiBzb3VyY2VCeXRlcywgQ01CbG9ja0J1ZmZl
clJlZiBkZXN0aW5hdGlvbkJ1ZmZlciwgc2l6ZV90IG9mZnNldEludG9EZXN0aW5hdGlvbiwgc2l6
ZV90IGRhdGFMZW5ndGgpLCAoc291cmNlQnl0ZXMsIGRlc3RpbmF0aW9uQnVmZmVyLCBvZmZzZXRJ
bnRvRGVzdGluYXRpb24sIGRhdGFMZW5ndGgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRp
Y3Rpb25hcnlSZWYsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJH
ZXRUeXBlSUQsIENGVHlwZUlELCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciwgQ01CbG9j
a0J1ZmZlclJlZiwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCkBAIC0xMzYsNiAr
MTM3LDcgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENN
QnVmZmVyUXVldWVHZXRCdWZmZXJDb3VudCwgQ01JdGUKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25U
aW1lU3RhbXAsIENNVGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVH
ZXRFbmRQcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVl
dWUpLCAocXVldWUpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVk
aWEsIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0
YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJh
Y2sgdHJpZ2dlckNhbGxiYWNrLCB2b2lkKiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJp
Z2dlckNvbmRpdGlvbiB0cmlnZ2VyQ29uZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNo
b2xkLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUs
IHRyaWdnZXJDYWxsYmFjaywgdHJpZ2dlclJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dl
clRocmVzaG9sZCwgdHJpZ2dlclRva2VuT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSwgT1NTdGF0dXMs
IChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKIAogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3RE
aXNwbGF5LCBDRlN0cmluZ1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X05vdFN5bmMsIENGU3RyaW5nUmVmKQpA
QCAtMTYzLDYgKzE2NSw5IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tlCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVm
ZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdCwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVm
LCBDRkFsbG9jYXRvclJlZiBiYnVmU3RydWN0QWxsb2NhdG9yLCBDRkFsbG9jYXRvclJlZiBiYnVm
TWVtb3J5QWxsb2NhdG9yLCB1aW50MzJfdCBmbGFncywgY29uc3QgQXVkaW9CdWZmZXJMaXN0ICpi
dWZmZXJMaXN0KSwgKHNidWYsIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIGJidWZNZW1vcnlBbGxvY2F0
b3IsIGZsYWdzLCBidWZmZXJMaXN0KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlclNldERhdGFSZWFkeSwgT1NTdGF0dXMsIChDTVNh
bXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSwgT1NTdGF0
dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiogYXNiZCwgc2l6ZV90IGxheW91dFNpemUsIGNvbnN0IEF1ZGlvQ2hhbm5lbExheW91
dCogbGF5b3V0LCBzaXplX3QgbWFnaWNDb29raWVTaXplLCBjb25zdCB2b2lkKiBtYWdpY0Nvb2tp
ZSwgQ0ZEaWN0aW9uYXJ5UmVmIGV4dGVuc2lvbnMsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJl
Ziogb3V0RGVzYyksIChhbGxvY2F0b3IsIGFzYmQsIGxheW91dFNpemUsIGxheW91dCwgbWFnaWND
b29raWVTaXplLCBtYWdpY0Nvb2tpZSwgZXh0ZW5zaW9ucywgb3V0RGVzYykpCitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0
aW9uR2V0TWFnaWNDb29raWUsIGNvbnN0IHZvaWQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9u
UmVmIGRlc2MsIHNpemVfdCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRp
b25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICos
IChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKKwogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRIb3N0VGltZUNs
b2NrLCBDTUNsb2NrUmVmLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRUaW1lLCBDTVRpbWUsIChDTUNsb2NrUmVmIGNs
b2NrKSwgKGNsb2NrKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1l
ZGlhLCBDTVNhbXBsZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlLCBPU1N0YXR1cywgKENNU2FtcGxl
QnVmZmVyUmVmIHNidWYsIE9TU3RhdHVzICgqIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBj
YWxsYmFjaykoIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgQ01JdGVtQ291bnQgaW5k
ZXgsIHZvaWQgKnJlZmNvbiksIHZvaWQgKnJlZmNvbiksIChzYnVmLCBjYWxsYmFjaywgcmVmY29u
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExp
bmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRl
eCAyNjhkMTY3ZjI3ZDZkM2FiYmZmNTkzNTI2N2ZjMjIyMzkxMDEwZTNkLi5hMGM3MzI5MjYyZTBi
MDZjYmI2YzM2ZDgyODQyZjJmZDZmMWY4NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCkBAIC00OSw2ICs0OSw4IEBAIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRl
cywgT1NTdGF0CiAjZGVmaW5lIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIHNvZnRMaW5rX0Nv
cmVNZWRpYV9DTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXpl
X3QsIChDTUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciksICh0aGVCdWZmZXIpKQogI2RlZmluZSBD
TUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZl
ckdldERhdGFMZW5ndGgKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcywgT1NTdGF0dXMsIChjb25zdCB2b2lk
KiBzb3VyY2VCeXRlcywgQ01CbG9ja0J1ZmZlclJlZiBkZXN0aW5hdGlvbkJ1ZmZlciwgc2l6ZV90
IG9mZnNldEludG9EZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5ndGgpLCAoc291cmNlQnl0ZXMs
IGRlc3RpbmF0aW9uQnVmZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRpb24sIGRhdGFMZW5ndGgpKQor
I2RlZmluZSBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyBzb2Z0TGlua19Db3JlTWVkaWFf
Q01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZE
aWN0aW9uYXJ5UmVmLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQogI2Rl
ZmluZSBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucyBzb2Z0TGlua19Db3JlTWVkaWFf
Q01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQs
ICh2b2lkKSwgKCkpCkBAIC0yMjcsNiArMjI5LDggQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRFbmRQcmVzZW50YXRpb25UaW0K
ICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcAogU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJ
bnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVl
dWVSZWYgcXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNr
LCB2b2lkKiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmln
Z2VyQ29uZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVl
VHJpZ2dlclRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywg
dHJpZ2dlclJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dl
clRva2VuT3V0KSkKICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVn
ZXJUaHJlc2hvbGQgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dl
cldpdGhJbnRlZ2VyVGhyZXNob2xkCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUws
IENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZm
ZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVNYXJrRW5k
T2ZEYXRhIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YQogCiBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0
YWNobWVudEtleV9Eb05vdERpc3BsYXksIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVB
dHRhY2htZW50S2V5X0RvTm90RGlzcGxheSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1l
bnRLZXlfRG9Ob3REaXNwbGF5KCkKQEAgLTI1Niw2ICsyNjAsOSBAQCBTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGlt
ZUp1bXBlZAogI2RlZmluZSBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkIGdldF9D
b3JlTWVkaWFfa0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCgpCiBTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQ29uc3Vt
ZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQsIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01T
YW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCBnZXRfQ29yZU1l
ZGlhX2tDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkKCkK
KworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9G
b3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llLCBjb25zdCB2b2lkKiwgKENNQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvblJlZiBkZXNjLCBzaXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCkp
CisjZGVmaW5lIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZQogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24sIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiAqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykp
CiAjZGVmaW5lIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRp
b24gc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJh
c2ljRGVzY3JpcHRpb24KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrLCBPU1N0YXR1cywgKENGQWxs
b2NhdG9yUmVmIHN0cnVjdHVyZUFsbG9jYXRvciwgdm9pZCogbWVtb3J5QmxvY2ssIHNpemVfdCBi
bG9ja0xlbmd0aCwgQ0ZBbGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tC
dWZmZXJDdXN0b21CbG9ja1NvdXJjZSogY3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRU
b0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxv
Y2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgbWVtb3J5
QmxvY2ssIGJsb2NrTGVuZ3RoLCBibG9ja0FsbG9jYXRvciwgY3VzdG9tQmxvY2tTb3VyY2UsIG9m
ZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSkKQEAgLTI2NCw2
ICsyNzEsOCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZl
ckdldEF1ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyIHNvZnRMaW5rX0NvcmVN
ZWRpYV9DTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVm
ZmVyCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1w
bGVCdWZmZXJHZXROdW1TYW1wbGVzLCBDTUl0ZW1Db3VudCwgKENNU2FtcGxlQnVmZmVyUmVmIHNi
dWYpLCAoc2J1ZikpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcyBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzCitTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0
UmljaGVzdERlY29kYWJsZUZvcm1hdCwgY29uc3QgQXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01B
dWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCisjZGVmaW5lIENNQXVkaW9G
b3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQgc29mdExpbmtfQ29yZU1l
ZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQKIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZl
ckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxv
Y2F0b3IsIENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENGUmFuZ2Ugc2FtcGxlUmFuZ2UsIENNU2Ft
cGxlQnVmZmVyUmVmKiBzQnVmT3V0KSwgKGFsbG9jYXRvciwgc2J1Ziwgc2FtcGxlUmFuZ2UsIHNC
dWZPdXQpKQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZSBz
b2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2UK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1
ZmZlckdldFNhbXBsZVNpemVBcnJheSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVm
LCBDTUl0ZW1Db3VudCBzaXplQXJyYXlFbnRyaWVzLCBzaXplX3QqIHNpemVBcnJheU91dCwgQ01J
dGVtQ291bnQqIHNpemVBcnJheUVudHJpZXNOZWVkZWRPdXQpLCAoc2J1Ziwgc2l6ZUFycmF5RW50
cmllcywgc2l6ZUFycmF5T3V0LCBzaXplQXJyYXlFbnRyaWVzTmVlZGVkT3V0KSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2ZlNjkzY2E5ZTQxZmQ4NTk3YTgyYjdjNzk2NjAxYjhhNzBjYWE0OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsu
Y3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJl
c3Npb25TZXNzaW9uLmg+CisKKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9M
SU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94KQorCitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Np
b25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBpbnQzMl90IHdp
ZHRoLCBpbnQzMl90IGhlaWdodCwgQ01WaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUsIENGRGljdGlv
bmFyeVJlZiBlbmNvZGVyU3BlY2lmaWNhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUltYWdl
QnVmZmVyQXR0cmlidXRlcywgQ0ZBbGxvY2F0b3JSZWYgY29tcHJlc3NlZERhdGFBbGxvY2F0b3Is
IFZUQ29tcHJlc3Npb25PdXRwdXRDYWxsYmFjayBvdXRwdXRDYWxsYmFjaywgdm9pZCogb3V0cHV0
Q2FsbGJhY2tSZWZDb24sIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmKiBjb21wcmVzc2lvblNlc3Np
b25PdXQpLCAoYWxsb2NhdG9yLCB3aWR0aCwgaGVpZ2h0LCBjb2RlY1R5cGUsIGVuY29kZXJTcGVj
aWZpY2F0aW9uLCBzb3VyY2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMsIGNvbXByZXNzZWREYXRhQWxs
b2NhdG9yLCBvdXRwdXRDYWxsYmFjaywgb3V0cHV0Q2FsbGJhY2tSZWZDb24sIGNvbXByZXNzaW9u
U2Vzc2lvbk91dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9v
bGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENv
bXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRh
dGlvblRpbWVTdGFtcCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0
YW1wKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBW
VENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25T
ZXNzaW9uUmVmIHNlc3Npb24sIENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGltZSBw
cmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBkdXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIGZy
YW1lUHJvcGVydGllcywgdm9pZCogc291cmNlRnJhbWVSZWZjb24sIFZURW5jb2RlSW5mb0ZsYWdz
KiBpbmZvRmxhZ3NPdXQpLCAoc2Vzc2lvbiwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVT
dGFtcCwgZHVyYXRpb24sIGZyYW1lUHJvcGVydGllcywgc291cmNlRnJhbWVSZWZjb24sIGluZm9G
bGFnc091dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJv
eCwgVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAo
VlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKworI2VuZGlmIC8v
IFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Nm
L1ZpZGVvVG9vbGJveFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVv
VG9vbGJveFNvZnRMaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjUwODM4YTNhZmRlZDJlZDdkNmY4ZTM0OGZm
ZGY2ZGQxMTUxYmM0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y2YvVmlkZW9Ub29sYm94U29mdExpbmsuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9T
b2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBWaWRl
b1Rvb2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29s
Ym94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJl
ZiBhbGxvY2F0b3IsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVvQ29kZWNU
eXBlIGNvZGVjVHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBDRkRp
Y3Rpb25hcnlSZWYgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRvclJlZiBj
b21wcmVzc2VkRGF0YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNrIG91dHB1
dENhbGxiYWNrLCB2b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lvblNlc3Np
b25SZWYqIGNvbXByZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBoZWlnaHQs
IGNvZGVjVHlwZSwgZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVyQXR0cmli
dXRlcywgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRwdXRDYWxs
YmFja1JlZkNvbiwgY29tcHJlc3Npb25TZXNzaW9uT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lv
blNlc3Npb25DcmVhdGUgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9u
Q3JlYXRlCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwg
VlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNz
aW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRp
bWVTdGFtcCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkK
KyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBzb2Z0TGlua19WaWRl
b1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcworU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9u
RW5jb2RlRnJhbWUsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwg
Q1ZJbWFnZUJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFt
cCwgQ01UaW1lIGR1cmF0aW9uLCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lk
KiBzb3VyY2VGcmFtZVJlZmNvbiwgVlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChz
ZXNzaW9uLCBpbWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJh
bWVQcm9wZXJ0aWVzLCBzb3VyY2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKKyNkZWZpbmUg
VlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRD
b21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2Rl
RnJhbWVzLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vz
c2lvbikpCisjZGVmaW5lIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVz
IHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29k
ZUZyYW1lcworCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZDJhMzEzODI1YTVk
ZjNlYWI2MTM3ZDExNmIxMzgxYmMyNjNlOWI1Li44ZjdjZDA3OTgzNWFlYTZkN2Y0YzYxNzY5YzNj
ZWQ1NTczYWFhMTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMDk3LDYgKzEwOTcsNyBAQAogCQk0MTZFNkZFODFCQkQxMkRG
MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2
NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYw
NDMgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxl
U3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWls
dGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIw
M0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTZGNzk5MDIzRDc1
MENGMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2Rjc5OEYyM0Q3NTBDQjAwODI5
RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLzsgfTsKIAkJNDE3MjUzQUIx
MzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEg
LyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKIAkJNDE3NjEyQUYxRTNBOTk0MDAwQzNE
ODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUIxRTNBOTkzQjAwQzNEODFEIC8qIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQuY3BwICovOyB9OwogCQk0MTc2MTJCMDFFM0E5OTQwMDBDM0Q4MUQg
LyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUMxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQuaCAqLzsgfTsKQEAgLTExMzcsNiArMTEzOCw3IEBACiAJCTQxQjg3NzYyMjNE
RTEwNDUwMDM2MzhCOCAvKiBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCODc3NjAyM0RFMTA0MjAw
MzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFCRjIwNDkyMkJBN0JFODAwMDRG
ODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkYyMDQwMjJCOTQ3MTYwMDA0RjgxMiAvKiBSZWFsdGltZVZp
ZGVvU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBD
MTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk0MUNENkY4QzIzRDZFODIxMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSAqLzsgfTsKIAkJNDFEMDE1Q0EwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRU
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQw
MTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUQxMjlDRTFGM0QwRUY2MDBEMTVFNDcg
LyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkIyNzhEMUYzNEMyODIwMDc5NTQ4NyAvKiBXb3JrZXJHbG9i
YWxTY29wZUNhY2hlcy5oICovOyB9OwogCQk0MUQxMjlEMDFGM0QwRjA1MDBEMTVFNDcgLyogQ2Fj
aGVRdWVyeU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRkIyNzlCMUYzNENFRjAwMDc5NTQ4NyAvKiBDYWNoZVF1ZXJ5T3B0aW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NDE4LDYg
Kzc0MjAsOSBAQAogCQk0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZv
cm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTG9hZElu
Zm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUwQjM3MjA5QkMz
QzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRmV0Y2hJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTZGNzk5MzIzRDhCNjlDMDA4MjlGQzEgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YUZpbGVCYXNlZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxNzBBMkU5MUQ4QzBDQzAwMDMxODQ1MiAvKiBKU0RPTVdyYXBwZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01XcmFwcGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MjUzQTgxMzU0QkJCQzAwMzYwRjJB
IC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTI1LDYgKzc1MzAsOCBAQAogCQk0
MUM3RTEwNTFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEw
NjFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDgxRTZBQTM3QzAwMjdC
NERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxQ0Q2Rjg5MjNENkU4MUMwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
Q0Q2RjhCMjNENkU4MUQwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQ0Y4QkU0MUQ0
NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25z
dW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQwMTVDODBGNEI1QzcxMDA0QTY2
MkYgLyogQ29udGVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
dGVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MDE3LDggKzE5MDI0
LDEzIEBACiAJCTREM0MwNUQ0MjFBRjQ4MDkwMEYyODkwQSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDE2Rjc5OEQyM0Q3NTBDQTAwODI5
RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovLAorCQkJCTQxNkY3OThGMjNE
NzUwQ0IwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8sCiAJCQkJ
NEQ3M0Y5NEMyMThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaCAqLywKIAkJCQk0RDczRjk0RDIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbSAqLywKKwkJCQk0MTZGNzk5MzIzRDhCNjlDMDA4MjlGQzEgLyog
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbSAqLywKKwkJCQk0MUNE
NkY4OTIzRDZFODFDMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8s
CisJCQkJNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMzA5MDksNyArMzA5MjEsNiBAQAogCQkJCTdDMTkzQzAxMUY1RTExMDUwMDg4
RjNFNiAvKiBKU0ltYWdlU21vb3RoaW5nUXVhbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg2
NjI5RDMwOURBMkI0ODAwOTYzM0E2IC8qIEpTSW5wdXRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTE3NUNFNUUyMUUyODFFRDAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUI4Nzc2MjIzREUxMDQ1MDAzNjM4Qjgg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkx
NzVDRTVDMjFFMjgxRUQwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MTA5RTlDODIyMkNBQkNBMDBCQjYyNjUgLyogSlNJbnNwZWN0b3JB
dWRpdFJlc291cmNlc09iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EwRTc3MUYxMEMwMERC
MTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLywKQEAg
LTMxOTk3LDYgKzMyMDA4LDcgQEAKIAkJCQk0QTRGNjU3MjFBQTk5N0YxMDBFMzhDREQgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEEwRkZB
QTIxQUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3NTRBNUVBMjE1RUEzQjgwMDJEM0E5OSAvKiBSZWFsdGltZU1lZGlhU291
cmNlRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFCODc3NjIyM0RFMTA0NTAwMzYzOEI4
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
QTRGNjU3NDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEw
M0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4g
SGVhZGVycyAqLywKQEAgLTMzNjc0LDYgKzMzNjg2LDcgQEAKIAkJCQlBOTc4N0NCNDFGNUY1QzY2
MDBDNTUxQzYgLyogQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNENTU5NjkxMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVS
ZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE2Rjc5OTAyM0Q3NTBDRjAwODI5RkMx
IC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNE
QTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBEODE3MTVEMkEyMDA2NThEOTggLyog
QXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM0NDA2LDYgKzM0NDE5LDcgQEAKIAkJ
CQk3QzczRkIwNzE5MUVGNDE3MDA3REUwNjEgLyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFj
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzRkJDNEFGMzE4OTg4MTU2MDA0NkVFMzggLyogVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MkQ1QTE4
RjFDNTQ1OTIzMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTQxQ0Q2RjhDMjNENkU4MjEwMEIxNjQyMSAvKiBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBERTE3MTVEMkEy
MDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBFMTE3
MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0QzMzZGNjcxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCmluZGV4IGZhOGVlMGIxMDBj
ZjIxNDA4NTY1MDUxNmJjNGUyM2ExZGIxNWJmMzUuLmZjMjkwOGNlYmUzZDc0ZTVmMTUxMDRhNWQ3
ODIzMGNiZjllZDUzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQpAQCAtOTUsNiArOTUs
NyBAQCBib29sIEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OnNldFNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJJT1N1cmZh
Y2VQcm9wZXJ0aWVzS2V5IDogQHsgLyplbXB0eSBkaWN0aW9uYXJ5Ki8gfSwKICAgICB9OwogCisK
ICAgICBOU0RpY3Rpb25hcnkqIHBpeGVsQnVmZmVyUG9vbE9wdGlvbnMgPSBAewogICAgICAgICAo
X19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBvb2xNaW5pbXVtQnVmZmVyQ291bnRL
ZXk6IEAoNikKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3Bw
CmluZGV4IDczZjFkMGExNTE5ZjJjMDNiOTFkNjk1MTA1MTM1YTRmMjBkMWRhNjQuLmQ0NzkzNDg4
Mzg2MTkxN2Y2YjM2MGVmMTRkZDgyYzFlMzUzYjJhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCiAjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUg
Ik1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBs
ZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgpAQCAtNjgsNyArNjksMTQgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbD4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIGF1dG8gd3JpdGVyID0gTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShhdWRpb1RyYWNrLCB2aWRlb1RyYWNrKTsKKwor
ICAgIGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CisgICAgaWYgKHZpZGVvVHJhY2spIHsKKyAg
ICAgICAgYXV0byYgc2V0dGluZ3MgPSB2aWRlb1RyYWNrLT5zZXR0aW5ncygpOworICAgICAgICB3
aWR0aCA9IHNldHRpbmdzLndpZHRoKCk7CisgICAgICAgIGhlaWdodCA9IHNldHRpbmdzLmhlaWdo
dCgpOworICAgIH0KKyAgICBhdXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpjcmVhdGUoISFhdWRpb1RyYWNrLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBpZiAoIXdyaXRlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0N2JmODFlMWQ0NTZjNzBjMmQ5NDRmNzA0
NWE4ZTE2ZTA1OWJjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBAIC0w
LDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0IDxDb3JlTWVkaWEvQ29y
ZU1lZGlhLmg+CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBs
ZUJ1ZmZlclJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUF1ZGlvQ29udmVydGVyKiBBdWRpb0Nv
bnZlcnRlclJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBj
cmVhdGUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3Qp
OworICAgIH5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKworICAgIHZvaWQgZmluaXNo
KCk7CisgICAgdm9pZCBhZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOworICAgIENN
U2FtcGxlQnVmZmVyUmVmIGdldE91dHB1dFNhbXBsZUJ1ZmZlcigpOworICAgIFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gdGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOworCitwcml2YXRlOgor
ICAgIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpOworICAgIGJvb2wgaW5pdGlhbGl6ZShD
TUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7CisKKyAg
ICBzdGF0aWMgT1NTdGF0dXMgYXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYyhBdWRp
b0NvbnZlcnRlclJlZiwgVUludDMyKiwgQXVkaW9CdWZmZXJMaXN0KiwgQXVkaW9TdHJlYW1QYWNr
ZXREZXNjcmlwdGlvbioqLCB2b2lkKik7CisKKyAgICB2b2lkIHByb2Nlc3NTYW1wbGVCdWZmZXIo
Q01TYW1wbGVCdWZmZXJSZWYpOworICAgIGJvb2wgaW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNl
Rm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiwgQXVkaW9Gb3JtYXRJRCk7
CisgICAgc2l6ZV90IGNvbXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQoQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uLCBVSW50MzIsIEZsb2F0MzIpOworICAgIHZvaWQgYXR0YWNoUHJpbWlu
Z1RyaW1zSWZOZWVkZWQoQ01TYW1wbGVCdWZmZXJSZWYpOworICAgIFJldGFpblB0cjxOU051bWJl
cj4gZ3JhZHVhbERlY29kZXJSZWZyZXNoQ291bnQoKTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBz
YW1wbGVCdWZmZXJXaXRoTnVtUGFja2V0cyhVSW50MzIgbnVtUGFja2V0cywgQXVkaW9CdWZmZXJM
aXN0KTsKKyAgICB2b2lkIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUoQ01U
aW1lKTsKKyAgICBPU1N0YXR1cyBwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUlu
dDMyKiwgQXVkaW9CdWZmZXJMaXN0KiwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioqKTsK
KworICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVlOwor
ICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX2lucHV0QnVmZmVyUXVldWU7CisgICAg
ZGlzcGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgQ01UaW1lIG1fbG93
V2F0ZXJUaW1lOworICAgIGJvb2wgbV9pc0VuY29kaW5nIHsgZmFsc2UgfTsKKworICAgIFJldGFp
blB0cjxBdWRpb0NvbnZlcnRlclJlZj4gbV9jb252ZXJ0ZXI7CisgICAgQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uIG1fc291cmNlRm9ybWF0OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiBtX2Rlc3RpbmF0aW9uRm9ybWF0OworICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0
aW9uUmVmPiBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb247CisgICAgUmV0YWluUHRyPE5T
TnVtYmVyPiBtX2dkckNvdW50TnVtOworICAgIFVJbnQzMiBtX21heE91dHB1dFBhY2tldFNpemU7
CisgICAgVmVjdG9yPEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24+IG1fZGVzdGluYXRpb25Q
YWNrZXREZXNjcmlwdGlvbnM7CisKKyAgICBDTVRpbWUgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0
aW9uVGltZVN0YW1wOworICAgIENNVGltZSBtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1l
U3RhbXA7CisgICAgQ01UaW1lIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbjsKKworICAgIFZlY3Rv
cjxjaGFyPiBtX3NvdXJjZUJ1ZmZlcjsKKyAgICBWZWN0b3I8Y2hhcj4gbV9kZXN0aW5hdGlvbkJ1
ZmZlcjsKKworICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX3NhbXBsZUJsb2NrQnVm
ZmVyOworICAgIHNpemVfdCBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZTsKKyAgICBzaXplX3QgbV9j
dXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcjsKKyAgICBBdWRpb0Zvcm1hdElEIG1fb3V0
cHV0Q29kZWNUeXBlOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjczMzM3NDZhZGZiMDAzZGM2NjIwYTAyZDEwNmM4
ZDQwYjFjZmRhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0wLDAg
KzEsNDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8
QXVkaW9Ub29sYm94L0F1ZGlvQ29kZWMuaD4KKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9D
b252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQuaD4KKyNpbmNs
dWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworI2ltcG9ydCA8cGFsL2NmL0F1ZGlvVG9v
bGJveFNvZnRMaW5rLmg+CisKKyNkZWZpbmUgTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EIDAuMQor
Cit1c2luZyBuYW1lc3BhY2UgUEFMOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6dW5p
cXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IEF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6Y3JlYXRlKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZv
aWQqIGNhbGxiYWNrT2JqZWN0KQoreworICAgIGF1dG8gY29tcHJlc3NvciA9IHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+KG5ldyBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IoKSk7CisgICAgaWYgKCFjb21wcmVzc29yLT5pbml0aWFsaXplKGNhbGxiYWNrLCBj
YWxsYmFja09iamVjdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb21w
cmVzc29yOworfQorCitBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvcigpCisgICAgOiBtX3NlcmlhbERpc3BhdGNoUXVldWUgeyBkaXNwYXRjaF9x
dWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQ
QVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICAsIG1fbG93V2F0ZXJUaW1lIHsgQ01UaW1lTWFrZVdp
dGhTZWNvbmRzKExPV19XQVRFUl9USU1FX0lOX1NFQ09ORCwgMTAwMCkgfQorICAgICwgbV9vdXRw
dXRDb2RlY1R5cGUgeyBrQXVkaW9Gb3JtYXRNUEVHNEFBQyB9Cit7Cit9CisKK0F1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCit7CisgICAg
aWYgKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3Nl
cmlhbERpc3BhdGNoUXVldWUpOworfQorCitib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lk
KiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIGlucHV0QnVmZmVyUXVl
dWU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1
ZmZlcnMoKSwgJmlucHV0QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVD
cmVhdGUgZm9yIG1faW5wdXRCdWZmZXJRdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX2lucHV0QnVmZmVyUXVldWUgPSBhZG9w
dENGKGlucHV0QnVmZmVyUXVldWUpOworCisgICAgQ01CdWZmZXJRdWV1ZVJlZiBvdXRwdXRCdWZm
ZXJRdWV1ZTsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2Ft
cGxlQnVmZmVycygpLCAmb3V0cHV0QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVy
UXVldWVDcmVhdGUgZm9yIG1fb3V0cHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9vdXRwdXRCdWZmZXJRdWV1
ZSA9IGFkb3B0Q0Yob3V0cHV0QnVmZmVyUXVldWUpOworICAgIENNQnVmZmVyUXVldWVJbnN0YWxs
VHJpZ2dlcihtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBjYWxsYmFjaywgY2FsbGJhY2tPYmpl
Y3QsIGtDTUJ1ZmZlclF1ZXVlVHJpZ2dlcl9XaGVuRGF0YUJlY29tZXNSZWFkeSwga0NNVGltZVpl
cm8sIE5VTEwpOworCisgICAgbV9pc0VuY29kaW5nID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCit7CisgICAg
ZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIHByb2Nlc3NT
YW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUoa0NNVGltZUludmFsaWQpOworICAgICAgICBh
dXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1
ZS5nZXQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0
YSBmYWlsZWQgJWQiLCBlcnJvcik7CisgICAgICAgIG1faXNFbmNvZGluZyA9IGZhbHNlOworICAg
IH0pOworfQorCitib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29u
dmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBm
b3JtYXREZXNjcmlwdGlvbiwgQXVkaW9Gb3JtYXRJRCBvdXRwdXRGb3JtYXRJRCkKK3sKKyAgICBj
b25zdCBhdXRvICphdWRpb0Zvcm1hdExpc3RJdGVtID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9u
R2V0UmljaGVzdERlY29kYWJsZUZvcm1hdChmb3JtYXREZXNjcmlwdGlvbik7CisgICAgbV9zb3Vy
Y2VGb3JtYXQgPSBhdWRpb0Zvcm1hdExpc3RJdGVtLT5tQVNCRDsKKworICAgIG1lbXNldCgmbV9k
ZXN0aW5hdGlvbkZvcm1hdCwgMCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikp
OworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUZvcm1hdElEID0gb3V0cHV0Rm9ybWF0SUQ7Cisg
ICAgbV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fc291cmNlRm9ybWF0Lm1TYW1w
bGVSYXRlOworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgPSBtX3Nv
dXJjZUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9m
KG1fZGVzdGluYXRpb25Gb3JtYXQpOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Gb3JtYXRH
ZXRQcm9wZXJ0eShrQXVkaW9Gb3JtYXRQcm9wZXJ0eV9Gb3JtYXRJbmZvLCAwLCBOVUxMLCAmc2l6
ZSwgJm1fZGVzdGluYXRpb25Gb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIEF1ZGlvRm9ybWF0R2V0UHJv
cGVydHkgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBBdWRpb0NvbnZlcnRlclJlZiBjb252ZXJ0ZXI7CisgICAgaWYgKGF1dG8gZXJy
b3IgPSBBdWRpb0NvbnZlcnRlck5ldygmbV9zb3VyY2VGb3JtYXQsICZtX2Rlc3RpbmF0aW9uRm9y
bWF0LCAmY29udmVydGVyKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRpb0NvbnZlcnRlck5ldyBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX2Nv
bnZlcnRlciA9IGFkb3B0Q0YoY29udmVydGVyKTsKKworICAgIHNpemVfdCBjb29raWVTaXplID0g
MDsKKyAgICBjb25zdCB2b2lkICpjb29raWUgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRN
YWdpY0Nvb2tpZShmb3JtYXREZXNjcmlwdGlvbiwgJmNvb2tpZVNpemUpOworICAgIGlmIChjb29r
aWVTaXplKSB7CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9w
ZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRGVjb21wcmVzc2lvbk1hZ2lj
Q29va2llLCAoVUludDMyKWNvb2tpZVNpemUsIGNvb2tpZSkpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNl
dHRpbmcga0F1ZGlvQ29udmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29va2llIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorCisgICAgc2l6ZSA9IHNpemVvZihtX3NvdXJjZUZvcm1hdCk7CisgICAgaWYgKGF1dG8gZXJy
b3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9D
b252ZXJ0ZXJDdXJyZW50SW5wdXRTdHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX3NvdXJjZUZv
cm1hdCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50SW5wdXRT
dHJlYW1EZXNjcmlwdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmICghbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAibUJ5dGVzUGVyUGFj
a2V0IHNob3VsZCBub3QgYmUgemVybyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgc2l6ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBl
cnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRp
b0NvbnZlcnRlckN1cnJlbnRPdXRwdXRTdHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX2Rlc3Rp
bmF0aW9uRm9ybWF0KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckN1cnJl
bnRPdXRwdXRTdHJlYW1EZXNjcmlwdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1G
b3JtYXRJRCA9PSBrQXVkaW9Gb3JtYXRNUEVHNEFBQykgeworICAgICAgICAvLyBGSVhNRTogU2V0
IG91dHB1dEJpdFJhdGUgYWNjb3JkaW5nIE1lZGlhUmVjb3JkZXJPcHRpb25zLmF1ZGlvQml0c1Bl
clNlY29uZC4KKyAgICAgICAgVUludDMyIG91dHB1dEJpdFJhdGUgPSA2NDAwMDsKKyAgICAgICAg
aWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPj0gNDQxMDApCisgICAgICAgICAg
ICBvdXRwdXRCaXRSYXRlID0gMTkyMDAwOworICAgICAgICBlbHNlIGlmIChtX2Rlc3RpbmF0aW9u
Rm9ybWF0Lm1TYW1wbGVSYXRlIDwgMjIwMDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0g
MzIwMDA7CisKKyAgICAgICAgc2l6ZSA9IHNpemVvZihvdXRwdXRCaXRSYXRlKTsKKyAgICAgICAg
aWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdl
dCgpLCBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmICghbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNr
ZXQpIHsKKyAgICAgICAgLy8gSWYgdGhlIGRlc3RpbmF0aW9uIGZvcm1hdCBpcyBWQlIsIHdlIG5l
ZWQgdG8gZ2V0IG1heCBzaXplIHBlciBwYWNrZXQgZnJvbSB0aGUgY29udmVydGVyLgorICAgICAg
ICBzaXplID0gc2l6ZW9mKG1fbWF4T3V0cHV0UGFja2V0U2l6ZSk7CisKKyAgICAgICAgaWYgKGF1
dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBr
QXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eU1heGltdW1PdXRwdXRQYWNrZXRTaXplLCAmc2l6ZSwgJm1f
bWF4T3V0cHV0UGFja2V0U2l6ZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29u
dmVydGVyUHJvcGVydHlNYXhpbXVtT3V0cHV0UGFja2V0U2l6ZSBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IG1fZGVzdGluYXRpb25CdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KGNvbXB1dGVCdWZmZXJTaXplRm9y
QXVkaW9Gb3JtYXQobV9kZXN0aW5hdGlvbkZvcm1hdCwgbV9tYXhPdXRwdXRQYWNrZXRTaXplLCBM
T1dfV0FURVJfVElNRV9JTl9TRUNPTkQpKTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQu
bUJ5dGVzUGVyUGFja2V0KQorICAgICAgICBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25z
LnJlc2VydmVDYXBhY2l0eShtX2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5KCkgLyBtX21heE91
dHB1dFBhY2tldFNpemUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQoQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIGZvcm1hdCwgVUludDMyIG1heE91dHB1dFBhY2tldFNp
emUsIEZsb2F0MzIgZHVyYXRpb24pCit7CisgICAgVUludDMyIG51bVBhY2tldHMgPSAoZm9ybWF0
Lm1TYW1wbGVSYXRlICogZHVyYXRpb24pIC8gZm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQ7CisgICAg
VUludDMyIG91dHB1dFBhY2tldFNpemUgPSBmb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gZm9ybWF0
Lm1CeXRlc1BlclBhY2tldCA6IG1heE91dHB1dFBhY2tldFNpemU7CisgICAgVUludDMyIGJ1ZmZl
clNpemUgPSBudW1QYWNrZXRzICogb3V0cHV0UGFja2V0U2l6ZTsKKworICAgIHJldHVybiBidWZm
ZXJTaXplOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YXR0YWNoUHJp
bWluZ1RyaW1zSWZOZWVkZWQoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGlmIChD
TVRJTUVfSVNfSU5WQUxJRChtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7CisgICAgICAgIEF1
ZGlvQ29udmVydGVyUHJpbWVJbmZvIHByaW1lSW5mbyB7IDAsIDAgfTsKKyAgICAgICAgVUludDMy
IHNpemUgPSBzaXplb2YocHJpbWVJbmZvKTsKKworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1
ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRl
clByaW1lSW5mbywgJnNpemUsICZwcmltZUluZm8pKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5n
IGtBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fcmVtYWluaW5nUHJpbWVEdXJh
dGlvbiA9IENNVGltZU1ha2UocHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMsIG1fZGVzdGluYXRpb25G
b3JtYXQubVNhbXBsZVJhdGUpOworICAgIH0KKworICAgIGlmIChDTVRJTUVfQ09NUEFSRV9JTkxJ
TkUoa0NNVGltZVplcm8sIDwsIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbikpIHsKKyAgICAgICAg
Q01UaW1lIHNhbXBsZUR1cmF0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIp
OworICAgICAgICBDTVRpbWUgdHJpbUR1cmF0aW9uID0gQ01UaW1lTWluaW11bShzYW1wbGVEdXJh
dGlvbiwgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVm
IHRyaW1BdFN0YXJ0RGljdCA9IENNVGltZUNvcHlBc0RpY3Rpb25hcnkodHJpbUR1cmF0aW9uLCBr
Q0ZBbGxvY2F0b3JEZWZhdWx0KTsKKyAgICAgICAgQ01TZXRBdHRhY2htZW50KGJ1ZmZlciwga0NN
U2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCB0cmltQXRTdGFy
dERpY3QsIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisgICAgICAgIENGUmVs
ZWFzZSh0cmltQXRTdGFydERpY3QpOworICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24g
PSBDTVRpbWVTdWJ0cmFjdChtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24sIHRyaW1EdXJhdGlvbik7
CisgICAgfQorfQorCitSZXRhaW5QdHI8TlNOdW1iZXI+IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6Z3JhZHVhbERlY29kZXJSZWZyZXNoQ291bnQoKQoreworICAgIFVJbnQzMiBkZWxheVNp
emUgPSBzaXplb2YodWludDMyX3QpOworICAgIHVpbnQzMl90IG9yaWdpbmFsRGVsYXlNb2RlID0g
MDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252
ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUsICZkZWxheVNpemUsICZv
cmlnaW5hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1Byb3Bl
cnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmls
OworICAgIH0KKworICAgIHVpbnQzMl90IG9wdGltYWxEZWxheU1vZGUgPSBrQXVkaW9Db2RlY0Rl
bGF5TW9kZV9PcHRpbWFsOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQ
cm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSwg
ZGVsYXlTaXplLCAmb3B0aW1hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVk
aW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAg
ICByZXR1cm4gbmlsOworICAgIH0KKworICAgIFVJbnQzMiBwcmltZVNpemUgPSBzaXplb2YoQXVk
aW9Db2RlY1ByaW1lSW5mbyk7CisgICAgQXVkaW9Db2RlY1ByaW1lSW5mbyBwcmltZUluZm8geyAw
LCAwIH07CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1f
Y29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZvLCAmcHJpbWVTaXpl
LCAmcHJpbWVJbmZvKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlQ
cmltZUluZm8gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgfQorCisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1f
Y29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCBkZWxheVNpemUs
ICZvcmlnaW5hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db2RlY1By
b3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4g
bmlsOworICAgIH0KKyAgICByZXR1cm4gYWRvcHROUyhbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoo
cHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMgLyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1GcmFtZXNQZXJQ
YWNrZXQpXSk7Cit9CisKK0NNU2FtcGxlQnVmZmVyUmVmIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6c2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlv
QnVmZmVyTGlzdCBmaWxsQnVmZmVyTGlzdCkKK3sKKyAgICBWZWN0b3I8Y2hhcj4gY29va2llOwor
ICAgIGlmICghbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIFVJbnQz
MiBjb29raWVTaXplID0gMDsKKworICAgICAgICBhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJH
ZXRQcm9wZXJ0eUluZm8obV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNz
aW9uTWFnaWNDb29raWUsICZjb29raWVTaXplLCBOVUxMKTsKKyAgICAgICAgaWYgKChlcnJvciA9
PSBub0VycikgJiYgISFjb29raWVTaXplKSB7CisgICAgICAgICAgICBjb29raWUucmVzZXJ2ZUNh
cGFjaXR5KGNvb2tpZVNpemUpOworCisgICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlv
Q29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNv
bXByZXNzaW9uTWFnaWNDb29raWUsICZjb29raWVTaXplLCBjb29raWUuZGF0YSgpKSkgeworICAg
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nv
b2tpZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmls
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlv
blJlZiBkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAgICAgICBpZiAoYXV0byBlcnJv
ciA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAm
bV9kZXN0aW5hdGlvbkZvcm1hdCwgMCwgTlVMTCwgY29va2llU2l6ZSwgY29va2llLmRhdGEoKSwg
TlVMTCwgJmRlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24pKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBD
TUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICB9CisgICAgICAgIG1fZGVzdGluYXRpb25G
b3JtYXREZXNjcmlwdGlvbiA9IGFkb3B0Q0YoZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbik7
CisgICAgICAgIG1fZ2RyQ291bnROdW0gPSBncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudCgpOwor
ICAgIH0KKworICAgIGNoYXIgKmRhdGEgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZmlsbEJ1ZmZlckxp
c3QubUJ1ZmZlcnNbMF0ubURhdGEpOworICAgIHNpemVfdCBkYXRhU2l6ZSA9IGZpbGxCdWZmZXJM
aXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemU7CisKKyAgICBDTUJsb2NrQnVmZmVyUmVmIGJs
b2NrQnVmZmVyOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhN
ZW1vcnlCbG9jayhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBkYXRhU2l6ZSwga0NGQWxsb2Nh
dG9yRGVmYXVsdCwgTlVMTCwgMCwgZGF0YVNpemUsIGtDTUJsb2NrQnVmZmVyQXNzdXJlTWVtb3J5
Tm93RmxhZywgJmJsb2NrQnVmZmVyKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ3JlYXRl
V2l0aE1lbW9yeUJsb2NrIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4g
bmlsOworICAgIH0KKyAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0Q0YoYmxvY2tCdWZmZXIpOworCisg
ICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyhkYXRhLCBi
dWZmZXIuZ2V0KCksIDAsIGRhdGFTaXplKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyUmVw
bGFjZURhdGFCeXRlcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICB9CisKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXI7CisgICAgYXV0
byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25z
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1ZmZlci5nZXQoKSwgdHJ1ZSwgTlVMTCwgTlVMTCwgbV9k
ZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uLmdldCgpLCBudW1QYWNrZXRzLCBtX2N1cnJlbnRO
YXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlv
bnMuZGF0YSgpLCAmc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgaWYgKFtt
X2dkckNvdW50TnVtIGludFZhbHVlXSkKKyAgICAgICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1
ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9HcmFkdWFsRGVjb2RlclJlZnJlc2gs
IChfX2JyaWRnZSBDRlR5cGVSZWYpbV9nZHJDb3VudE51bS5nZXQoKSwga0NNQXR0YWNobWVudE1v
ZGVfU2hvdWxkUHJvcGFnYXRlKTsKKworICAgIHJldHVybiBzYW1wbGVCdWZmZXI7Cit9CisKK09T
U3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YXVkaW9Db252ZXJ0ZXJDb21wbGV4
SW5wdXREYXRhUHJvYyhBdWRpb0NvbnZlcnRlclJlZiwgVUludDMyICpudW1PdXRwdXRQYWNrZXRz
UHRyLCBBdWRpb0J1ZmZlckxpc3QgKmJ1ZmZlckxpc3QsIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3Jp
cHRpb24gKipwYWNrZXREZXNjcmlwdGlvbk91dCwgdm9pZCAqYXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yKQoreworICAgIGF1dG8gKmNvbXByZXNzb3IgPSBzdGF0aWNfY2FzdDxBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IqPihhdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOworICAgIHJl
dHVybiBjb21wcmVzc29yLT5wcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMobnVtT3V0
cHV0UGFja2V0c1B0ciwgYnVmZmVyTGlzdCwgcGFja2V0RGVzY3JpcHRpb25PdXQpOworfQorCitP
U1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVt
T3V0cHV0UGFja2V0cyhVSW50MzIqIG51bU91dHB1dFBhY2tldHNQdHIsIEF1ZGlvQnVmZmVyTGlz
dCogYXVkaW9CdWZmZXJMaXN0LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiogcGFja2V0
RGVzY3JpcHRpb25PdXQpCit7CisgICAgaWYgKHBhY2tldERlc2NyaXB0aW9uT3V0KQorICAgICAg
ICAqcGFja2V0RGVzY3JpcHRpb25PdXQgPSBOVUxMOworCisgICAgY29uc3QgVUludDMyIG51bVBh
Y2tldHNUb0NvcHkgPSAqbnVtT3V0cHV0UGFja2V0c1B0cjsKKyAgICBzaXplX3QgbnVtQnl0ZXNU
b0NvcHkgPSAobnVtUGFja2V0c1RvQ29weSAqIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCk7CisKKyAgICBpZiAoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAxKSB7Cisg
ICAgICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgPSAwOworCisgICAgICAg
IG1fc291cmNlQnVmZmVyLnJlc2VydmVDYXBhY2l0eShudW1CeXRlc1RvQ29weSk7CisKKyAgICAg
ICAgd2hpbGUgKG51bUJ5dGVzVG9Db3B5KSB7CisgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9j
a0J1ZmZlclNpemUgPD0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikgeworICAg
ICAgICAgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAg
ICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBt
X3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQo
KSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgYXV0byBz
YW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lk
Kj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgp
KSkpKTsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRDRigoQ01C
bG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJH
ZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAgICAgICAgICAgIGlm
ICghbV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNhbXBs
ZUJ1ZmZlckdldERhdGFCdWZmZXIgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgICAgIG1fc2Ft
cGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50T2Zm
c2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVy
U2l6ZSA9IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fc2FtcGxlQmxvY2tCdWZmZXIuZ2V0
KCkpOworICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIg
PSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZl
cikgeworICAgICAgICAgICAgICAgIHNpemVfdCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVm
ID0gc3RkOjptaW4obnVtQnl0ZXNUb0NvcHksIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSAtIG1f
Y3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIpKTsKKyAgICAgICAgICAgICAgICBpZiAo
YXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKG1fc2FtcGxlQmxvY2tCdWZm
ZXIuZ2V0KCksIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIsIG51bUJ5dGVzVG9D
b3B5RnJvbVNhbXBsZUJidWYsIChtX3NvdXJjZUJ1ZmZlci5kYXRhKCkgKyBjdXJyZW50T2Zmc2V0
SW5Tb3VyY2VCdWZmZXIpKSkgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVy
Q29weURhdGFCeXRlcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBudW1C
eXRlc1RvQ29weSAtPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAg
ICAgIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1w
bGVCYnVmOworICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZm
ZXIgKz0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhID0gbV9zb3Vy
Y2VCdWZmZXIuZGF0YSgpOworICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1E
YXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7CisgICAgICAgIGF1ZGlv
QnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9zb3VyY2VGb3JtYXQu
bUNoYW5uZWxzUGVyRnJhbWU7CisKKyAgICAgICAgKm51bU91dHB1dFBhY2tldHNQdHIgPSAoYXVk
aW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplIC8gbV9zb3VyY2VGb3JtYXQu
bUJ5dGVzUGVyUGFja2V0KTsKKyAgICAgICAgcmV0dXJuIG5vRXJyOworICAgIH0KKworICAgIEFT
U0VSVChhdWRpb0J1ZmZlckxpc3QtPm1OdW1iZXJCdWZmZXJzID09IDIpOworCisgICAgLy8gRklY
TUU6IFN1cHBvcnQgaW50ZXJsZWF2ZWQgZGF0YSBieSB1bmludGVybGVhdmluZyBtX3NvdXJjZUJ1
ZmZlciBpZiBuZWVkZWQuCisgICAgQVNTRVJUKG1fc291cmNlRm9ybWF0Lm1Gb3JtYXRGbGFncyAm
IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkKTsKKworICAgIG1fc291cmNlQnVmZmVy
LnJlc2VydmVDYXBhY2l0eSgyICogbnVtQnl0ZXNUb0NvcHkpOworICAgIGF1dG8qIGZpcnN0Q2hh
bm5lbCA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICBhdXRvKiBzZWNvbmRDaGFubmVsID0g
bV9zb3VyY2VCdWZmZXIuZGF0YSgpICsgbnVtQnl0ZXNUb0NvcHk7CisKKyAgICBzaXplX3QgY3Vy
cmVudE9mZnNldEluU291cmNlQnVmZmVyID0gMDsKKyAgICB3aGlsZSAobnVtQnl0ZXNUb0NvcHkp
IHsKKyAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9IG1fY3VycmVudE9mZnNl
dEluU2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVm
ZmVyKSB7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IG51bGxwdHI7Cisg
ICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoQ01CdWZmZXJRdWV1ZUlzRW1wdHkobV9pbnB1dEJ1ZmZlclF1
ZXVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgYXV0byBz
YW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lk
Kj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgp
KSkpKTsKKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBhZG9wdENGKChDTUJsb2Nr
QnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDRlJldGFpbihDTVNhbXBsZUJ1ZmZlckdldERh
dGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKSkpKSk7CisgICAgICAgICAgICBpZiAoIW1fc2Ft
cGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNhbXBsZUJ1ZmZlckdldERh
dGFCdWZmZXIgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNp
emUgPSAwOworICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZm
ZXIgPSAwOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0
aChtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpKSAvIDI7CisgICAgICAgICAgICBtX2N1cnJlbnRP
ZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICht
X3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHlG
cm9tU2FtcGxlQmJ1ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVCbG9ja0J1
ZmZlclNpemUgLSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSk7CisgICAgICAg
ICAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKG1fc2FtcGxl
QmxvY2tCdWZmZXIuZ2V0KCksIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIsIG51
bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYsIChmaXJzdENoYW5uZWwgKyBjdXJyZW50T2Zmc2V0
SW5Tb3VyY2VCdWZmZXIpKSkgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQmxvY2tCdWZmZXJDb3B5
RGF0YUJ5dGVzIGZpcnN0IGNoYW5uZWwgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1
dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVy
LmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyICsgbV9zYW1wbGVCbG9j
a0J1ZmZlclNpemUsIG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYsIChzZWNvbmRDaGFubmVs
ICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBD
TUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBzZWNvbmQgY2hhbm5lbCBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBudW1CeXRlc1RvQ29weSAtPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVm
OworICAgICAgICAgICAgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyICs9IG51bUJ5dGVzVG9D
b3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJs
b2NrQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhID0gZmlyc3RDaGFu
bmVsOworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGN1
cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcjsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJz
WzBdLm1OdW1iZXJDaGFubmVscyA9IDE7CisKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJz
WzFdLm1EYXRhID0gc2Vjb25kQ2hhbm5lbDsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJz
WzFdLm1EYXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7CisgICAgYXVk
aW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgKm51
bU91dHB1dFBhY2tldHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5
dGVTaXplIC8gbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKKyAgICByZXR1cm4gbm9F
cnI7Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxl
QnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKENNVGltZSBsb3dXYXRlclRpbWUpCit7CisgICAgaWYg
KCFtX2NvbnZlcnRlcikgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IChDTVNhbXBsZUJ1ZmZlclJl
ZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZUdldEhlYWQobV9pbnB1dEJ1ZmZlclF1
ZXVlLmdldCgpKSkpOworICAgICAgICBBU1NFUlQoYnVmZmVyKTsKKworICAgICAgICBtX2N1cnJl
bnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRh
dGlvblRpbWVTdGFtcChidWZmZXIpOworICAgICAgICBtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRp
b25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFt
cChidWZmZXIpOworCisgICAgICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1
ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKGJ1ZmZlcik7CisgICAgICAgIGlmICghaW5pdEF1ZGlv
Q29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRpb24sIG1f
b3V0cHV0Q29kZWNUeXBlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3aGls
ZSAoQ01USU1FX0lTX0lOVkFMSUQobG93V2F0ZXJUaW1lKSB8fCBDTVRJTUVfQ09NUEFSRV9JTkxJ
TkUobG93V2F0ZXJUaW1lLCA8LCBDTUJ1ZmZlclF1ZXVlR2V0RHVyYXRpb24obV9pbnB1dEJ1ZmZl
clF1ZXVlLmdldCgpKSkpIHsKKyAgICAgICAgQXVkaW9CdWZmZXJMaXN0IGZpbGxCdWZmZXJMaXN0
OworCisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJzID0gMTsKKyAgICAgICAg
ZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9kZXN0aW5hdGlv
bkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZl
cnNbMF0ubURhdGFCeXRlU2l6ZSA9IChVSW50MzIpbV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0
eSgpOworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSA9IG1fZGVzdGlu
YXRpb25CdWZmZXIuZGF0YSgpOworCisgICAgICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0g
bV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPyBtX2Rlc3RpbmF0aW9uRm9ybWF0
Lm1CeXRlc1BlclBhY2tldCA6IG1fbWF4T3V0cHV0UGFja2V0U2l6ZTsKKyAgICAgICAgVUludDMy
IG51bU91dHB1dFBhY2tldHMgPSAoVUludDMyKW1fZGVzdGluYXRpb25CdWZmZXIuY2FwYWNpdHko
KSAvIG91dHB1dFBhY2tldFNpemU7CisKKyAgICAgICAgYXV0byBlcnJvciA9IEF1ZGlvQ29udmVy
dGVyRmlsbENvbXBsZXhCdWZmZXIobV9jb252ZXJ0ZXIuZ2V0KCksIGF1ZGlvQ29udmVydGVyQ29t
cGxleElucHV0RGF0YVByb2MsIHRoaXMsICZudW1PdXRwdXRQYWNrZXRzLCAmZmlsbEJ1ZmZlckxp
c3QsIG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnMuZGF0YSgpKTsKKyAgICAgICAgaWYg
KGVycm9yKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVy
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFudW1PdXRwdXRQYWNrZXRzKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgYXV0byBidWZmZXIgPSBzYW1wbGVCdWZmZXJXaXRoTnVtUGFja2V0cyhudW1PdXRw
dXRQYWNrZXRzLCBmaWxsQnVmZmVyTGlzdCk7CisKKyAgICAgICAgYXR0YWNoUHJpbWluZ1RyaW1z
SWZOZWVkZWQoYnVmZmVyKTsKKworICAgICAgICBlcnJvciA9IENNU2FtcGxlQnVmZmVyU2V0T3V0
cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlciwgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0
aW9uVGltZVN0YW1wKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNh
bXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIENNVGlt
ZSBuYXRpdmVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsKKyAg
ICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01UaW1lQWRkKG1f
Y3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCwgbmF0aXZlRHVyYXRpb24pOworCisg
ICAgICAgIENNVGltZSBvdXRwdXREdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0T3V0cHV0RHVy
YXRpb24oYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0
YW1wID0gQ01UaW1lQWRkKG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCwgb3V0
cHV0RHVyYXRpb24pOworCisgICAgICAgIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUobV9v
dXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgYnVmZmVyKTsKKyAgICAgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZm
ZXJSZWYgYnVmZmVyKQoreworICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSht
X2lucHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVm
ZmVyUXVldWVFbnF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgcHJvY2Vzc1Nh
bXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShtX2xvd1dhdGVyVGltZSk7Cit9CisKK3ZvaWQg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZm
ZXJSZWYgYnVmZmVyKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVl
LCBeeworICAgICAgICBpZiAobV9pc0VuY29kaW5nKQorICAgICAgICAgICAgcHJvY2Vzc1NhbXBs
ZUJ1ZmZlcihidWZmZXIpOworICAgIH0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpCit7CisgICAgcmV0
dXJuIChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZUdl
dEhlYWQobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKK30KKworUmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1w
bGVCdWZmZXIoKQoreworICAgIHJldHVybiBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29u
c3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9vdXRwdXRCdWZm
ZXJRdWV1ZS5nZXQoKSkpKSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IGIxNDdjYTI4ODI5YjBmMTAzMGJkYTc0YTA4
NDI2YzQ1NjVlOTg3MWUuLmZiMDJiMTIxZjc5OTU0MGM5ZWFiYTg1MzdlNjIyY2IxOThiYjU3MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oCkBAIC0yNSw2ICsyNSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgogCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC0z
NCwxMSArMzUsMTYgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oPgorI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgorI2luY2x1ZGUg
PENvcmVNZWRpYS9DTVRpbWUuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZm
ZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3Jt
YXREZXNjcmlwdGlvbiogQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKK3R5cGVkZWYgc3RydWN0IG9w
YXF1ZUNNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4gKkNNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW47
CiAKIE9CSkNfQ0xBU1MgQVZBc3NldFdyaXRlcjsKIE9CSkNfQ0xBU1MgQVZBc3NldFdyaXRlcklu
cHV0OworT0JKQ19DTEFTUyBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBX
VEYgewogY2xhc3MgTWVkaWFUaW1lOwpAQCAtNDYsMjkgKzUyLDgzIEBAIGNsYXNzIE1lZGlhVGlt
ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I7CiBjbGFzcyBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogY2xhc3MgTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU7CiBjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YTsKK2NsYXNzIFZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvcjsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHsKK2NsYXNzIFdFQkNPUkVfRVhQ
T1JUIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpN
YWluPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBX
ZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9uOjpFYWdlcj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IGNyZWF0ZShjb25zdCBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSogYXVkaW9UcmFjaywgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUqIHZpZGVvVHJhY2spOwogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI+IGNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAg
IH5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpOwotICAgIAotICAgIGJvb2wgc2V0dXBXcml0
ZXIoKTsKLSAgICBib29sIHNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAg
ICBib29sIHNldEF1ZGlvSW5wdXQoKTsKKwogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZm
ZXIoQ01TYW1wbGVCdWZmZXJSZWYpOwogICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIo
Y29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwg
Y29uc3QgV1RGOjpNZWRpYVRpbWUmLCBzaXplX3QpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZygp
OwogICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJik+JiYpOwogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyAgICB2b2lk
IGFwcGVuZERhdGEoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmREYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYpOworI2VuZGlmCisKIHByaXZhdGU6CisjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKKyAgICBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihib29sIGhhc0F1ZGlv
LCBib29sIGhhc1ZpZGVvKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICBib29sIGluaXRpYWxp
emUoKTsKKworICAgIHN0YXRpYyB2b2lkIGNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxi
YWNrKHZvaWQqLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKTsKKyAgICBzdGF0aWMgdm9pZCBj
b21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRy
aWdnZXJUb2tlbik7CisKKyAgICB2b2lkIHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICB2b2lkIGFw
cGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisKKyAgICBib29sIGFwcGVuZENvbXByZXNz
ZWRBdWRpb1NhbXBsZUJ1ZmZlcigpOworICAgIGJvb2wgYXBwZW5kQ29tcHJlc3NlZFZpZGVvU2Ft
cGxlQnVmZmVyKCk7CisKKyAgICB2b2lkIHByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVC
dWZmZXJzKCk7CisgICAgdm9pZCBwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVy
cygpOworCisgICAgdm9pZCBmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRp
b25JZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworI2Vsc2UKICAgICBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4mJiwgU3RyaW5n
JiYgcGF0aCk7CiAgICAgdm9pZCBjbGVhcigpOwogCisgICAgYm9vbCBzZXR1cFdyaXRlcigpOwor
ICAgIGJvb2wgc2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIGJvb2wg
c2V0QXVkaW9JbnB1dCgpOworI2VuZGlmCisKKyAgICBib29sIG1faGFzU3RhcnRlZFdyaXRpbmcg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1N0b3BwZWQgeyBmYWxzZSB9OworCiAgICAgUmV0YWlu
UHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOworCisgICAgYm9vbCBtX2lzU3RvcHBpbmcgeyBm
YWxzZSB9OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiBtX2ZldGNoRGF0YUNvbXBsZXRp
b25IYW5kbGVyOworCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyAgICBib29sIG1faGFz
QXVkaW87CisgICAgYm9vbCBtX2hhc1ZpZGVvOworCisgICAgUmV0YWluUHRyPENNRm9ybWF0RGVz
Y3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKKyAgICBS
ZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dDsKKwor
ICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX3ZpZGVvRm9ybWF0RGVzY3Jp
cHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4g
bV92aWRlb0NvbXByZXNzb3I7CisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV92
aWRlb0Fzc2V0V3JpdGVySW5wdXQ7CisgICAgQ01UaW1lIG1fbGFzdFZpZGVvUHJlc2VudGF0aW9u
VGltZTsKKyAgICBDTVRpbWUgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWU7CisgICAgYm9vbCBtX2hh
c0VuY29kZWRWaWRlb1NhbXBsZXMgeyBmYWxzZSB9OworCisgICAgUmV0YWluUHRyPFdlYkFWQXNz
ZXRXcml0ZXJEZWxlZ2F0ZT4gbV93cml0ZXJEZWxlZ2F0ZTsKKyNlbHNlCiAgICAgUmV0YWluUHRy
PEFWQXNzZXRXcml0ZXJJbnB1dD4gbV92aWRlb0lucHV0OwogICAgIFJldGFpblB0cjxBVkFzc2V0
V3JpdGVySW5wdXQ+IG1fYXVkaW9JbnB1dDsKIApAQCAtNzgsMTcgKzEzOCwxMyBAQCBwcml2YXRl
OgogICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmU7CiAgICAgQmlu
YXJ5U2VtYXBob3JlIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlOwogICAgIEJpbmFyeVNl
bWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZTsKLSAgICBib29sIG1faGFzU3Rh
cnRlZFdyaXRpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1N0b3BwZWQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgeyB0cnVlIH07CiAgICAgZGlzcGF0Y2hfcXVl
dWVfdCBtX2F1ZGlvUHVsbFF1ZXVlOwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV92aWRlb1B1bGxR
dWV1ZTsKICAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX3ZpZGVvQnVm
ZmVyUG9vbDsKICAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX2F1ZGlv
QnVmZmVyUG9vbDsKIAotICAgIGJvb2wgbV9pc1N0b3BwaW5nIHsgZmFsc2UgfTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDIzMzU0ZjQ3ODRkZTA5MmYw
NDg3YzE4NTRmYzViMjZhNWUyMjExYWMuLmY4NDU1N2MwMzU5YmI3MGFkMTI0Nzg2NzgwMDk0MzE5
NjFkYzRkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0KQEAgLTI2LDExMSArMjYsMTMyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIgogCisjaWYgIVVT
RShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYUZpbGVCYXNlZC5tbSIKKyNlbHNlCisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQogCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmgiCiAjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUg
IlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVy
TGlzdC5oIgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyLmg+CiAjaW5jbHVk
ZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJJbnB1dC5oPgorI2luY2x1ZGUgPEFWRm91bmRh
dGlvbi9BVkFzc2V0V3JpdGVyX1ByaXZhdGUuaD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9u
L01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0
TGluay5oPgorI2luY2x1ZGUgPHd0Zi9CbG9ja1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0
TGluay5oPgogCi0jdW5kZWYgQVZFbmNvZGVyQml0UmF0ZUtleQotI2RlZmluZSBBVkVuY29kZXJC
aXRSYXRlS2V5IGdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2soKQotI3VuZGVmIEFW
Rm9ybWF0SURLZXkKLSNkZWZpbmUgQVZGb3JtYXRJREtleSBnZXRBVkZvcm1hdElES2V5V2l0aEZh
bGxiYWNrKCkKLSN1bmRlZiBBVk51bWJlck9mQ2hhbm5lbHNLZXkKLSNkZWZpbmUgQVZOdW1iZXJP
ZkNoYW5uZWxzS2V5IGdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCi0jdW5k
ZWYgQVZTYW1wbGVSYXRlS2V5Ci0jZGVmaW5lIEFWU2FtcGxlUmF0ZUtleSBnZXRBVlNhbXBsZVJh
dGVLZXlXaXRoRmFsbGJhY2soKQorQGludGVyZmFjZSBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
OiBOU09iamVjdCA8QVZBc3NldFdyaXRlckRlbGVnYXRlPiB7CisgICAgV2Vha1B0cjxXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gbV93cml0ZXI7Cit9CiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIqKXdyaXRlcjsKKy0gKHZvaWQpY2xvc2U7CistICh2b2lkKWZp
bmlzaDsKIAotdXNpbmcgbmFtZXNwYWNlIFBBTDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdl
YkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB7Cit9OwogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFWRm9y
bWF0SURLZXlXaXRoRmFsbGJhY2soKQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV3JpdGVyOihX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciopd3JpdGVyCiB7Ci0gICAgaWYgKFBB
TDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgpKQotICAgICAgICByZXR1cm4g
UEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKTsKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKHNlbGYpCisgICAg
ICAgIHNlbGYtPm1fd3JpdGVyID0gbWFrZVdlYWtQdHIod3JpdGVyKTsKIAotICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZGb3JtYXRJREtleSIpOwotICAgIHJl
dHVybiBAIkFWRm9ybWF0SURLZXkiOworICAgIHJldHVybiBzZWxmOwogfQogCi1zdGF0aWMgTlNT
dHJpbmcgKmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCistICh2b2lkKWRl
YWxsb2MKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVk51bWJlck9mQ2hh
bm5lbHNLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVk51bWJl
ck9mQ2hhbm5lbHNLZXkoKTsKLQotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVk
IHRvIGxvYWQgQVZOdW1iZXJPZkNoYW5uZWxzS2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZOdW1iZXJP
ZkNoYW5uZWxzS2V5IjsKKyAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLXN0YXRpYyBOU1N0cmlu
ZyAqZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQpYXNzZXRXcml0ZXI6
KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQcm9kdWNlRnJhZ21lbnRlZEhlYWRlckRh
dGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRIZWFkZXJEYXRhCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9h
ZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6Omdl
dF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCk7CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0
V3JpdGVyKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGlmIChhdXRvIHNp
emUgPSBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3RoXSkgeworICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVkFzc2V0V3JpdGVyRGVs
ZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGJ5dGVzXSksIHNpemUp
XSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLT5tX3dyaXRl
cikKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+bV93cml0ZXItPmFwcGVuZERh
dGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0
byBsb2FkIEFWU2FtcGxlUmF0ZUtleSIpOwotICAgIHJldHVybiBAIkFWU2FtcGxlUmF0ZUtleSI7
CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGJ5dGVzXSksIFtmcmFnbWVu
dGVkSGVhZGVyRGF0YSBsZW5ndGhdKTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVkVuY29k
ZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQpYXNzZXRXcml0ZXI6KEFWQXNzZXRX
cml0ZXIgKilhc3NldFdyaXRlciBkaWRQcm9kdWNlRnJhZ21lbnRlZE1lZGlhRGF0YTooTlNEYXRh
ICopZnJhZ21lbnRlZE1lZGlhRGF0YSBmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0OihBVkZyYWdt
ZW50ZWRNZWRpYURhdGFSZXBvcnQgKilmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0CiB7Ci0gICAg
aWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgpKQotICAg
ICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVLZXkoKTsK
KyAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0ZXIpOworICAgIFVOVVNFRF9QQVJBTShmcmFnbWVu
dGVkTWVkaWFEYXRhUmVwb3J0KTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAg
IGlmIChhdXRvIHNpemUgPSBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5ndGhdKSB7CisgICAgICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWQXNz
ZXRXcml0ZXJEZWxlZ2F0ZT4oc2VsZiksIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRl
c10pLCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkU2Vs
Zi0+bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPm1fd3JpdGVy
LT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEs
ICJGYWlsZWQgdG8gbG9hZCBBVkVuY29kZXJCaXRSYXRlS2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZF
bmNvZGVyQml0UmF0ZUtleSI7CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dyaXRlci0+
YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRNZWRpYURhdGEg
Ynl0ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSk7CiB9CiAKLVJlZlB0cjxNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0
ZShjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogYXVkaW9UcmFjaywgY29uc3QgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUqIHZpZGVvVHJhY2spCistICh2b2lkKWNsb3NlCiB7Ci0gICAgaW50
IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKLSAgICBpZiAodmlkZW9UcmFjaykgewotICAgICAgICBh
dXRvJiBzZXR0aW5ncyA9IHZpZGVvVHJhY2stPnNldHRpbmdzKCk7Ci0gICAgICAgIHdpZHRoID0g
c2V0dGluZ3Mud2lkdGgoKTsKLSAgICAgICAgaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7Ci0g
ICAgfQotICAgIHJldHVybiBjcmVhdGUoISFhdWRpb1RyYWNrLCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICBtX3dyaXRlciA9IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCistICh2b2lkKWZpbmlzaAogewotICAgIE5TU3RyaW5nICpk
aXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJ2aWRlb3Mi
KTsKLSAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Ii8lbGxkLm1wNCIsIENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpLnZh
bHVlXTsKLSAgICBOU1N0cmluZyAqcGF0aCA9IFtkaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdT
dHJpbmc6ZmlsZW5hbWVdOworICAgIG1fd3JpdGVyID0gbnVsbHB0cjsKK30KIAotICAgIE5TVVJM
ICpvdXRwdXRVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhdOwotICAgIFN0cmluZyBm
aWxlUGF0aCA9IFtwYXRoIFVURjhTdHJpbmddOwotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwot
ICAgIGF1dG8gYXZBc3NldFdyaXRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVy
SW5zdGFuY2UoKSBpbml0V2l0aFVSTDpvdXRwdXRVUkwgZmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0
IGVycm9yOiZlcnJvcl0pOwotICAgIGlmIChlcnJvcikgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3
aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29kZSk7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgYXV0byB3
cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFdURk1vdmUo
YXZBc3NldFdyaXRlciksIFdURk1vdmUoZmlsZVBhdGgpKSk7Cit1c2luZyBuYW1lc3BhY2UgUEFM
OwogCi0gICAgaWYgKGhhc0F1ZGlvICYmICF3cml0ZXItPnNldEF1ZGlvSW5wdXQoKSkKK1JlZlB0
cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgYXV0
byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGhhc0F1
ZGlvLCB3aWR0aCAmJiBoZWlnaHQpKTsKKyAgICBpZiAoIXdyaXRlci0+aW5pdGlhbGl6ZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gd3JpdGVyOworfQogCi0gICAgaWYg
KHdpZHRoICYmIGhlaWdodCkgewotICAgICAgICBpZiAoIXdyaXRlci0+c2V0VmlkZW9JbnB1dCh3
aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KK3ZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNh
bGxiYWNrKHZvaWQgKm1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBDTUJ1ZmZlclF1ZXVlVHJp
Z2dlclRva2VuKQoreworICAgIGF1dG8gKndyaXRlciA9IHN0YXRpY19jYXN0PE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyKj4obWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOworICAgIHdyaXRl
ci0+cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKK30KIAotICAgIHJl
dHVybiBXVEZNb3ZlKHdyaXRlcik7Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpj
b21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkICptZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlciwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbikKK3sKKyAgICBhdXRvICp3cml0
ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcio+KG1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyKTsKKyAgICB3cml0ZXItPnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9T
YW1wbGVCdWZmZXJzKCk7CiB9CiAKLU1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcihSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4mJiBhdkFzc2V0V3Jp
dGVyLCBTdHJpbmcmJiBmaWxlUGF0aCkKLSAgICA6IG1fd3JpdGVyKFdURk1vdmUoYXZBc3NldFdy
aXRlcikpCi0gICAgLCBtX3BhdGgoV1RGTW92ZShmaWxlUGF0aCkpCitNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9vbCBoYXNBdWRpbywgYm9v
bCBoYXNWaWRlbykKKyAgICA6IG1faGFzQXVkaW8oaGFzQXVkaW8pCisgICAgLCBtX2hhc1ZpZGVv
KGhhc1ZpZGVvKQogewogfQogCkBAIC0xMzksMTQwICsxNjAsMjM4IEBAIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgIGNsZWFyKCk7
CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKCkKK2Jvb2wgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmluaXRpYWxpemUoKQogewotICAgIGlmIChtX3ZpZGVv
SW5wdXQpIHsKLSAgICAgICAgbV92aWRlb0lucHV0LmNsZWFyKCk7Ci0gICAgICAgIGRpc3BhdGNo
X3JlbGVhc2UobV92aWRlb1B1bGxRdWV1ZSk7CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Cisg
ICAgbV93cml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkg
aW5pdFdpdGhGaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7CisgICAgaWYg
KGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRl
IEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAobG9u
ZyllcnJvci5jb2RlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fd3Jp
dGVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aFdyaXRlcjogdGhpc10pOworICAgIFttX3dyaXRlci5nZXQoKSBzZXREZWxlZ2F0ZTpt
X3dyaXRlckRlbGVnYXRlLmdldCgpXTsKKworICAgIGlmIChtX2hhc0F1ZGlvKSB7CisgICAgICAg
IG1fYXVkaW9Db21wcmVzc29yID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUo
Y29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2ssIHRoaXMpOworICAgICAgICBpZiAo
IW1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICBpZiAobV9hdWRpb0lucHV0KSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1dC5jbGVhcigpOwotICAg
ICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fYXVkaW9QdWxsUXVldWUpOworICAgIGlmIChtX2hhc1Zp
ZGVvKSB7CisgICAgICAgIG1fdmlkZW9Db21wcmVzc29yID0gVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpjcmVhdGUoa0NNVmlkZW9Db2RlY1R5cGVfSDI2NCwgY29tcHJlc3NlZFZpZGVvT3V0
cHV0QnVmZmVyQ2FsbGJhY2ssIHRoaXMpOworICAgICAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29y
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAobV93cml0ZXIpCi0g
ICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBtX2Rh
dGEgPSBudWxscHRyOwotICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZSht
X2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bnVsbHB0cik7Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29t
cHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpCit7CisgICAgQVNTRVJUKG1faGFzVmlkZW8pOwor
ICAgIGlmICghbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIG1fdmlkZW9Gb3Jt
YXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24obV92aWRl
b0NvbXByZXNzb3ItPmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpKTsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10geworICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmIChtX2hhc0F1ZGlvICYmICFtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24p
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFydEFzc2V0V3JpdGVy
KCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCisg
ICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOwogfQog
Ci1ib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRWaWRlb0lucHV0KGludCB3aWR0
aCwgaW50IGhlaWdodCkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NO
ZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9J
bnB1dCk7Ci0gICAgCi0gICAgTlNEaWN0aW9uYXJ5ICpjb21wcmVzc2lvblByb3BlcnRpZXMgPSBA
ewotICAgICAgICBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgOiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDp3aWR0aCAqIGhlaWdodCAqIDEyXSwKLSAgICAgICAgQVZWaWRlb0V4cGVjdGVkU291cmNl
RnJhbWVSYXRlS2V5IDogQCgzMCksCi0gICAgICAgIEFWVmlkZW9NYXhLZXlGcmFtZUludGVydmFs
S2V5IDogQCgxMjApLAotICAgICAgICBBVlZpZGVvUHJvZmlsZUxldmVsS2V5IDogQVZWaWRlb1By
b2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xldmVsCi0gICAgfTsKLQotICAgIE5TRGljdGlvbmFyeSAq
dmlkZW9TZXR0aW5ncyA9IEB7Ci0gICAgICAgIEFWVmlkZW9Db2RlY0tleTogQVZWaWRlb0NvZGVj
SDI2NCwKLSAgICAgICAgQVZWaWRlb1dpZHRoS2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp3
aWR0aF0sCi0gICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6IFtOU051bWJlciBudW1iZXJXaXRoSW50
OmhlaWdodF0sCi0gICAgICAgIEFWVmlkZW9Db21wcmVzc2lvblByb3BlcnRpZXNLZXk6IGNvbXBy
ZXNzaW9uUHJvcGVydGllcwotICAgIH07CisgICAgQVNTRVJUKG1faGFzQXVkaW8pOworICAgIGlm
ICghbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIG1fYXVkaW9Gb3JtYXREZXNj
cmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24obV9hdWRpb0NvbXBy
ZXNzb3ItPmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10geworICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIChtX2hhc1ZpZGVvICYmICFtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24pCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFydEFzc2V0V3JpdGVyKCk7Cisg
ICAgICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCisgICAgICAg
IHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworfQorCit2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKCkKK3sKKyAgICBp
ZiAobV9oYXNWaWRlbykgeworICAgICAgICBtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFU
eXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6
bV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7CisgICAgICAgIFttX3ZpZGVvQXNzZXRX
cml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICAgICAg
aWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQu
Z2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJ
bnB1dCBmb3IgdmlkZW8iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCld
OworICAgIH0KICAgICAKLSAgICBtX3ZpZGVvSW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZB
c3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZp
ZGVvIG91dHB1dFNldHRpbmdzOnZpZGVvU2V0dGluZ3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsK
LSAgICBbbV92aWRlb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOwor
ICAgIGlmIChtX2hhc0F1ZGlvKSB7CisgICAgICAgIG1fYXVkaW9Bc3NldFdyaXRlcklucHV0ID0g
YWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhN
ZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczpuaWwgc291cmNlRm9ybWF0
SGludDptX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCldKTsKKyAgICAgICAgW21fYXVkaW9B
c3NldFdyaXRlcklucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOworICAg
ICAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBjYW5BZGRJbnB1dDptX2F1ZGlvQXNzZXRXcml0ZXJJ
bnB1dC5nZXQoKV0pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIGNh
bkFkZElucHV0IGZvciBhdWRpbyIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIFttX3dyaXRlci5nZXQoKSBhZGRJbnB1dDptX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5n
ZXQoKV07CisgICAgfQogICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElucHV0Om1fdmlk
ZW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV92aWRlb0lucHV0ID0gbnVsbHB0cjsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgdmlkZW8gaW5wdXQgaXMgbm90
IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBzdGFydFdyaXRpbmddKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIHN0YXJ0V3JpdGluZyIpOworICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIFttX3dyaXRlciBhZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldOwot
ICAgIG1fdmlkZW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVWaWRl
b1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisKKyAg
ICBbbV93cml0ZXIuZ2V0KCkgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOmtDTVRpbWVaZXJvXTsK
KworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisKKyAgICBtX2hhc1N0YXJ0
ZWRXcml0aW5nID0gdHJ1ZTsKK30KKworYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fYXVkaW9D
b21wcmVzc29yKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIVttX2F1ZGlvQXNz
ZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGF1dG8gYnVmZmVyID0gbV9hdWRpb0NvbXByZXNzb3ItPnRha2VPdXRwdXRT
YW1wbGVCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpi
dWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpzZXRBdWRpb0lucHV0KCkKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpCiB7Ci0gICAgQVNTRVJU
KCFtX2F1ZGlvSW5wdXQpOworICAgIGlmICghbV92aWRlb0NvbXByZXNzb3IpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIE5TRGljdGlvbmFyeSAqYXVkaW9TZXR0aW5ncyA9IEB7Ci0gICAg
ICAgIEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4MDAwKSwKLSAgICAgICAgQVZGb3JtYXRJREtl
eSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAotICAgICAgICBBVk51bWJlck9mQ2hhbm5lbHNL
ZXkgOiBAKDEpLAotICAgICAgICBBVlNhbXBsZVJhdGVLZXkgOiBAKDIyMDUwKQotICAgIH07Cisg
ICAgaWYgKCFbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFd
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2F1ZGlvSW5wdXQgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpB
Vk1lZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdzOmF1ZGlvU2V0dGluZ3Mgc291cmNlRm9ybWF0
SGludDpuaWxdKTsKLSAgICBbbV9hdWRpb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxU
aW1lOnRydWVdOwotICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElucHV0Om1fYXVkaW9J
bnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV9hdWRpb0lucHV0ID0gbnVsbHB0cjsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgYXVkaW8gaW5wdXQgaXMgbm90IGFs
bG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7CisgICAgYXV0byBidWZmZXIgPSBt
X3ZpZGVvQ29tcHJlc3Nvci0+dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOworICAgIGlmICghYnVm
ZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFttX3dyaXRlciBhZGRJbnB1
dDptX2F1ZGlvSW5wdXQuZ2V0KCldOwotICAgIG1fYXVkaW9QdWxsUXVldWUgPSBkaXNwYXRjaF9x
dWV1ZV9jcmVhdGUoIldlYkNvcmVBdWRpb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BB
VENIX1FVRVVFX1NFUklBTCk7CisKKyAgICBtX2xhc3RWaWRlb1ByZXNlbnRhdGlvblRpbWUgPSBD
TVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIuZ2V0KCkpOworICAg
IG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lID0gQ01TYW1wbGVCdWZmZXJHZXREZWNvZGVUaW1lU3Rh
bXAoYnVmZmVyLmdldCgpKTsKKyAgICBtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMgPSB0cnVlOwor
CisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpi
dWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpCit7CisgICAgd2hp
bGUgKGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpIHx8IGFwcGVuZENvbXByZXNz
ZWRBdWRpb1NhbXBsZUJ1ZmZlcigpKSB7IH07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBl
bmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3JpdGVySW5wdXQgKmFz
c2V0V3JpdGVySW5wdXQsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBkZWNv
ZGluZ1RpbWVTdGFtcCkKK3sKKyAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nSW5mbyA9IHsg
a0NNVGltZUludmFsaWQsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZGVjb2RpbmdUaW1lU3RhbXB9
OworCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyID0gTlVMTDsKKyAgICBhdXRvIGVycm9y
ID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgdHJ1ZSwg
TlVMTCwgTlVMTCwgTlVMTCwgMCwgMSwgJnRpbWluZ0luZm8sIDAsIE5VTEwsICZidWZmZXIpOwor
ICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
Ik1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0
aW9uTWFya2VyIGZhaWxlZCBDTVNhbXBsZUJ1ZmZlckNyZWF0ZSB3aXRoICVkIiwgZXJyb3IpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRihi
dWZmZXIpOworCisgICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NNU2Ft
cGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwga0NGQm9v
bGVhblRydWUsIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisgICAgaWYgKCFb
YXNzZXRXcml0ZXJJbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6c2FtcGxlQnVmZmVyLmdldCgpXSkK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlciBhcHBlbmRTYW1wbGVCdWZmZXIgdG8gd3JpdGVyIGlucHV0IGZhaWxlZCIpOwor
fQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRFbmRPZlZpZGVvU2Ft
cGxlRHVyYXRpb25JZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
W21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgeworICAg
ICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihtX3ZpZGVvQXNzZXRX
cml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1lLCBtX2xhc3RWaWRl
b0RlY29kaW5nVGltZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGFwcGVuZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVkKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKKy8qCisgICAgYXV0byBibG9jayA9IG1ha2VCbG9j
a1B0cihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KHdlYWtUaGlzKSB7CisgICAgICAgICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlv
bk1hcmtlcihtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9QcmVzZW50
YXRpb25UaW1lLCBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSk7CisgICAgICAgICAgICBbbV92aWRl
b0Fzc2V0V3JpdGVySW5wdXQgbWFya0FzRmluaXNoZWRdOworICAgICAgICB9CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7CisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0
IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCkgdXNpbmdCbG9jazpibG9jay5nZXQoKV07CisqLworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhcHBlbmRDb21wcmVzc2Vk
U2FtcGxlQnVmZmVycygpOworICAgIGFwcGVuZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlvbklmTmVl
ZGVkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQoreworICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93
cml0ZXIuY2xlYXIoKTsKKworICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGF1dG8gY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKK30KKworCiBzdGF0aWMgaW5saW5l
IFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50
VGltZVN0YW1wKENNU2FtcGxlQnVmZmVyUmVmIG9yaWdpbmFsQnVmZmVyKQogewogICAgIENNVGlt
ZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsK
ICAgICBDTUl0ZW1Db3VudCBjb3VudCA9IDA7CiAgICAgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVU
aW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIDAsIG5pbCwgJmNvdW50KTsKLSAgICAKKwog
ICAgIFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWVJbmZvKGNvdW50KTsKICAgICBDTVNh
bXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgY291bnQs
IHRpbWVJbmZvLmRhdGEoKSwgJmNvdW50KTsKLSAgICAKLSAgICBmb3IgKENNSXRlbUNvdW50IGkg
PSAwOyBpIDwgY291bnQ7IGkrKykgeworCisgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgY291bnQ7
IGkrKykgewogICAgICAgICB0aW1lSW5mb1tpXS5kZWNvZGVUaW1lU3RhbXAgPSBrQ01UaW1lSW52
YWxpZDsKICAgICAgICAgdGltZUluZm9baV0ucHJlc2VudGF0aW9uVGltZVN0YW1wID0gc3RhcnRU
aW1lOwogICAgIH0KLSAgICAKKwogICAgIENNU2FtcGxlQnVmZmVyUmVmIG5ld0J1ZmZlciA9IG51
bGxwdHI7Ci0gICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdU
aW1pbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5m
by5kYXRhKCksICZuZXdCdWZmZXIpOwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoYXV0byBlcnJv
ciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgb3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5mby5kYXRhKCksICZuZXdCdWZmZXIp
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXIgQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAg
IHJldHVybiBhZG9wdENGKG5ld0J1ZmZlcik7CiB9Ci0KKyAgICAKIHZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZUJ1ZmZlcikKIHsKLSAgICBBU1NFUlQobV92aWRlb0lucHV0KTsKLSAgICBpZiAobV9p
c1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGlu
ZykgewotICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7Ci0gICAgICAgICAg
ICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9y
IGNvZGUgJWxkIiwgKGxvbmcpW21fd3JpdGVyIGVycm9yXSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgW21fd3JpdGVyIHN0YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpD
TUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKV07Ci0gICAgICAgIG1faGFz
U3RhcnRlZFdyaXRpbmcgPSB0cnVlOwotICAgICAgICBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwotICAgICAgICBbbV92aWRlb0lucHV0IHJl
cXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fdmlkZW9QdWxsUXVldWUgdXNpbmdCbG9j
azpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSAgICAg
ICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgaXNSZWFkeUZv
ck1vcmVNZWRpYURhdGFdKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2NrKTsKLSAgICAgICAgICAgICAg
ICBpZiAobV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fdmlkZW9CdWZmZXJQb29sLnRh
a2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwotICAgICAg
ICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdl
dCgpXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IHdoaWxlICh0
cnVlKTsKLSAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX3ZpZGVvQnVmZmVyUG9vbC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBbbV92aWRlb0lucHV0IG1hcmtBc0ZpbmlzaGVk
XTsKLSAgICAgICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZS5zaWduYWwo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfV07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgYXV0byBidWZmZXJXaXRoQ3VycmVudFRpbWUgPSBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJl
bnRUaW1lU3RhbXAoc2FtcGxlQnVmZmVyKTsKLSAgICBpZiAoIWJ1ZmZlcldpdGhDdXJyZW50VGlt
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVv
TG9jayk7Ci0gICAgbV92aWRlb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUoYnVmZmVyV2l0aEN1
cnJlbnRUaW1lKSk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3Qgc2V0IHRoZSB0aW1lc3Rh
bXBzIGlmIHRoZXkgYXJlIGFscmVhZHkgc2V0LgorICAgIGlmIChhdXRvIGJ1ZmZlcldpdGhDdXJy
ZW50VGltZSA9IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFtcChzYW1wbGVCdWZm
ZXIpKQorICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+YWRkU2FtcGxlQnVmZmVyKGJ1ZmZlcldp
dGhDdXJyZW50VGltZS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNRm9y
bWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29uc3QgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCkBAIC0yODAsNjggKzM5OSwzOSBAQCBz
dGF0aWMgaW5saW5lIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRp
b0Zvcm1hdERlc2NyaXB0aW9uKGNvbgogICAgIGF1dG8gYmFzaWNEZXNjcmlwdGlvbiA9IFdURjo6
Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRlc2NyaXB0aW9uLnBsYXRm
b3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CiAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJl
ZiBmb3JtYXQgPSBudWxscHRyOwogICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvRm9ybWF0RGVzY3Jp
cHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzaWNEZXNjcmlwdGlvbiwgMCwgTlVM
TCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdCk7Ci0gICAgaWYgKGVycm9yKQorICAgIGlmIChlcnJv
cikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIHJldHVy
biBhZG9wdENGKGZvcm1hdCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxl
QnVmZmVyUmVmPiBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMo
Q01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXQsIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAg
ICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xv
Y2soKSk7Ci0gICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKLSAg
ICBhdXRvIGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlw
dGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZmFsc2UsIE5VTEwsIE5VTEwsIGZvcm1h
dCwgc2FtcGxlQ291bnQsIHN0YXJ0VGltZSwgTlVMTCwgJnNhbXBsZUJ1ZmZlcik7Ci0gICAgaWYg
KGVycm9yKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYWRvcHRDRihzYW1w
bGVCdWZmZXIpOwotfQotCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRB
dWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwg
c2l6ZV90IHNhbXBsZUNvdW50KQorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZm
ZXJSZWY+IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBk
YXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgV1RG
OjpNZWRpYVRpbWUmIHRpbWUsIHNpemVfdCBzYW1wbGVDb3VudCkKIHsKLSAgICBBU1NFUlQobV9h
dWRpb0lucHV0KTsKLSAgICBpZiAoKCFtX2hhc1N0YXJ0ZWRXcml0aW5nICYmIG1fdmlkZW9JbnB1
dCkgfHwgbV9pc1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKICAgICBhdXRvIGZvcm1hdCA9IGNy
ZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOwogICAgIGlmICghZm9ybWF0
KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1faXNGaXJzdEF1ZGlvU2FtcGxlKSB7Ci0gICAg
ICAgIGlmICghbV92aWRlb0lucHV0KSB7Ci0gICAgICAgICAgICAvLyBhdWRpby1vbmx5IHJlY29y
ZGluZy4KLSAgICAgICAgICAgIGlmICghW21fd3JpdGVyIHN0YXJ0V3JpdGluZ10pIHsKLSAgICAg
ICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgW21fd3JpdGVyIHN0YXJ0U2Vzc2lvbkF0U291cmNl
VGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKV07Ci0gICAgICAg
ICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBtX2lz
Rmlyc3RBdWRpb1NhbXBsZSA9IGZhbHNlOwotICAgICAgICBSZWZQdHI8TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwotICAgICAgICBbbV9hdWRpb0lucHV0
IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fYXVkaW9QdWxsUXVldWUgdXNpbmdC
bG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSAg
ICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAoIVttX2F1ZGlvSW5wdXQgaXNSZWFk
eUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2NrKTsKLSAgICAgICAgICAg
ICAgICBpZiAobV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fYXVkaW9CdWZmZXJQb29s
LnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwotICAg
ICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQo
KV07Ci0gICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsKLSAgICAgICAgICAgIGlmIChtX2lzU3Rv
cHBlZCAmJiBtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBb
bV9hdWRpb0lucHV0IG1hcmtBc0ZpbmlzaGVkXTsKLSAgICAgICAgICAgICAgICBtX2ZpbmlzaFdy
aXRpbmdBdWRpb1NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfV07
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
QnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNy
ZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZmFs
c2UsIE5VTEwsIE5VTEwsIGZvcm1hdC5nZXQoKSwgc2FtcGxlQ291bnQsIHRvQ01UaW1lKHRpbWUp
LCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBjcmVh
dGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KKyAgICBhdXRvIGJ1ZmZl
ciA9IGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKIAotICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gY3Jl
YXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKGZvcm1hdC5nZXQoKSwg
c2FtcGxlQ291bnQpOwotICAgIGlmICghc2FtcGxlQnVmZmVyKQotICAgICAgICByZXR1cm47Ci0g
ICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZl
ckxpc3Qoc2FtcGxlQnVmZmVyLmdldCgpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCBkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxpc3Q+KGRhdGEpLmxpc3QoKSk7
Ci0gICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm47CisgICAgZXJyb3IgPSBDTVNhbXBsZUJ1
ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0KGJ1ZmZlci5nZXQoKSwga0NGQWxs
b2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9C
dWZmZXJMaXN0PihkYXRhKS5saXN0KCkpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIENN
U2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3QgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4g
YnVmZmVyOworfQogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7Ci0g
ICAgbV9hdWRpb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUoc2FtcGxlQnVmZmVyKSk7Cit2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcihjb25z
dCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0aW1lLCBzaXplX3Qgc2FtcGxlQ291
bnQpCit7CisgICAgaWYgKGF1dG8gc2FtcGxlQnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZm
ZXIoZGF0YSwgZGVzY3JpcHRpb24sIHRpbWUsIHNhbXBsZUNvdW50KSkKKyAgICAgICAgbV9hdWRp
b0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkpOwogfQogCiB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKQEAgLTM1MCwz
NSArNDQwLDQwIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRp
bmcoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzU3RvcHBlZCA9IHRydWU7CisKKyAgICBp
ZiAobV92aWRlb0NvbXByZXNzb3IpCisgICAgICAgIG1fdmlkZW9Db21wcmVzc29yLT5maW5pc2go
KTsKKyAgICBpZiAobV9hdWRpb0NvbXByZXNzb3IpCisgICAgICAgIG1fYXVkaW9Db21wcmVzc29y
LT5maW5pc2goKTsKKwogICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGluZykKICAgICAgICAgcmV0
dXJuOwogICAgIEFTU0VSVChbbV93cml0ZXIgc3RhdHVzXSA9PSBBVkFzc2V0V3JpdGVyU3RhdHVz
V3JpdGluZyk7Ci0gICAgaWYgKG1fdmlkZW9JbnB1dCkKLSAgICAgICAgbV9maW5pc2hXcml0aW5n
VmlkZW9TZW1hcGhvcmUud2FpdCgpOwotCi0gICAgaWYgKG1fYXVkaW9JbnB1dCkKLSAgICAgICAg
bV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUud2FpdCgpOwogCiAgICAgbV9pc1N0b3BwaW5n
ID0gdHJ1ZTsKLSAgICBbbV93cml0ZXIgZmluaXNoV3JpdGluZ1dpdGhDb21wbGV0aW9uSGFuZGxl
cjpbdGhpcywgd2Vha1B0ciA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1B0ciA9IFdURk1vdmUod2Vha1B0ciksIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCldKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtQdHIpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIGlm
IChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICAgICAgICAgIG1fZmV0Y2hE
YXRhQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgZmx1c2hDb21w
cmVzc2VkU2FtcGxlQnVmZmVycyhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG1faGFzU3Rh
cnRlZFdyaXRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIG1faXNGaXJzdEF1ZGlvU2FtcGxlID0g
dHJ1ZTsKLSAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgIH0pOwotICAgICAgICBtX2Zpbmlz
aFdyaXRpbmdTZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgfV07Ci0gICAgbV9maW5pc2hXcml0aW5n
U2VtYXBob3JlLndhaXQoKTsKKyAgICAgICAgW21fd3JpdGVyIGZsdXNoXTsKKyAgICAgICAgW21f
d3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgICAgIG1faXNTdG9wcGluZyA9IGZhbHNlOworICAgICAgICAgICAg
ICAgIGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gV1RGTW92ZShtX2RhdGEpOworICAgICAgICAgICAgICAgICAgICBt
X2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgY2xl
YXIoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9XTsKKyAgICB9KTsKIH0KIAogdm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0zOTIs
NiArNDg3LDI1IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShidWZmZXIpKTsKIH0KIAordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6YXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAo
IW1fZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBz
aXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBz
aXplKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIW1fZGF0YSkgeworICAgICAg
ICBtX2RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
bV9kYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElP
TikKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczZmIxZWVhZTdkNGE0
NTVlMzU0YTE2ZWI2YTY4NDY4ZWQ0MTJlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2FGaWxlQmFzZWQubW0KQEAgLTAsMCArMSwzODMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgIkF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3Qu
aCIKKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlci5oPgorI2luY2x1ZGUgPEFW
Rm91bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQuaD4KKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9u
U29mdExpbmsuaD4KKworI3VuZGVmIEFWRW5jb2RlckJpdFJhdGVLZXkKKyNkZWZpbmUgQVZFbmNv
ZGVyQml0UmF0ZUtleSBnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKyN1bmRl
ZiBBVkZvcm1hdElES2V5CisjZGVmaW5lIEFWRm9ybWF0SURLZXkgZ2V0QVZGb3JtYXRJREtleVdp
dGhGYWxsYmFjaygpCisjdW5kZWYgQVZOdW1iZXJPZkNoYW5uZWxzS2V5CisjZGVmaW5lIEFWTnVt
YmVyT2ZDaGFubmVsc0tleSBnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2soKQor
I3VuZGVmIEFWU2FtcGxlUmF0ZUtleQorI2RlZmluZSBBVlNhbXBsZVJhdGVLZXkgZ2V0QVZTYW1w
bGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBu
YW1lc3BhY2UgUEFMOworCitzdGF0aWMgTlNTdHJpbmcgKmdldEFWRm9ybWF0SURLZXlXaXRoRmFs
bGJhY2soKQoreworICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURL
ZXkoKSkKKyAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5
KCk7CisKKyAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRm9y
bWF0SURLZXkiKTsKKyAgICByZXR1cm4gQCJBVkZvcm1hdElES2V5IjsKK30KKworc3RhdGljIE5T
U3RyaW5nICpnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2soKQoreworICAgIGlm
IChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgpKQorICAg
ICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgp
OworCisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVk51bWJl
ck9mQ2hhbm5lbHNLZXkiKTsKKyAgICByZXR1cm4gQCJBVk51bWJlck9mQ2hhbm5lbHNLZXkiOwor
fQorCitzdGF0aWMgTlNTdHJpbmcgKmdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCit7
CisgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCisg
ICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCk7CisK
KyAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWU2FtcGxlUmF0
ZUtleSIpOworICAgIHJldHVybiBAIkFWU2FtcGxlUmF0ZUtleSI7Cit9CisKK3N0YXRpYyBOU1N0
cmluZyAqZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCit7CisgICAgaWYgKFBB
TDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgpKQorICAgICAgICBy
ZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVLZXkoKTsKKworICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZFbmNvZGVyQml0UmF0
ZUtleSIpOworICAgIHJldHVybiBAIkFWRW5jb2RlckJpdFJhdGVLZXkiOworfQorCitSZWZQdHI8
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpj
cmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIE5TU3Ry
aW5nICpkaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJ2
aWRlb3MiKTsKKyAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIi8lbGxkLm1wNCIsIENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2Nr
KCkpLnZhbHVlXTsKKyAgICBOU1N0cmluZyAqcGF0aCA9IFtkaXJlY3Rvcnkgc3RyaW5nQnlBcHBl
bmRpbmdTdHJpbmc6ZmlsZW5hbWVdOworCisgICAgTlNVUkwgKm91dHB1dFVSTCA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6cGF0aF07CisgICAgU3RyaW5nIGZpbGVQYXRoID0gW3BhdGggVVRGOFN0
cmluZ107CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byBhdkFzc2V0V3JpdGVy
ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRXaXRoVVJM
Om91dHB1dFVSTCBmaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7CisgICAg
aWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3Jl
YXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAo
bG9uZyllcnJvci5jb2RlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
YXV0byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFdU
Rk1vdmUoYXZBc3NldFdyaXRlciksIFdURk1vdmUoZmlsZVBhdGgpKSk7CisKKyAgICBpZiAoaGFz
QXVkaW8gJiYgIXdyaXRlci0+c2V0QXVkaW9JbnB1dCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKKyAgICAgICAgaWYgKCF3cml0ZXItPnNl
dFZpZGVvSW5wdXQod2lkdGgsIGhlaWdodCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICByZXR1cm4gV1RGTW92ZSh3cml0ZXIpOworfQorCitNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNz
ZXRXcml0ZXI+JiYgYXZBc3NldFdyaXRlciwgU3RyaW5nJiYgZmlsZVBhdGgpCisgICAgOiBtX3dy
aXRlcihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpKQorICAgICwgbV9wYXRoKFdURk1vdmUoZmlsZVBh
dGgpKQoreworfQorCitNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyKCkKK3sKKyAgICBjbGVhcigpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpjbGVhcigpCit7CisgICAgaWYgKG1fdmlkZW9JbnB1dCkgeworICAgICAg
ICBtX3ZpZGVvSW5wdXQuY2xlYXIoKTsKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3ZpZGVv
UHVsbFF1ZXVlKTsKKyAgICB9CisgICAgaWYgKG1fYXVkaW9JbnB1dCkgeworICAgICAgICBtX2F1
ZGlvSW5wdXQuY2xlYXIoKTsKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2F1ZGlvUHVsbFF1
ZXVlKTsKKyAgICB9CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dyaXRlci5jbGVhcigp
OworCisgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG51bGxwdHIpOworfQorCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBBU1NFUlQo
IW1fdmlkZW9JbnB1dCk7CisgICAgCisgICAgTlNEaWN0aW9uYXJ5ICpjb21wcmVzc2lvblByb3Bl
cnRpZXMgPSBAeworICAgICAgICBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgOiBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDp3aWR0aCAqIGhlaWdodCAqIDEyXSwKKyAgICAgICAgQVZWaWRlb0V4cGVj
dGVkU291cmNlRnJhbWVSYXRlS2V5IDogQCgzMCksCisgICAgICAgIEFWVmlkZW9NYXhLZXlGcmFt
ZUludGVydmFsS2V5IDogQCgxMjApLAorICAgICAgICBBVlZpZGVvUHJvZmlsZUxldmVsS2V5IDog
QVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xldmVsCisgICAgfTsKKworICAgIE5TRGlj
dGlvbmFyeSAqdmlkZW9TZXR0aW5ncyA9IEB7CisgICAgICAgIEFWVmlkZW9Db2RlY0tleTogQVZW
aWRlb0NvZGVjSDI2NCwKKyAgICAgICAgQVZWaWRlb1dpZHRoS2V5OiBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDp3aWR0aF0sCisgICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6IFtOU051bWJlciBudW1i
ZXJXaXRoSW50OmhlaWdodF0sCisgICAgICAgIEFWVmlkZW9Db21wcmVzc2lvblByb3BlcnRpZXNL
ZXk6IGNvbXByZXNzaW9uUHJvcGVydGllcworICAgIH07CisgICAgCisgICAgbV92aWRlb0lucHV0
ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdp
dGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBvdXRwdXRTZXR0aW5nczp2aWRlb1NldHRpbmdz
IHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7CisgICAgW21fdmlkZW9JbnB1dCBzZXRFeHBlY3RzTWVk
aWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICAKKyAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJ
bnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldKSB7CisgICAgICAgIG1fdmlkZW9JbnB1dCA9IG51bGxw
dHI7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIHZpZGVvIGlu
cHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFttX3dyaXRlciBhZGRJbnB1dDptX3ZpZGVvSW5w
dXQuZ2V0KCldOworICAgIG1fdmlkZW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUo
IldlYkNvcmVWaWRlb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnNldEF1ZGlvSW5wdXQoKQoreworICAgIEFTU0VSVCghbV9hdWRpb0lucHV0KTsKKwor
ICAgIE5TRGljdGlvbmFyeSAqYXVkaW9TZXR0aW5ncyA9IEB7CisgICAgICAgIEFWRW5jb2RlckJp
dFJhdGVLZXkgOiBAKDI4MDAwKSwKKyAgICAgICAgQVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9y
bWF0TVBFRzRBQUMpLAorICAgICAgICBBVk51bWJlck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAorICAg
ICAgICBBVlNhbXBsZVJhdGVLZXkgOiBAKDIyMDUwKQorICAgIH07CisKKyAgICBtX2F1ZGlvSW5w
dXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0
V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdzOmF1ZGlvU2V0dGlu
Z3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsKKyAgICBbbV9hdWRpb0lucHV0IHNldEV4cGVjdHNN
ZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOworICAgIAorICAgIGlmICghW21fd3JpdGVyIGNhbkFk
ZElucHV0Om1fYXVkaW9JbnB1dC5nZXQoKV0pIHsKKyAgICAgICAgbV9hdWRpb0lucHV0ID0gbnVs
bHB0cjsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgYXVkaW8g
aW5wdXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgW21fd3JpdGVyIGFkZElucHV0Om1fYXVkaW9J
bnB1dC5nZXQoKV07CisgICAgbV9hdWRpb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0
ZSgiV2ViQ29yZUF1ZGlvUmVjb3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVf
U0VSSUFMKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSBSZXRhaW5QdHI8
Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFtcChD
TVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikKK3sKKyAgICBDTVRpbWUgc3RhcnRUaW1l
ID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7CisgICAgQ01JdGVt
Q291bnQgY291bnQgPSAwOworICAgIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0Fy
cmF5KG9yaWdpbmFsQnVmZmVyLCAwLCBuaWwsICZjb3VudCk7CisgICAgCisgICAgVmVjdG9yPENN
U2FtcGxlVGltaW5nSW5mbz4gdGltZUluZm8oY291bnQpOworICAgIENNU2FtcGxlQnVmZmVyR2V0
U2FtcGxlVGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0
YSgpLCAmY291bnQpOworICAgIAorICAgIGZvciAoQ01JdGVtQ291bnQgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKSB7CisgICAgICAgIHRpbWVJbmZvW2ldLmRlY29kZVRpbWVTdGFtcCA9IGtDTVRpbWVJ
bnZhbGlkOworICAgICAgICB0aW1lSW5mb1tpXS5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBzdGFy
dFRpbWU7CisgICAgfQorICAgIAorICAgIENNU2FtcGxlQnVmZmVyUmVmIG5ld0J1ZmZlciA9IG51
bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdU
aW1pbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5m
by5kYXRhKCksICZuZXdCdWZmZXIpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0Q0YobmV3QnVmZmVyKTsKK30KKwordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZm
ZXJSZWYgc2FtcGxlQnVmZmVyKQoreworICAgIEFTU0VSVChtX3ZpZGVvSW5wdXQpOworICAgIGlm
IChtX2lzU3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2hhc1N0YXJ0ZWRX
cml0aW5nKSB7CisgICAgICAgIGlmICghW21fd3JpdGVyIHN0YXJ0V3JpdGluZ10pIHsKKyAgICAg
ICAgICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGgg
ZXJyb3IgY29kZSAlbGQiLCAobG9uZylbbV93cml0ZXIgZXJyb3JdKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VU
aW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKKyAgICAgICAg
bV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7CisgICAgICAgIFJlZlB0cjxNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7CisgICAgICAgIFttX3ZpZGVvSW5w
dXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6bV92aWRlb1B1bGxRdWV1ZSB1c2lu
Z0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewor
ICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBpc1Jl
YWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOworICAgICAgICAg
ICAgICAgIGlmIChtX3ZpZGVvQnVmZmVyUG9vbC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gbV92aWRlb0J1ZmZlclBv
b2wudGFrZUZpcnN0KCk7CisgICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZm
ZXIuZ2V0KCldKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gd2hp
bGUgKHRydWUpOworICAgICAgICAgICAgaWYgKG1faXNTdG9wcGVkICYmIG1fdmlkZW9CdWZmZXJQ
b29sLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFttX3ZpZGVvSW5wdXQgbWFya0FzRmlu
aXNoZWRdOworICAgICAgICAgICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLnNp
Z25hbCgpOworICAgICAgICAgICAgfQorICAgICAgICB9XTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBhdXRvIGJ1ZmZlcldpdGhDdXJyZW50VGltZSA9IGNvcHlTYW1wbGVCdWZmZXJXaXRo
Q3VycmVudFRpbWVTdGFtcChzYW1wbGVCdWZmZXIpOworICAgIGlmICghYnVmZmVyV2l0aEN1cnJl
bnRUaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
dmlkZW9Mb2NrKTsKKyAgICBtX3ZpZGVvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShidWZmZXJX
aXRoQ3VycmVudFRpbWUpKTsKK30KKworc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXRE
ZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKK3sKKyAgICBhdXRvIGJhc2ljRGVzY3JpcHRp
b24gPSBXVEY6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlw
dGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOworICAgIENNRm9ybWF0RGVz
Y3JpcHRpb25SZWYgZm9ybWF0ID0gbnVsbHB0cjsKKyAgICBhdXRvIGVycm9yID0gQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJhc2ljRGVzY3JpcHRp
b24sIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXQpOworICAgIGlmIChlcnJvcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0Q0YoZm9ybWF0KTsKK30KKwor
c3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUF1ZGlvU2Ft
cGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZv
cm1hdCwgc2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIENNVGltZSBzdGFydFRpbWUgPSBDTUNs
b2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsKKyAgICBDTVNhbXBsZUJ1ZmZl
clJlZiBzYW1wbGVCdWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2Ft
cGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgZm9ybWF0LCBzYW1wbGVDb3VudCwgc3RhcnRUaW1l
LCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBhZG9wdENGKHNhbXBsZUJ1ZmZlcik7Cit9CisKK3ZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBzaXplX3Qgc2FtcGxlQ291bnQpCit7Cisg
ICAgQVNTRVJUKG1fYXVkaW9JbnB1dCk7CisgICAgaWYgKCghbV9oYXNTdGFydGVkV3JpdGluZyAm
JiBtX3ZpZGVvSW5wdXQpIHx8IG1faXNTdG9wcGVkKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byBmb3JtYXQgPSBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKKyAg
ICBpZiAoIWZvcm1hdCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2lzRmlyc3RBdWRpb1Nh
bXBsZSkgeworICAgICAgICBpZiAoIW1fdmlkZW9JbnB1dCkgeworICAgICAgICAgICAgLy8gYXVk
aW8tb25seSByZWNvcmRpbmcuCisgICAgICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRp
bmddKSB7CisgICAgICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFttX3dyaXRlciBzdGFydFNl
c3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2so
KSldOworICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSBmYWxzZTsKKyAgICAgICAgUmVmUHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKKyAgICAgICAg
W21fYXVkaW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX2F1ZGlvUHVs
bFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpXSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgaWYgKCFbbV9hdWRp
b0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7
CisgICAgICAgICAgICAgICAgaWYgKG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX2F1
ZGlvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsKKyAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2Nr
RWFybHkoKTsKKyAgICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZl
cjpidWZmZXIuZ2V0KCldOworICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7CisgICAgICAgICAg
ICBpZiAobV9pc1N0b3BwZWQgJiYgbV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07CisgICAgICAgICAgICAg
ICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH1dOworICAgIH0KKworICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gY3JlYXRlQXVk
aW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKGZvcm1hdC5nZXQoKSwgc2FtcGxl
Q291bnQpOworICAgIGlmICghc2FtcGxlQnVmZmVyKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byBlcnJvciA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3Qo
c2FtcGxlQnVmZmVyLmdldCgpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAwLCBkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxpc3Q+KGRhdGEpLmxpc3QoKSk7CisgICAg
aWYgKGVycm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fYXVkaW9Mb2NrKTsKKyAgICBtX2F1ZGlvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShzYW1w
bGVCdWZmZXIpKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJl
Y29yZGluZygpCit7CisgICAgaWYgKG1faXNTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2lzU3RvcHBlZCA9IHRydWU7CisgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKQorICAg
ICAgICByZXR1cm47CisgICAgQVNTRVJUKFttX3dyaXRlciBzdGF0dXNdID09IEFWQXNzZXRXcml0
ZXJTdGF0dXNXcml0aW5nKTsKKyAgICBpZiAobV92aWRlb0lucHV0KQorICAgICAgICBtX2Zpbmlz
aFdyaXRpbmdWaWRlb1NlbWFwaG9yZS53YWl0KCk7CisKKyAgICBpZiAobV9hdWRpb0lucHV0KQor
ICAgICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS53YWl0KCk7CisKKyAgICBtX2lz
U3RvcHBpbmcgPSB0cnVlOworICAgIFttX3dyaXRlciBmaW5pc2hXcml0aW5nV2l0aENvbXBsZXRp
b25IYW5kbGVyOlt0aGlzLCB3ZWFrUHRyID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUg
eworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrUHRyID0gV1RGTW92ZSh3ZWFr
UHRyKSwgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9w
YXRoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1B0cikKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1faXNTdG9wcGluZyA9IGZhbHNlOworICAgICAg
ICAgICAgaWYgKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICAgICAg
bV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKworICAg
ICAgICAgICAgbV9pc1N0b3BwZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1faGFzU3RhcnRlZFdy
aXRpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIG1faXNGaXJzdEF1ZGlvU2FtcGxlID0gdHJ1ZTsK
KyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIH0pOworICAgICAgICBtX2ZpbmlzaFdyaXRp
bmdTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgfV07CisgICAgbV9maW5pc2hXcml0aW5nU2VtYXBo
b3JlLndhaXQoKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKG1faXNTdG9wcGluZykgeworICAgICAgICBtX2Zl
dGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJ1ZmZlciA9IFdURk1vdmUobV9kYXRh
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzc1ZDI5NjNlZjQ0NTFmZWY5ZDc2NDBmZWMwZjA3MzJkMjM5MWQ5
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTAsMCArMSw3MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+Cisj
aW5jbHVkZSA8VmlkZW9Ub29sQm94L1ZURXJyb3JzLmg+CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1
ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1
ZVZUQ29tcHJlc3Npb25TZXNzaW9uKiAgVlRDb21wcmVzc2lvblNlc3Npb25SZWY7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKENNVmlkZW9Db2RlY1R5
cGUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsK
KyAgICB+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAgICB2b2lkIGZpbmlzaCgp
OworICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBDTVNh
bXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBSZXRhaW5QdHI8Q01T
YW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSk7
CisKKyAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9p
ZCogY2FsbGJhY2tPYmplY3QpOworCisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2Ft
cGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zv
cm1hdERlc2NyaXB0aW9uUmVmKTsKKworICAgIHN0YXRpYyB2b2lkIHZpZGVvQ29tcHJlc3Npb25D
YWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3Ms
IENNU2FtcGxlQnVmZmVyUmVmKTsKKworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNw
YXRjaFF1ZXVlOworICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZl
clF1ZXVlOworICAgIFJldGFpblB0cjxWVENvbXByZXNzaW9uU2Vzc2lvblJlZj4gbV92dFNlc3Np
b247CisKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07CisKKyAgICBDTVZpZGVvQ29k
ZWNUeXBlIG1fb3V0cHV0Q29kZWNUeXBlOworICAgIGZsb2F0IG1fbWF4S2V5RnJhbWVJbnRlcnZh
bER1cmF0aW9uIHsgMi4wIH07CisgICAgdW5zaWduZWQgbV9leHBlY3RlZEZyYW1lUmF0ZSB7IDMw
IH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDhmZTQzMjk1ZWY1MmE2NzkwZmYxZGVjYWNh
NmYzMGQ5YmJiYWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTAs
MCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPENv
cmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgor
I2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25TZXNzaW9uLmg+CisjaW1wb3J0IDx3
dGYvU29mdExpbmtpbmcuaD4KKworI2ltcG9ydCA8cGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5r
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBQQUw7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjpjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUsIENN
QnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0
KQoreworICAgIGF1dG8gY29tcHJlc3NvciA9IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I+KG5ldyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iob3V0cHV0Q29k
ZWNUeXBlKSk7CisgICAgaWYgKCFjb21wcmVzc29yLT5pbml0aWFsaXplKGNhbGxiYWNrLCBjYWxs
YmFja09iamVjdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb21wcmVz
c29yOworfQorCitWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlwZSkKKyAgICA6IG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkgfQorICAgICwg
bV9vdXRwdXRDb2RlY1R5cGUgeyBvdXRwdXRDb2RlY1R5cGUgfQoreworfQorCitWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQoreworICAg
IGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9z
ZXJpYWxEaXNwYXRjaFF1ZXVlKTsKK30KKworYm9vbCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9p
ZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgQ01CdWZmZXJRdWV1ZVJlZiBvdXRwdXRCdWZmZXJR
dWV1ZTsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxl
QnVmZmVycygpLCAmb3V0cHV0QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHVuYWJsZSB0byBj
cmVhdGUgYnVmZmVyIHF1ZXVlICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIG1fb3V0cHV0QnVmZmVyUXVldWUgPSBvdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBD
TUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgY2Fs
bGJhY2ssIGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hlbkRhdGFCZWNv
bWVzUmVhZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKKworICAgIG1faXNFbmNvZGluZyA9IHRydWU7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpmaW5pc2goKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBe
eworICAgICAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1l
cyhtX3Z0U2Vzc2lvbi5nZXQoKSwga0NNVGltZUludmFsaWQpOworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0
cHV0QnVmZmVyUXVldWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJv
ciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1
ZU1hcmtFbmRPZkRhdGEgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICAgICAgbV9pc0Vu
Y29kaW5nID0gZmFsc2U7CisgICAgfSk7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwgT1NT
dGF0dXMgc3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVy
KQoreworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKHN0YXR1cywgTWVkaWFTdHJlYW0sICJWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrIHN0YXR1cyBp
cyAlZCIsIHN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyAhPSBub0VycikKKyAgICAgICAgcmV0dXJu
OworCisgICAgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yICpjb21wcmVzc29yID0gc3RhdGlj
X2Nhc3Q8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4ocmVmQ29uKTsKKworICAgIGF1dG8g
ZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZShjb21wcmVzc29yLT5tX291dHB1dEJ1ZmZlclF1
ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRp
YVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKK30KKworYm9vbCBWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9u
UmVmIGZvcm1hdERlc2NyaXB0aW9uKQoreworICAgIENNVmlkZW9EaW1lbnNpb25zIGRpbWVuc2lv
bnMgPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25zKGZvcm1hdERlc2NyaXB0
aW9uKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgTlNEaWN0aW9uYXJ5ICplbmNvZGVyU3BlY2lm
aWNhdGlvbnMgPSBuaWw7CisjZWxzZQorICAgIE5TRGljdGlvbmFyeSAqZW5jb2RlclNwZWNpZmlj
YXRpb25zID0gQHsoX19icmlkZ2UgTlNTdHJpbmcgKilrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0
aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXI6QFlFU307CisjZW5kaWYK
KworICAgIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHZ0U2Vzc2lvbjsKKyAgICBhdXRvIGVycm9y
ID0gVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGltZW5z
aW9ucy53aWR0aCwgZGltZW5zaW9ucy5oZWlnaHQsIG1fb3V0cHV0Q29kZWNUeXBlLCAoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKWVuY29kZXJTcGVjaWZpY2F0aW9ucywgTlVMTCwgTlVMTCwgdmlk
ZW9Db21wcmVzc2lvbkNhbGxiYWNrLCB0aGlzLCAmdnRTZXNzaW9uKTsKKyAgICBpZiAoZXJyb3Ip
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisgICAgbV92dFNlc3Npb24gPSBh
ZG9wdENGKHZ0U2Vzc2lvbik7CisKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1f
dnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lLCBrQ0ZC
b29sZWFuVHJ1ZSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFt
LCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENv
bXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29t
cHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24sIChfX2JyaWRn
ZSBDRlR5cGVSZWYpQChtX21heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbikpOworICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01h
eEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICBl
cnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVz
c2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKUAo
bV9leHBlY3RlZEZyYW1lUmF0ZSkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBN
ZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9w
ZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOworCisgICAgLy8gRklYTUU6IFNldCB2aWRlbyBjb21wcmVzc2lvbiBy
YXRlLgorICAgIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFt
ZXMobV92dFNlc3Npb24uZ2V0KCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBN
ZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vz
c2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAg
IHJldHVybiBZRVM7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9j
ZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIW1f
dnRTZXNzaW9uKSB7CisgICAgICAgIGlmICghaW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVNhbXBs
ZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKGJ1ZmZlcikpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldEltYWdl
QnVmZmVyKGJ1ZmZlcik7CisgICAgYXV0byBwcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBs
ZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIpOworICAgIGF1dG8gZHVyYXRp
b24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7CisgICAgYXV0byBlcnJvciA9
IFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUobV92dFNlc3Npb24uZ2V0KCksIGltYWdl
QnVmZmVyLCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGR1cmF0aW9uLCBOVUxMLCB0aGlzLCBOVUxM
KTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKK30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgZGlz
cGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGlmICghbV9pc0Vu
Y29kaW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHByb2Nlc3NTYW1wbGVCdWZm
ZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVCdWZmZXJSZWYgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVybiAo
Q01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFk
KG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisKK1JldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVm
ZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nh
c3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1fb3V0cHV0QnVmZmVyUXVl
dWUuZ2V0KCkpKSkpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNDU0YjAzZDFkMDhiZjNlY2I5
YzU4MDAwMGQ0NTM3ZTRlNGFjOThmLi41ZGMwZGRlZGMzYjk1MDhhZDhlMTYyZmI2YzY2ZTM3OTQ3
ODNiMDBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDEtMjcgIHlvdWVubiBmYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJE
ZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sOgorICAg
ICAgICBVc2UgbWVkaWEgY2FwdHVyZSBpbnN0ZWFkIG9mIHdlYiBhdWRpbyBzaW5jZSB0aGVyZSBz
ZWVtcyB0byBiZSBzb21lIHVuc3RhYmlsaXR5IGluIHdlYiBhdWRpbyAtPiBzdHJlYW0gLT4gbWVk
aWEgcmVjb3JkZXIuCisgICAgICAgIHdoaWNoIHNob3VsZCBiZSBmaXhlZCBhcyBmb2xsb3ctdXAg
c3BlY2lmaWMgcGF0Y2hlcy4KKwogMjAyMC0wMS0yNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlk
QGFwcGxlLmNvbT4KIAogICAgICAgICBUaHJvdHRsaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZSBz
aG91bGQgYmUgY29udHJvbGxlZCBieSBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1h
dWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZh
aWxhYmxlLWdwdXByb2Nlc3MuaHRtbAppbmRleCAzMzMwNmRlNzk0N2JiYjkyNTczOTRjM2JhMTk2
MjAxYjA1ODQ3ODhiLi5kNjIwMTkzNGE5YTQ5ODM3MWVlMTJmMzg3NWM4MzU5ZGE5NDY3ODdkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZp
ZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sCkBAIC0yMyw1MSArMjMsOCBAQAogICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQogICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFVzZUdQ
VVByb2Nlc3NGb3JXZWJSVEModHJ1ZSk7CiAKLSAgICB2YXIgY29udGV4dDsKLSAgICB2YXIgZHJh
d1N0YXJ0VGltZTsKLQotICAgIGZ1bmN0aW9uIGNyZWF0ZVZpZGVvU3RyZWFtKCkgewotICAgICAg
ICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7Ci0gICAg
ICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKLSAgICAgICAgcmV0dXJuIGNh
bnZhcy5jYXB0dXJlU3RyZWFtKCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZG9SZWRJbWFnZURy
YXcoKSB7Ci0gICAgICAgIGlmIChjb250ZXh0KSB7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxT
dHlsZSA9ICIjZmYwMDAwIjsKLSAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgMjAw
LCAyMDApOwotICAgICAgICAgICAgaWYgKERhdGUubm93KCkgLSBkcmF3U3RhcnRUaW1lIDwgNTAw
KSB7Ci0gICAgICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShkb1JlZElt
YWdlRHJhdyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRyYXdTdGFy
dFRpbWUgPSBEYXRlLm5vdygpOwotICAgICAgICAgICAgICAgIGRvR3JlZW5JbWFnZURyYXcoKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGRvR3JlZW5J
bWFnZURyYXcoKSB7Ci0gICAgICAgIGlmIChjb250ZXh0KSB7Ci0gICAgICAgICAgICBjb250ZXh0
LmZpbGxTdHlsZSA9ICIjMDBmZjAwIjsKLSAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwg
MCwgMjAwLCAyMDApOwotICAgICAgICAgICAgaWYgKERhdGUubm93KCkgLSBkcmF3U3RhcnRUaW1l
IDwgMjAwMCkgewotICAgICAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
ZG9HcmVlbkltYWdlRHJhdyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBhc3luY190ZXN0KHQgPT4gewotICAgICAgICBjb25zdCBhYyA9IG5ldyBBdWRpb0NvbnRleHQo
KTsKLSAgICAgICAgY29uc3Qgb3NjID0gYWMuY3JlYXRlT3NjaWxsYXRvcigpOwotICAgICAgICBj
b25zdCBkZXN0ID0gYWMuY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOwotICAgICAgICBj
b25zdCBhdWRpbyA9IGRlc3Quc3RyZWFtOwotICAgICAgICBvc2MuY29ubmVjdChkZXN0KTsKLQot
ICAgICAgICBjb25zdCB2aWRlbyA9IGNyZWF0ZVZpZGVvU3RyZWFtKCk7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHModmlkZW8uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgsIDAsICJ2aWRlbyBtZWRpYXN0
cmVhbSBzdGFydHMgd2l0aCBubyBhdWRpbyB0cmFjayIpOwotICAgICAgICBhc3NlcnRfZXF1YWxz
KGF1ZGlvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAxLCAiYXVkaW8gbWVkaWFzdHJlYW0gc3Rh
cnRzIHdpdGggb25lIGF1ZGlvIHRyYWNrIik7Ci0gICAgICAgIHZpZGVvLmFkZFRyYWNrKGF1ZGlv
LmdldEF1ZGlvVHJhY2tzKClbMF0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHZpZGVvLmdldEF1
ZGlvVHJhY2tzKCkubGVuZ3RoLCAxLCAidmlkZW8gbWVkaWFzdHJlYW0gc3RhcnRzIHdpdGggb25l
IGF1ZGlvIHRyYWNrIik7Ci0gICAgICAgIGNvbnN0IHJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3Jk
ZXIodmlkZW8pOworICAgIGFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHJl
Y29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoeyBhdWRpbzogdHJ1ZSwgdmlkZW86IHRydWUgfSkpOwogICAgICAgICBsZXQg
bW9kZSA9IDA7CiAKICAgICAgICAgcmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gdC5zdGVwX2Z1
bmMoYmxvYkV2ZW50ID0+IHsKQEAgLTc4LDggKzM1LDYgQEAKICAgICAgICAgICAgIGFzc2VydF90
cnVlKGJsb2JFdmVudC5kYXRhLnNpemUgPiAwLCAndGhlIGJsb2Igc2hvdWxkIGNvbnRhaW4gc29t
ZSBidWZmZXJzJyk7CiAgICAgICAgICAgICB0LmRvbmUoKTsKICAgICAgICAgfSk7Ci0gICAgICAg
IGRyYXdTdGFydFRpbWUgPSBEYXRlLm5vdygpOwotICAgICAgICBkb1JlZEltYWdlRHJhdygpOwog
ICAgICAgICByZWNvcmRlci5zdGFydCgpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKHJlY29yZGVy
LnN0YXRlLCAncmVjb3JkaW5nJywgJ01lZGlhUmVjb3JkZXIgaGFzIGJlZW4gc3RhcnRlZCBzdWNj
ZXNzZnVsbHknKTsKICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388875</attachid>
            <date>2020-01-27 11:11:50 -0800</date>
            <delta_ts>2020-01-28 08:00:37 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206582-20200127201147.patch</filename>
            <type>text/plain</type>
            <size>139043</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjgwNWM4YzEyOTQ0MTU4
MTFjYTMzY2U0ODBkMGFiMDM5NzhjNDc1MC4uM2EyM2FkNTIxMDc3NDEwMGUxNmEwM2I0ZmNiYTY5
ZDZmYmZkM2UwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTAxLTI3ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
YWxsb3dzIHRvIGdyYWIgcmVjb3JkZWQgZGF0YSB3aGVuZXZlciB3YW50ZWQuCisgICAgICAgIFRo
aXMgZGVsZWdhdGUgcmVxdWlyZXMgcGFzc2luZyBjb21wcmVzc2VkIHNhbXBsZXMgdG8gQVZBc3Nl
dFdyaXRlci4KKyAgICAgICAgSW1wbGVtZW50IHZpZGVvIGVuY29kaW5nIGFuZCBhdWRpbyBlbmNv
ZGluZyBpbiBkZWRpY2F0ZWQgY2xhc3NlcyBhbmQgdXNlIHRoZXNlIGNsYXNzZXMgYmVmb3JlIGFk
ZGluZyBidWZmZXJzIHRvIEFWQXNzZXRXcml0ZXIuCisgICAgICAgIFNpbmNlIEFWQXNzZXRXcml0
ZXJEZWxlZ2F0ZSBpcyBBcHBsZSBTREsgb25seSwga2VlcCB0aGUgZXhpc3RpbmcgZmlsZSBiYXNl
ZCBpbXBsZW1lbnRhdGlvbiBhcyBhIGZhbGxiYWNrLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVBy
b2MpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0
QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVk
aW9Gb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0
aE51bVBhY2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1P
dXRwdXRQYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1w
bGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojpwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRp
b1NhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2Ft
cGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1w
bGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKToKKwogMjAyMC0wMS0yNyAg
QW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29ycmVjdCBWVFQg
Q3VlIFN0eWxlIGhhbmRsaW5nIHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwppbmRleCA4MTg1NDgzMjI2ZjVjYzFlNjVjZjRkYjg4NWM5NTlkMzQyZTNjZmYxLi43MzAz
ZmQzODY1MGQyNDFhZmUxOWM4ODhhM2I0NzdiNGEyM2U2NWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAyMC0wMS0yNyAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGlt
cGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDY1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24u
CisKKyAgICAgICAgQWRkIHNvZnQgbGluayBtYWNyb3MgZm9yIFZpZGVvVG9vbGJveCBhbmQgQXVk
aW9Ub29sYm94LgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcDogQWRkZWQuCisgICAgICAg
ICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmg6IEFkZGVkLgorICAgICAgICAqIHBhbC9j
Zi9Db3JlTWVkaWFTb2Z0TGluay5jcHA6CisgICAgICAgICogcGFsL2NmL0NvcmVNZWRpYVNvZnRM
aW5rLmg6CisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDogQWRkZWQu
CisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg6IEFkZGVkLgorCiAyMDIw
LTAxLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
c29tZSB1bm5lZWRlZCBkZWZpbml0aW9ucyBmcm9tIFBsYXRmb3JtLmggZmFtaWx5IGhlYWRlcnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMGZiMTM3ZTU0NWQzNDAyOWIyMmNkMTgyZDNjMjRjNmVhNTQ4ODViNy4uZWJi
NTFkNTBjZDNhZDg1M2IzZWIxNjk2YTkzNjhjMjE3ZmJhMGMzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAyMC0wMS0yNyAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBN
ZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDY1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKToKKyAgICAgICAgVXNlIG5ldyBj
b25zdHJ1Y3Rvci4KKwogMjAyMC0wMS0yNyAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU1MTMxLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE0
MTlhYzk4YjRkMTkyYzlmMzYxZGIxOTc3M2YyYjZmYjhlMGM5Y2EuLjNmODE0NmFkMTU1YWZjYzA4
NThkNjhiM2QyNzRlMzkyZTBmZjQ3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Q
QUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFM
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNSw2ICsxMTUsMTAgQEAKIAkJMkUxMzQy
Q0MyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNBMjE1QUExMEEwMDcxOTlEMiAvKiBV
SUtpdFNvZnRMaW5rLmggKi87IH07CiAJCTJFMTM0MkNEMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtp
dFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkUxMzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi87IH07CiAJ
CTMxMzA4QjE0MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMwOEIxMzIwQTIxNzA1MDAz
RkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovOyB9OworCQk0MTZFOTk1MzIzREFFNkJFMDBF
ODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTEyM0RBRTZCRDAwRTg3MUNCIC8qIEF1ZGlv
VG9vbGJveFNvZnRMaW5rLmNwcCAqLzsgfTsKKwkJNDE2RTk5NTQyM0RBRTZCRTAwRTg3MUNCIC8q
IEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29m
dExpbmsuaCAqLzsgfTsKKwkJNDE2RTk5NTcyM0RBRUZGODAwRTg3MUNCIC8qIFZpZGVvVG9vbGJv
eFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNkU5OTU1MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAg
Ki87IH07CisJCTQxNkU5OTU4MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5
NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggKi87IH07CiAJCTQ0
Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Mjk1NkNDMjE4QTcyREUwMDgwREI1NCAvKiBS
ZXZlYWxTUEkuaCAqLzsgfTsKIAkJNDQ1MEZDOUYyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9v
a1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tICovOyB9
OwogCQk0NDUwRkNBMDIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlFMjFGNUY2
MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovOyB9OwpAQCAtMjkxLDYgKzI5NSwx
MCBAQAogCQkyRTEzNDJDQjIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJS2l0U29mdExpbmsubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzA4QjEzMjBBMjE3MDUwMDNGQjkyOSAvKiBT
eXN0ZW1QcmV2aWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVByZXZpZXdTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxMTlBNzgyMENDQjVGRjAwMkM2REM5IC8qIFdl
YktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJLaXRUYXJn
ZXRDb25kaXRpb25hbHMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
NkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAv
KiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBdWRpb1Rvb2xib3hTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExpbmsuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1NjIzREFFRkY3MDBFODcxQ0Ig
LyogVmlkZW9Ub29sYm94U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmlkZW9Ub29sYm94U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDQyOTU2Q0MyMThBNzJERTAwODBEQjU0IC8qIFJldmVhbFNQSS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXZlYWxTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVpY2tMb29rU29mdExpbmsubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAv
KiBRdWlja0xvb2tTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBR
dWlja0xvb2tTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI0LDgg
KzUzMiwxMiBAQAogCQkwQ0Y5OUNBNTFGNzM4NDFDMDA3RUU3OTMgLyogY2YgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNkU5OTUxMjNEQUU2QkQwMEU4
NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi8sCisJCQkJNDE2RTk5NTIyM0RBRTZC
RTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi8sCiAJCQkJMENGOTlDQTYxRjcz
ODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLywKIAkJCQkwQ0Y5OUNBNzFG
NzM4NDM3MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExpbmsuaCAqLywKKwkJCQk0MTZFOTk1NTIz
REFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovLAorCQkJCTQxNkU5
OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MTUsNiArNzI3
LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThCMjJCMzU5ODkwMDhEMEU4QiAvKiBBcHBT
U09Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDYyMkI4NTRBQjAwMzAxNDND
IC8qIEFwcFNTT1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTk5NTQyM0RBRTZCRTAwRTg3
MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDAyRTkz
QzIwNTZGQUE3MDBBMTM3OTcgLyogQXVkaW9Ub29sYm94U1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1NzJBMTA3ODIyQjQ1NkY1MDBGNDEwQzggLyogQXV0aEtpdFNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDc3RTg3QjIyMjZBNDYwMzAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLmgg
aW4gSGVhZGVycyAqLywKQEAgLTgzOCw2ICs4NTEsNyBAQAogCQkJCTJFMTM0MkNDMjE1QUExMEEw
MDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzVBRjkyMjFG
NDNBNEM3MDAyRUFDMDIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTQ3
MUYzQkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTZFOTk1ODIzREFFRkY4MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBDMkRBMTU5MUYzQkVCNDkwMERCQzMxNyAvKiBXZWJGaWx0ZXJFdmFs
dWF0b3JTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDgyNkY5MUY1NzYyOTIwMDQ3NzJBQyAv
KiBXZWJQYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtOTMwLDYgKzk0NCw3IEBACiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJNTdGRDMx
OEEyMkIzNTkzRTAwOEQwRThCIC8qIEFwcFNTT1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTA3N0U4N0IxMjI2QTQ2MDIwMEEyQUZGMCAvKiBBVkZvdW5kYXRp
b25Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBDNUZGRjBGMUY3OEQ5REEwMDlFRkYx
QSAvKiBDbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMENGOTlDQTgxRjczODQzNzAwN0VF
NzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTU2LDYgKzk3
MSw3IEBACiAJCQkJQTNBQjZFNTcxRjNEMUREQjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVu
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNjUxRjNEMjE3RjAwOUMxNEIxIC8qIFN5
c3RlbVNsZWVwTGlzdGVuZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTEzNDJDRDIxNUFB
MTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNkU5
OTU3MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBMTA4MjZGQTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwubW0gaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29m
dExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGlu
ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWNmNTUwNTZhY2RhNmY1NjUzYWRjN2UxN2VjMDJhMmQ4MjZlNDQ3
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29s
Ym94U29mdExpbmsuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPEF1ZGlvVG9v
bGJveC9BdWRpb0NvbnZlcnRlci5oPgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0Zvcm1h
dC5oPgorCisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdP
UktfRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHksIE9TU3Rh
dHVzLCAoQXVkaW9Gb3JtYXRQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGluU3BlY2lm
aWVyU2l6ZSwgY29uc3Qgdm9pZCogaW5TcGVjaWZpZXIsIFVJbnQzMiogaW9Qcm9wZXJ0eURhdGFT
aXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5Qcm9wZXJ0eUlELCBpblNwZWNpZmllclNp
emUsIGluU3BlY2lmaWVyLCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkpCitT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252
ZXJ0ZXJOZXcsIE9TU3RhdHVzLCAoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBp
blNvdXJjZUZvcm1hdCwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpbkRlc3Rp
bmF0aW9uRm9ybWF0LCBBdWRpb0NvbnZlcnRlclJlZiogb3V0QXVkaW9Db252ZXJ0ZXIpLCAoaW5T
b3VyY2VGb3JtYXQsIGluRGVzdGluYXRpb25Gb3JtYXQsIG91dEF1ZGlvQ29udmVydGVyKSkKK1NP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZl
cnRlclNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252
ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblBy
b3BlcnR5RGF0YVNpemUsIGNvbnN0IHZvaWQqIGluUHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252
ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW5Qcm9wZXJ0eURhdGFTaXplLCBpblByb3BlcnR5RGF0YSkp
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9D
b252ZXJ0ZXJHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlv
Q29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIq
IGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252
ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEp
KQorCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzMxMTg3MTc0YWMx
NTU0NDM3MWRlZTAzYjE0MzJlM2U2NTYzMmUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oCkBAIC0wLDAgKzEsNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorCisj
aW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hF
QURFUihQQUwsIEF1ZGlvVG9vbGJveCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
UEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHksIE9TU3RhdHVzLCAo
QXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0
eUlEIGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91dFBy
b3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlvUHJvcGVydHlE
YXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKyNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJHZXRQcm9w
ZXJ0eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eQorU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVy
dGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5T
b3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0aW5h
dGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGluU291
cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCisjZGVm
aW5lIEF1ZGlvQ29udmVydGVyTmV3IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0NvbnZlcnRl
ck5ldworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1
ZGlvQ29udmVydGVyU2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5B
dWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUlu
dDMyIGluUHJvcGVydHlEYXRhU2l6ZSwgY29uc3Qgdm9pZCogaW5Qcm9wZXJ0eURhdGEpLCAoaW5B
dWRpb0NvbnZlcnRlciwgaW5Qcm9wZXJ0eUlELCBpblByb3BlcnR5RGF0YVNpemUsIGluUHJvcGVy
dHlEYXRhKSkKKyNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSBzb2Z0TGlua19BdWRp
b1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHksIE9TU3Rh
dHVzLCAoQXVkaW9Gb3JtYXRQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGluU3BlY2lm
aWVyU2l6ZSwgY29uc3Qgdm9pZCogaW5TcGVjaWZpZXIsIFVJbnQzMiogaW9Qcm9wZXJ0eURhdGFT
aXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5Qcm9wZXJ0eUlELCBpblNwZWNpZmllclNp
emUsIGluU3BlY2lmaWVyLCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkpCisj
ZGVmaW5lIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlv
Rm9ybWF0R2V0UHJvcGVydHkKKworCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKaW5kZXggMmI4
MjMxMzY1Y2I5YWFmOTM1OTdmMTg3ZmEyMmMxNDliZTQyZmIzYS4uZGM4YWI0MWNiYzc4YmExOWNl
Y2RkYTdmY2ZhNzBkOTM1MDkzYzIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
Zi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAgU09GVF9MSU5LX0ZSQU1F
V09SS19GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhKQogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMsIE9TU3Rh
dHVzLCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVTb3VyY2VCdWZmZXIsIHNpemVfdCBvZmZzZXRUb0Rh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB2b2lkKiBkZXN0aW5hdGlvbiksICh0aGVTb3VyY2VCdWZm
ZXIsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZGVzdGluYXRpb24pKQogU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJHZXREYXRhTGVu
Z3RoLCBzaXplX3QsIChDTUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciksICh0aGVCdWZmZXIpKQor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZm
ZXJSZXBsYWNlRGF0YUJ5dGVzLCBPU1N0YXR1cywgKGNvbnN0IHZvaWQqIHNvdXJjZUJ5dGVzLCBD
TUJsb2NrQnVmZmVyUmVmIGRlc3RpbmF0aW9uQnVmZmVyLCBzaXplX3Qgb2Zmc2V0SW50b0Rlc3Rp
bmF0aW9uLCBzaXplX3QgZGF0YUxlbmd0aCksIChzb3VyY2VCeXRlcywgZGVzdGluYXRpb25CdWZm
ZXIsIG9mZnNldEludG9EZXN0aW5hdGlvbiwgZGF0YUxlbmd0aCkpCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVu
c2lvbnMsIENGRGljdGlvbmFyeVJlZiwgKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChk
ZXNjKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNh
bXBsZUJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVm
ZmVyLCBDTUJsb2NrQnVmZmVyUmVmLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkK
QEAgLTEzNiw2ICsxMzcsNyBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEJ1ZmZlckNvdW50LCBDTUl0ZQogU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRGaXJzdFBy
ZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChx
dWV1ZSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01C
dWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lLCAoQ01CdWZmZXJR
dWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQ
QUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJl
c2hvbGQsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSwgQ01CdWZmZXJRdWV1ZVRy
aWdnZXJDYWxsYmFjayB0cmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIHRyaWdnZXJSZWZjb24sIENNQnVm
ZmVyUXVldWVUcmlnZ2VyQ29uZGl0aW9uIHRyaWdnZXJDb25kaXRpb24sIENNSXRlbUNvdW50IHRy
aWdnZXJUaHJlc2hvbGQsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4qIHRyaWdnZXJUb2tlbk91
dCksIChxdWV1ZSwgdHJpZ2dlckNhbGxiYWNrLCB0cmlnZ2VyUmVmY29uLCB0cmlnZ2VyQ29uZGl0
aW9uLCB0cmlnZ2VyVGhyZXNob2xkLCB0cmlnZ2VyVG9rZW5PdXQpKQorU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRh
LCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogCiBTT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVu
dEtleV9Eb05vdERpc3BsYXksIENGU3RyaW5nUmVmKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfTm90U3luYywgQ0ZT
dHJpbmdSZWYpCkBAIC0xNjMsNiArMTY1LDkgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2UKIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZl
clNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0LCBPU1N0YXR1cywgKENNU2FtcGxlQnVm
ZmVyUmVmIHNidWYsIENGQWxsb2NhdG9yUmVmIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIENGQWxsb2Nh
dG9yUmVmIGJidWZNZW1vcnlBbGxvY2F0b3IsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBBdWRpb0J1
ZmZlckxpc3QgKmJ1ZmZlckxpc3QpLCAoc2J1ZiwgYmJ1ZlN0cnVjdEFsbG9jYXRvciwgYmJ1Zk1l
bW9yeUFsbG9jYXRvciwgZmxhZ3MsIGJ1ZmZlckxpc3QpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyU2V0RGF0YVJlYWR5LCBPU1N0
YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3Jl
YXRlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3QgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uKiBhc2JkLCBzaXplX3QgbGF5b3V0U2l6ZSwgY29uc3QgQXVkaW9D
aGFubmVsTGF5b3V0KiBsYXlvdXQsIHNpemVfdCBtYWdpY0Nvb2tpZVNpemUsIGNvbnN0IHZvaWQq
IG1hZ2ljQ29va2llLCBDRkRpY3Rpb25hcnlSZWYgZXh0ZW5zaW9ucywgQ01BdWRpb0Zvcm1hdERl
c2NyaXB0aW9uUmVmKiBvdXREZXNjKSwgKGFsbG9jYXRvciwgYXNiZCwgbGF5b3V0U2l6ZSwgbGF5
b3V0LCBtYWdpY0Nvb2tpZVNpemUsIG1hZ2ljQ29va2llLCBleHRlbnNpb25zLCBvdXREZXNjKSkK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZSwgY29uc3Qgdm9pZCosIChDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25SZWYgZGVzYywgc2l6ZV90KiBzaXplT3V0KSwgKGRlc2MsIHNpemVPdXQpKQor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQsIGNvbnN0IEF1ZGlvRm9ybWF0
TGlzdEl0ZW0gKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQor
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dl
dEhvc3RUaW1lQ2xvY2ssIENNQ2xvY2tSZWYsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldFRpbWUsIENNVGltZSwgKENN
Q2xvY2tSZWYgY2xvY2spLCAoY2xvY2spKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
UEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ2FsbEZvckVhY2hTYW1wbGUsIE9TU3RhdHVz
LCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgT1NTdGF0dXMgKCogQ01TQU1QTEVCVUZGRVJDQUxM
X05PRVNDQVBFIGNhbGxiYWNrKSggQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBDTUl0
ZW1Db3VudCBpbmRleCwgdm9pZCAqcmVmY29uKSwgdm9pZCAqcmVmY29uKSwgKHNidWYsIGNhbGxi
YWNrLCByZWZjb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3Jl
TWVkaWFTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0
TGluay5oCmluZGV4IDI2OGQxNjdmMjdkNmQzYWJiZmY1OTM1MjY3ZmMyMjIzOTEwMTBlM2QuLmEw
YzczMjkyNjJlMGIwNmNiYjZjMzZkODI4NDJmMmZkNmYxZjg0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKQEAgLTQ5LDYgKzQ5LDggQEAgU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJD
b3B5RGF0YUJ5dGVzLCBPU1N0YXQKICNkZWZpbmUgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMg
c29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERhdGFM
ZW5ndGgsIHNpemVfdCwgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZlcikp
CiAjZGVmaW5lIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoIHNvZnRMaW5rX0NvcmVNZWRpYV9D
TUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
UEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzLCBPU1N0YXR1cywg
KGNvbnN0IHZvaWQqIHNvdXJjZUJ5dGVzLCBDTUJsb2NrQnVmZmVyUmVmIGRlc3RpbmF0aW9uQnVm
ZmVyLCBzaXplX3Qgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUxlbmd0aCksIChz
b3VyY2VCeXRlcywgZGVzdGluYXRpb25CdWZmZXIsIG9mZnNldEludG9EZXN0aW5hdGlvbiwgZGF0
YUxlbmd0aCkpCisjZGVmaW5lIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRl
bnNpb25zLCBDRkRpY3Rpb25hcnlSZWYsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAo
ZGVzYykpCiAjZGVmaW5lIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucwogU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0VHlwZUlE
LCBDRlR5cGVJRCwgKHZvaWQpLCAoKSkKQEAgLTIyNyw2ICsyMjksOCBAQCBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNl
bnRhdGlvblRpbQogI2RlZmluZSBDTUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGltZVN0
YW1wIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGlt
ZVN0YW1wCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01C
dWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQsIE9TU3RhdHVzLCAo
Q01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayB0cmln
Z2VyQ2FsbGJhY2ssIHZvaWQqIHRyaWdnZXJSZWZjb24sIENNQnVmZmVyUXVldWVUcmlnZ2VyQ29u
ZGl0aW9uIHRyaWdnZXJDb25kaXRpb24sIENNSXRlbUNvdW50IHRyaWdnZXJUaHJlc2hvbGQsIENN
QnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4qIHRyaWdnZXJUb2tlbk91dCksIChxdWV1ZSwgdHJpZ2dl
ckNhbGxiYWNrLCB0cmlnZ2VyUmVmY29uLCB0cmlnZ2VyQ29uZGl0aW9uLCB0cmlnZ2VyVGhyZXNo
b2xkLCB0cmlnZ2VyVG9rZW5PdXQpKQogI2RlZmluZSBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdn
ZXJXaXRoSW50ZWdlclRocmVzaG9sZCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CdWZmZXJRdWV1ZUlu
c3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQKK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSwgT1NTdGF0
dXMsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKKyNkZWZpbmUgQ01CdWZmZXJR
dWV1ZU1hcmtFbmRPZkRhdGEgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVNYXJrRW5k
T2ZEYXRhCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBr
Q01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxheSwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5l
IGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5IGdldF9Db3JlTWVkaWFfa0NNU2Ft
cGxlQXR0YWNobWVudEtleV9Eb05vdERpc3BsYXkoKQpAQCAtMjU2LDYgKzI2MCw5IEBAIFNPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlm
aWNhdGlvbl9UaW1lSnVtcGVkCiAjZGVmaW5lIGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVK
dW1wZWQgZ2V0X0NvcmVNZWRpYV9rQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkKCkK
IFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVC
dWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwgQ0ZTdHJpbmdSZWYpCiAj
ZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVk
IGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVy
Q29uc3VtZWQoKQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRp
YSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUsIGNvbnN0IHZvaWQqLCAo
Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MsIHNpemVfdCogc2l6ZU91dCksIChkZXNj
LCBzaXplT3V0KSkKKyNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29r
aWUgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29v
a2llCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRp
b0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgY29uc3QgQXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVz
YyksIChkZXNjKSkKICNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9u
R2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
UEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2ssIE9TU3Rh
dHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxsb2NhdG9yLCB2b2lkKiBtZW1vcnlCbG9j
aywgc2l6ZV90IGJsb2NrTGVuZ3RoLCBDRkFsbG9jYXRvclJlZiBibG9ja0FsbG9jYXRvciwgY29u
c3QgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlKiBjdXN0b21CbG9ja1NvdXJjZSwgc2l6
ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIENNQmxvY2tCdWZmZXJGbGFncyBm
bGFncywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJlQWxsb2Nh
dG9yLCBtZW1vcnlCbG9jaywgYmxvY2tMZW5ndGgsIGJsb2NrQWxsb2NhdG9yLCBjdXN0b21CbG9j
a1NvdXJjZSwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncywgYmxvY2tCdWZmZXJPdXQp
KQpAQCAtMjY0LDYgKzI3MSw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwg
Q29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpCiAjZGVmaW5lIENN
U2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIgc29m
dExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFp
bmVkQmxvY2tCdWZmZXIKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBDTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMsIENNSXRlbUNvdW50LCAoQ01TYW1wbGVC
dWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKICNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXROdW1TYW1w
bGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVz
Y3JpcHRpb25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJ
dGVtICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKKyNkZWZp
bmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdCBzb2Z0
TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJs
ZUZvcm1hdAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENN
U2FtcGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlLCBPU1N0YXR1cywgKENGQWxsb2Nh
dG9yUmVmIGFsbG9jYXRvciwgQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZSYW5nZSBzYW1wbGVS
YW5nZSwgQ01TYW1wbGVCdWZmZXJSZWYqIHNCdWZPdXQpLCAoYWxsb2NhdG9yLCBzYnVmLCBzYW1w
bGVSYW5nZSwgc0J1Zk91dCkpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZl
ckZvclJhbmdlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZm
ZXJGb3JSYW5nZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEs
IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlU2l6ZUFycmF5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVm
ZmVyUmVmIHNidWYsIENNSXRlbUNvdW50IHNpemVBcnJheUVudHJpZXMsIHNpemVfdCogc2l6ZUFy
cmF5T3V0LCBDTUl0ZW1Db3VudCogc2l6ZUFycmF5RW50cmllc05lZWRlZE91dCksIChzYnVmLCBz
aXplQXJyYXlFbnRyaWVzLCBzaXplQXJyYXlPdXQsIHNpemVBcnJheUVudHJpZXNOZWVkZWRPdXQp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0
TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5r
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZmU2OTNjYTllNDFmZDg1OTdhODJiN2M3OTY2MDFiOGE3MGNhYTQ4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xi
b3hTb2Z0TGluay5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0IDxWaWRlb1Rvb2xi
b3gvVlRDb21wcmVzc2lvblNlc3Npb24uaD4KKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5o
PgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gpCisK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXBy
ZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVvQ29kZWNUeXBlIGNvZGVjVHlw
ZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBDRkRpY3Rpb25hcnlSZWYg
c291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRvclJlZiBjb21wcmVzc2VkRGF0
YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNrIG91dHB1dENhbGxiYWNrLCB2
b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lvblNlc3Npb25SZWYqIGNvbXBy
ZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBoZWlnaHQsIGNvZGVjVHlwZSwg
ZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgY29tcHJl
c3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRwdXRDYWxsYmFja1JlZkNvbiwg
Y29tcHJlc3Npb25TZXNzaW9uT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzLCBPU1N0
YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENNVGltZSBjb21wbGV0ZVVu
dGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSwgKHNlc3Npb24sIGNvbXBsZXRlVW50aWxQcmVzZW50
YXRpb25UaW1lU3RhbXApKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBWaWRl
b1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUsIE9TU3RhdHVzLCAoVlRD
b21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1ZmZlclJlZiBpbWFnZUJ1ZmZl
ciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lIGR1cmF0aW9uLCBDRkRpY3Rp
b25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lkKiBzb3VyY2VGcmFtZVJlZmNvbiwgVlRFbmNv
ZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChzZXNzaW9uLCBpbWFnZUJ1ZmZlciwgcHJlc2Vu
dGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJhbWVQcm9wZXJ0aWVzLCBzb3VyY2VGcmFtZVJl
ZmNvbiwgaW5mb0ZsYWdzT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
VmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcywg
T1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uKSwgKHNlc3Npb24pKQor
CisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTA4MzhhM2FmZGVkMmVk
N2Q2ZjhlMzQ4ZmZkZjZkZDExNTFiYzRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5oCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5j
bHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURF
UihQQUwsIFZpZGVvVG9vbGJveCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlLCBPU1N0YXR1cywgKENG
QWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIENN
VmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlLCBDRkRpY3Rpb25hcnlSZWYgZW5jb2RlclNwZWNpZmlj
YXRpb24sIENGRGljdGlvbmFyeVJlZiBzb3VyY2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMsIENGQWxs
b2NhdG9yUmVmIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBWVENvbXByZXNzaW9uT3V0cHV0Q2Fs
bGJhY2sgb3V0cHV0Q2FsbGJhY2ssIHZvaWQqIG91dHB1dENhbGxiYWNrUmVmQ29uLCBWVENvbXBy
ZXNzaW9uU2Vzc2lvblJlZiogY29tcHJlc3Npb25TZXNzaW9uT3V0KSwgKGFsbG9jYXRvciwgd2lk
dGgsIGhlaWdodCwgY29kZWNUeXBlLCBlbmNvZGVyU3BlY2lmaWNhdGlvbiwgc291cmNlSW1hZ2VC
dWZmZXJBdHRyaWJ1dGVzLCBjb21wcmVzc2VkRGF0YUFsbG9jYXRvciwgb3V0cHV0Q2FsbGJhY2ss
IG91dHB1dENhbGxiYWNrUmVmQ29uLCBjb21wcmVzc2lvblNlc3Npb25PdXQpKQorI2RlZmluZSBW
VENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVz
c2lvblNlc3Npb25DcmVhdGUKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlk
ZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzLCBPU1N0YXR1cywg
KFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENNVGltZSBjb21wbGV0ZVVudGlsUHJl
c2VudGF0aW9uVGltZVN0YW1wKSwgKHNlc3Npb24sIGNvbXBsZXRlVW50aWxQcmVzZW50YXRpb25U
aW1lU3RhbXApKQorI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzIHNv
ZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzCitT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVz
c2lvblNlc3Npb25FbmNvZGVGcmFtZSwgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJl
ZiBzZXNzaW9uLCBDVkltYWdlQnVmZmVyUmVmIGltYWdlQnVmZmVyLCBDTVRpbWUgcHJlc2VudGF0
aW9uVGltZVN0YW1wLCBDTVRpbWUgZHVyYXRpb24sIENGRGljdGlvbmFyeVJlZiBmcmFtZVByb3Bl
cnRpZXMsIHZvaWQqIHNvdXJjZUZyYW1lUmVmY29uLCBWVEVuY29kZUluZm9GbGFncyogaW5mb0Zs
YWdzT3V0KSwgKHNlc3Npb24sIGltYWdlQnVmZmVyLCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGR1
cmF0aW9uLCBmcmFtZVByb3BlcnRpZXMsIHNvdXJjZUZyYW1lUmVmY29uLCBpbmZvRmxhZ3NPdXQp
KQorI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lIHNvZnRMaW5rX1ZpZGVv
VG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lCitTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25QcmVw
YXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vz
c2lvbiksIChzZXNzaW9uKSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9F
bmNvZGVGcmFtZXMgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9uUHJl
cGFyZVRvRW5jb2RlRnJhbWVzCisKKyNlbmRpZiAvLyBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFl
N2Q3NGEwZTM5ZDJkNTM3NjAwNmZlNDEwNDEzYmQzMGNiNTJkN2YuLmYxNGZiMThkY2U2ZmY2ZmY5
ZWVhY2E2YTkyODdlY2ZiMWJiODY1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTcsNiArMTA5Nyw3IEBACiAJCTQxNkU2
RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFC
QjMxMTBEMDBCNzY0RTkgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJC
RDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDgg
LyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJs
ZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlu
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQx
NkY3OTkwMjNENzUwQ0YwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZGNzk4RjIz
RDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9Owog
CQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzI1M0E5MTM1NEJC
QkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovOyB9OwogCQk0MTc2MTJBRjFF
M0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQjFFM0E5OTNCMDBDM0Q4
MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgKi87IH07CiAJCTQxNzYxMkIwMUUzQTk5
NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyog
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovOyB9OwpAQCAtMTEzNyw2ICsxMTM4LDcgQEAKIAkJ
NDFCODc3NjIyM0RFMTA0NTAwMzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI4Nzc2
MDIzREUxMDQyMDAzNjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUJGMjA0OTIy
QkE3QkU4MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8q
IFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIw
MEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQ0Q2RjhDMjNENkU4MjEwMEIxNjQyMSAvKiBW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9OwogCQk0MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYg
LyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRDEyOUNFMUYzRDBF
RjYwMEQxNUU0NyAvKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OEQxRjM0QzI4MjAwNzk1NDg3IC8q
IFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmggKi87IH07CiAJCTQxRDEyOUQwMUYzRDBGMDUwMEQx
NUU0NyAvKiBDYWNoZVF1ZXJ5T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OUIxRjM0Q0VGMDAwNzk1NDg3IC8qIENhY2hlUXVlcnlP
cHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTc0MTksNiArNzQyMSw5IEBACiAJCTQxNkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3
b3JrTG9hZEluZm9ybWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5l
dHdvcmtMb2FkSW5mb3JtYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2
RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1By
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclJlcG9ydGluZ1By
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkY3OThEMjNENzUwQ0EwMDgy
OUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxNkY3OThGMjNENzUwQ0IwMDgyOUZDMSAvKiBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxNkY3OTkzMjNEOEI2OUMwMDgyOUZDMSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpT
RE9NV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RP
TVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNBODEzNTRC
QkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250
cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250
cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1MjYsNiArNzUz
MSw4IEBACiAJCTQxQzdFMTA1MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxQzdFMTA2MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVk
aWFTdHJlYW1UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwODFF
NkFBMzdDMDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRDZGODkyM0Q2RTgxQzAwQjE2NDIxIC8qIFZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhCRTUxRDQ2MjIyMDAwNzA3REM5IC8qIEZl
dGNoQm9keUNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNo
Qm9keUNvbnN1bWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDAxNUM4MEY0
QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkw
MjMsOCArMTkwMzAsMTMgQEAKIAkJNEQzQzA1RDQyMUFGNDgwOTAwRjI4OTBBIC8qIGNvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTZGNzk4RDIz
RDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8sCisJCQkJ
NDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5t
bSAqLywKIAkJCQk0RDczRjk0QzIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5oICovLAogCQkJCTRENzNGOTREMjE4QzRBODcwMDNBM0VENiAvKiBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tICovLAorCQkJCTQxNkY3OTkzMjNEOEI2OUMw
MDgyOUZDMSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tICov
LAorCQkJCTQxQ0Q2Rjg5MjNENkU4MUMwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaCAqLywKKwkJCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzY4Miw2ICszMzY5NCw3IEBACiAJCQkJQTk3ODdDQjQx
RjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAxRDBCRDAgLyogQXVk
aW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNkY3OTkwMjNENzUwQ0Yw
MDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLywK
IAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwRDgxNzE1RDJBMjAwNjU4
RDk4IC8qIEF1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNDQxNCw2ICszNDQyNyw3
IEBACiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNO
YW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZCQzRBRjMxODk4ODE1NjAwNDZFRTM4
IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTJENUExOEYxQzU0NTkyMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9i
akMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MUNENkY4QzIzRDZFODIxMDBCMTY0MjEgLyogVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwREUx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4
OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEMzM2RjY3MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQppbmRleCBmYThl
ZTBiMTAwY2YyMTQwODU2NTA1MTZiYzRlMjNhMWRiMTViZjM1Li5mYzI5MDhjZWJlM2Q3NGU1ZjE1
MTA0YTVkNzgyMzBjYmY5ZWQ1MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KQEAgLTk1
LDYgKzk1LDcgQEAgYm9vbCBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpzZXRTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVy
SU9TdXJmYWNlUHJvcGVydGllc0tleSA6IEB7IC8qZW1wdHkgZGljdGlvbmFyeSovIH0sCiAgICAg
fTsKIAorCiAgICAgTlNEaWN0aW9uYXJ5KiBwaXhlbEJ1ZmZlclBvb2xPcHRpb25zID0gQHsKICAg
ICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQb29sTWluaW11bUJ1ZmZl
ckNvdW50S2V5OiBAKDYpCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsLmNwcAppbmRleCA3M2YxZDBhMTUxOWYyYzAzYjkxZDY5NTEwNTEzNWE0ZjIwZDFkYTY0Li5k
NDc5MzQ4ODM4NjE5MTdmNmIzNjBlZjE0ZGQ4MmMxZTM1M2IyYWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKKyNp
bmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCiAjaW5jbHVkZSAiTWVk
aWFTYW1wbGUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKQEAgLTY4LDcgKzY5LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRl
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRvIHdyaXRlciA9
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYXVkaW9UcmFjaywgdmlkZW9UcmFj
ayk7CisKKyAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOworICAgIGlmICh2aWRlb1RyYWNr
KSB7CisgICAgICAgIGF1dG8mIHNldHRpbmdzID0gdmlkZW9UcmFjay0+c2V0dGluZ3MoKTsKKyAg
ICAgICAgd2lkdGggPSBzZXR0aW5ncy53aWR0aCgpOworICAgICAgICBoZWlnaHQgPSBzZXR0aW5n
cy5oZWlnaHQoKTsKKyAgICB9CisgICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6Y3JlYXRlKCEhYXVkaW9UcmFjaywgd2lkdGgsIGhlaWdodCk7CiAgICAgaWYgKCF3
cml0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDdiZjgxZTFkNDU2YzcwYzJk
OTQ0ZjcwNDVhOGUxNmUwNTliY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8Q29yZU1l
ZGlhL0NvcmVNZWRpYS5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAq
Q01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciog
QXVkaW9Db252ZXJ0ZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcj4gY3JlYXRlKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNr
T2JqZWN0KTsKKyAgICB+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAgICB2b2lk
IGZpbmlzaCgpOworICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsK
KyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBSZXRh
aW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKworcHJp
dmF0ZToKKyAgICBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKyAgICBib29sIGluaXRp
YWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3Qp
OworCisgICAgc3RhdGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVBy
b2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3Ry
ZWFtUGFja2V0RGVzY3JpcHRpb24qKiwgdm9pZCopOworCisgICAgdm9pZCBwcm9jZXNzU2FtcGxl
QnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRBdWRpb0NvbnZlcnRlckZv
clNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIEF1ZGlvRm9y
bWF0SUQpOworICAgIHNpemVfdCBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgVUludDMyLCBGbG9hdDMyKTsKKyAgICB2b2lkIGF0dGFj
aFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBSZXRhaW5QdHI8
TlNOdW1iZXI+IGdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCk7CisgICAgQ01TYW1wbGVCdWZm
ZXJSZWYgc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlv
QnVmZmVyTGlzdCk7CisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJU
aW1lKENNVGltZSk7CisgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNr
ZXRzKFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRp
b24qKik7CisKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJR
dWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9pbnB1dEJ1ZmZlclF1ZXVl
OworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIENNVGlt
ZSBtX2xvd1dhdGVyVGltZTsKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07CisKKyAg
ICBSZXRhaW5QdHI8QXVkaW9Db252ZXJ0ZXJSZWY+IG1fY29udmVydGVyOworICAgIEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBtX3NvdXJjZUZvcm1hdDsKKyAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gbV9kZXN0aW5hdGlvbkZvcm1hdDsKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXRE
ZXNjcmlwdGlvblJlZj4gbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAgIFJldGFp
blB0cjxOU051bWJlcj4gbV9nZHJDb3VudE51bTsKKyAgICBVSW50MzIgbV9tYXhPdXRwdXRQYWNr
ZXRTaXplOworICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX2Rlc3Rp
bmF0aW9uUGFja2V0RGVzY3JpcHRpb25zOworCisgICAgQ01UaW1lIG1fY3VycmVudE5hdGl2ZVBy
ZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAgICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0
aW9uVGltZVN0YW1wOworICAgIENNVGltZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb247CisKKyAg
ICBWZWN0b3I8Y2hhcj4gbV9zb3VyY2VCdWZmZXI7CisgICAgVmVjdG9yPGNoYXI+IG1fZGVzdGlu
YXRpb25CdWZmZXI7CisKKyAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVC
bG9ja0J1ZmZlcjsKKyAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7CisgICAgc2l6
ZV90IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXI7CisgICAgQXVkaW9Gb3JtYXRJ
RCBtX291dHB1dENvZGVjVHlwZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MzMzNzQ2YWRmYjAwM2RjNjYyMGEw
MmQxMDZjOGQ0MGIxY2ZkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpA
QCAtMCwwICsxLDQ5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvZGVjLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94
L0F1ZGlvQ29udmVydGVyLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+
CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgPHBhbC9jZi9B
dWRpb1Rvb2xib3hTb2Z0TGluay5oPgorCisjZGVmaW5lIExPV19XQVRFUl9USU1FX0lOX1NFQ09O
RCAwLjEKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxi
YWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcgQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yKCkpOworICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShjYWxs
YmFjaywgY2FsbGJhY2tPYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gY29tcHJlc3NvcjsKK30KKworQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IoKQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSB9CisgICAgLCBtX2xvd1dhdGVyVGltZSB7IENNVGlt
ZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQsIDEwMDApIH0KKyAgICAs
IG1fb3V0cHV0Q29kZWNUeXBlIHsga0F1ZGlvRm9ybWF0TVBFRzRBQUMgfQoreworfQorCitBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQor
eworICAgIGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAgICAgIGRpc3BhdGNoX3JlbGVh
c2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKK30KKworYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFj
aywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgQ01CdWZmZXJRdWV1ZVJlZiBpbnB1dEJ1
ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRT
YW1wbGVCdWZmZXJzKCksICZpbnB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZl
clF1ZXVlQ3JlYXRlIGZvciBtX2lucHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9pbnB1dEJ1ZmZlclF1ZXVl
ID0gYWRvcHRDRihpbnB1dEJ1ZmZlclF1ZXVlKTsKKworICAgIENNQnVmZmVyUXVldWVSZWYgb3V0
cHV0QnVmZmVyUXVldWU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNv
cnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBD
TUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX291dHB1dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fb3V0cHV0QnVm
ZmVyUXVldWUgPSBhZG9wdENGKG91dHB1dEJ1ZmZlclF1ZXVlKTsKKyAgICBDTUJ1ZmZlclF1ZXVl
SW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgY2FsbGJhY2ssIGNhbGxi
YWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hlbkRhdGFCZWNvbWVzUmVhZHksIGtD
TVRpbWVaZXJvLCBOVUxMKTsKKworICAgIG1faXNFbmNvZGluZyA9IHRydWU7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2goKQor
eworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBw
cm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKGtDTVRpbWVJbnZhbGlkKTsKKyAg
ICAgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0cHV0QnVm
ZmVyUXVldWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVk
aWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZU1hcmtF
bmRPZkRhdGEgZmFpbGVkICVkIiwgZXJyb3IpOworICAgICAgICBtX2lzRW5jb2RpbmcgPSBmYWxz
ZTsKKyAgICB9KTsKK30KKworYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRB
dWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRp
b25SZWYgZm9ybWF0RGVzY3JpcHRpb24sIEF1ZGlvRm9ybWF0SUQgb3V0cHV0Rm9ybWF0SUQpCit7
CisgICAgY29uc3QgYXV0byAqYXVkaW9Gb3JtYXRMaXN0SXRlbSA9IENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQoZm9ybWF0RGVzY3JpcHRpb24pOworICAg
IG1fc291cmNlRm9ybWF0ID0gYXVkaW9Gb3JtYXRMaXN0SXRlbS0+bUFTQkQ7CisKKyAgICBtZW1z
ZXQoJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIHNpemVvZihBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24pKTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9IG91dHB1dEZvcm1h
dElEOworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPSBtX3NvdXJjZUZvcm1h
dC5tU2FtcGxlUmF0ZTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1l
ID0gbV9zb3VyY2VGb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisKKyAgICBVSW50MzIgc2l6ZSA9
IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlv
Rm9ybWF0R2V0UHJvcGVydHkoa0F1ZGlvRm9ybWF0UHJvcGVydHlfRm9ybWF0SW5mbywgMCwgTlVM
TCwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkgeworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRpb0Zvcm1h
dEdldFByb3BlcnR5IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgY29udmVydGVyOworICAgIGlmIChh
dXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJOZXcoJm1fc291cmNlRm9ybWF0LCAmbV9kZXN0aW5h
dGlvbkZvcm1hdCwgJmNvbnZlcnRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJOZXcg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgbV9jb252ZXJ0ZXIgPSBhZG9wdENGKGNvbnZlcnRlcik7CisKKyAgICBzaXplX3QgY29va2ll
U2l6ZSA9IDA7CisgICAgY29uc3Qgdm9pZCAqY29va2llID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0
aW9uR2V0TWFnaWNDb29raWUoZm9ybWF0RGVzY3JpcHRpb24sICZjb29raWVTaXplKTsKKyAgICBp
ZiAoY29va2llU2l6ZSkgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVy
U2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Np
b25NYWdpY0Nvb2tpZSwgKFVJbnQzMiljb29raWVTaXplLCBjb29raWUpKSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tpZSBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9zb3VyY2VGb3JtYXQpOworICAgIGlmIChh
dXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwg
a0F1ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAmbV9z
b3VyY2VGb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ3VycmVu
dElucHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fc291cmNlRm9ybWF0Lm1CeXRlc1Bl
clBhY2tldCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIm1CeXRl
c1BlclBhY2tldCBzaG91bGQgbm90IGJlIHplcm8iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlvbkZvcm1hdCk7CisgICAgaWYg
KGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgp
LCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAm
bV9kZXN0aW5hdGlvbkZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0
ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZv
cm1hdC5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TVBFRzRBQUMpIHsKKyAgICAgICAgLy8gRklY
TUU6IFNldCBvdXRwdXRCaXRSYXRlIGFjY29yZGluZyBNZWRpYVJlY29yZGVyT3B0aW9ucy5hdWRp
b0JpdHNQZXJTZWNvbmQuCisgICAgICAgIFVJbnQzMiBvdXRwdXRCaXRSYXRlID0gNjQwMDA7Cisg
ICAgICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlID49IDQ0MTAwKQorICAg
ICAgICAgICAgb3V0cHV0Qml0UmF0ZSA9IDE5MjAwMDsKKyAgICAgICAgZWxzZSBpZiAobV9kZXN0
aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA8IDIyMDAwKQorICAgICAgICAgICAgb3V0cHV0Qml0
UmF0ZSA9IDMyMDAwOworCisgICAgICAgIHNpemUgPSBzaXplb2Yob3V0cHV0Qml0UmF0ZSk7Cisg
ICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZl
cnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSwgc2l6ZSwgJm91dHB1dEJp
dFJhdGUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckVuY29kZUJp
dFJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVz
UGVyUGFja2V0KSB7CisgICAgICAgIC8vIElmIHRoZSBkZXN0aW5hdGlvbiBmb3JtYXQgaXMgVkJS
LCB3ZSBuZWVkIHRvIGdldCBtYXggc2l6ZSBwZXIgcGFja2V0IGZyb20gdGhlIGNvbnZlcnRlci4K
KyAgICAgICAgc2l6ZSA9IHNpemVvZihtX21heE91dHB1dFBhY2tldFNpemUpOworCisgICAgICAg
IGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5n
ZXQoKSwga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVtT3V0cHV0UGFja2V0U2l6ZSwgJnNp
emUsICZtX21heE91dHB1dFBhY2tldFNpemUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtB
dWRpb0NvbnZlcnRlclByb3BlcnR5TWF4aW11bU91dHB1dFBhY2tldFNpemUgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBtX2Rlc3RpbmF0aW9uQnVmZmVyLnJlc2VydmVDYXBhY2l0eShjb21wdXRlQnVmZmVy
U2l6ZUZvckF1ZGlvRm9ybWF0KG1fZGVzdGluYXRpb25Gb3JtYXQsIG1fbWF4T3V0cHV0UGFja2V0
U2l6ZSwgTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EKSk7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9u
Rm9ybWF0Lm1CeXRlc1BlclBhY2tldCkKKyAgICAgICAgbV9kZXN0aW5hdGlvblBhY2tldERlc2Ny
aXB0aW9ucy5yZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpIC8g
bV9tYXhPdXRwdXRQYWNrZXRTaXplKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzaXplX3Qg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9y
bWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBmb3JtYXQsIFVJbnQzMiBtYXhPdXRwdXRQ
YWNrZXRTaXplLCBGbG9hdDMyIGR1cmF0aW9uKQoreworICAgIFVJbnQzMiBudW1QYWNrZXRzID0g
KGZvcm1hdC5tU2FtcGxlUmF0ZSAqIGR1cmF0aW9uKSAvIGZvcm1hdC5tRnJhbWVzUGVyUGFja2V0
OworICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gZm9ybWF0Lm1CeXRlc1BlclBhY2tldCA/
IGZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtYXhPdXRwdXRQYWNrZXRTaXplOworICAgIFVJbnQz
MiBidWZmZXJTaXplID0gbnVtUGFja2V0cyAqIG91dHB1dFBhY2tldFNpemU7CisKKyAgICByZXR1
cm4gYnVmZmVyU2l6ZTsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF0
dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAg
ICBpZiAoQ01USU1FX0lTX0lOVkFMSUQobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uKSkgeworICAg
ICAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07CisgICAgICAg
IFVJbnQzMiBzaXplID0gc2l6ZW9mKHByaW1lSW5mbyk7CisKKyAgICAgICAgaWYgKGF1dG8gZXJy
b3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9D
b252ZXJ0ZXJQcmltZUluZm8sICZzaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
Z2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3JlbWFpbmluZ1By
aW1lRHVyYXRpb24gPSBDTVRpbWVNYWtlKHByaW1lSW5mby5sZWFkaW5nRnJhbWVzLCBtX2Rlc3Rp
bmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlKTsKKyAgICB9CisKKyAgICBpZiAoQ01USU1FX0NPTVBB
UkVfSU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7Cisg
ICAgICAgIENNVGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24o
YnVmZmVyKTsKKyAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1pbmltdW0oc2Ft
cGxlRHVyYXRpb24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7CisgICAgICAgIENGRGljdGlv
bmFyeVJlZiB0cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRyaW1EdXJh
dGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgICAgIENNU2V0QXR0YWNobWVudChidWZm
ZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJp
bUF0U3RhcnREaWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOworICAgICAg
ICBDRlJlbGVhc2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAgbV9yZW1haW5pbmdQcmltZUR1
cmF0aW9uID0gQ01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uLCB0cmltRHVy
YXRpb24pOworICAgIH0KK30KKworUmV0YWluUHRyPE5TTnVtYmVyPiBBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCkKK3sKKyAgICBVSW50MzIg
ZGVsYXlTaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICB1aW50MzJfdCBvcmlnaW5hbERlbGF5
TW9kZSA9IDA7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5
KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCAmZGVsYXlT
aXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29k
ZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICB9CisKKyAgICB1aW50MzJfdCBvcHRpbWFsRGVsYXlNb2RlID0ga0F1ZGlv
Q29kZWNEZWxheU1vZGVfT3B0aW1hbDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVy
dGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxh
eU1vZGUsIGRlbGF5U2l6ZSwgJm9wdGltYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRp
bmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBVSW50MzIgcHJpbWVTaXplID0gc2l6
ZW9mKEF1ZGlvQ29kZWNQcmltZUluZm8pOworICAgIEF1ZGlvQ29kZWNQcmltZUluZm8gcHJpbWVJ
bmZvIHsgMCwgMCB9OworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9w
ZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1lSW5mbywgJnBy
aW1lU2l6ZSwgJnByaW1lSW5mbykpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1By
b3BlcnR5UHJpbWVJbmZvIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4g
bmlsOworICAgIH0KKworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9w
ZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSwgZGVs
YXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlv
Q29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0TlMoW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6KHByaW1lSW5mby5sZWFkaW5nRnJhbWVzIC8gbV9kZXN0aW5hdGlvbkZvcm1hdC5tRnJh
bWVzUGVyUGFja2V0KV0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKFVJbnQzMiBudW1QYWNrZXRz
LCBBdWRpb0J1ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3QpCit7CisgICAgVmVjdG9yPGNoYXI+IGNv
b2tpZTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAg
ICBVSW50MzIgY29va2llU2l6ZSA9IDA7CisKKyAgICAgICAgYXV0byBlcnJvciA9IEF1ZGlvQ29u
dmVydGVyR2V0UHJvcGVydHlJbmZvKG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJD
b21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgTlVMTCk7CisgICAgICAgIGlmICgo
ZXJyb3IgPT0gbm9FcnIpICYmICEhY29va2llU2l6ZSkgeworICAgICAgICAgICAgY29va2llLnJl
c2VydmVDYXBhY2l0eShjb29raWVTaXplKTsKKworICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3Ig
PSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252
ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgY29va2llLmRhdGEoKSkp
IHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9u
TWFnaWNDb29raWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIENNRm9ybWF0RGVz
Y3JpcHRpb25SZWYgZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICAgICAgaWYgKGF1
dG8gZXJyb3IgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIE5VTEwsIGNvb2tpZVNpemUsIGNvb2tpZS5k
YXRhKCksIE5VTEwsICZkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSkgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAgICAgICBtX2Rlc3Rp
bmF0aW9uRm9ybWF0RGVzY3JpcHRpb24gPSBhZG9wdENGKGRlc3RpbmF0aW9uRm9ybWF0RGVzY3Jp
cHRpb24pOworICAgICAgICBtX2dkckNvdW50TnVtID0gZ3JhZHVhbERlY29kZXJSZWZyZXNoQ291
bnQoKTsKKyAgICB9CisKKyAgICBjaGFyICpkYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGZpbGxC
dWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhKTsKKyAgICBzaXplX3QgZGF0YVNpemUgPSBmaWxs
QnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplOworCisgICAgQ01CbG9ja0J1ZmZl
clJlZiBibG9ja0J1ZmZlcjsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDcmVh
dGVXaXRoTWVtb3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZGF0YVNpemUsIGtD
RkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIDAsIGRhdGFTaXplLCBrQ01CbG9ja0J1ZmZlckFzc3Vy
ZU1lbW9yeU5vd0ZsYWcsICZibG9ja0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZl
ckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKGJsb2NrQnVmZmVy
KTsKKworICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMo
ZGF0YSwgYnVmZmVyLmdldCgpLCAwLCBkYXRhU2l6ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1
ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgfQorCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyOwor
ICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2Ny
aXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIuZ2V0KCksIHRydWUsIE5VTEwsIE5V
TEwsIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgbnVtUGFja2V0cywgbV9j
dXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wLCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVz
Y3JpcHRpb25zLmRhdGEoKSwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZh
aWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAg
IGlmIChbbV9nZHJDb3VudE51bSBpbnRWYWx1ZV0pCisgICAgICAgIENNU2V0QXR0YWNobWVudChz
YW1wbGVCdWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERlY29kZXJS
ZWZyZXNoLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKW1fZ2RyQ291bnROdW0uZ2V0KCksIGtDTUF0dGFj
aG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisKKyAgICByZXR1cm4gc2FtcGxlQnVmZmVyOwor
fQorCitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlvQ29udmVydGVy
Q29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiAqbnVtT3V0cHV0
UGFja2V0c1B0ciwgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0LCBBdWRpb1N0cmVhbVBhY2tl
dERlc2NyaXB0aW9uICoqcGFja2V0RGVzY3JpcHRpb25PdXQsIHZvaWQgKmF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvcikKK3sKKyAgICBhdXRvICpjb21wcmVzc29yID0gc3RhdGljX2Nhc3Q8QXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4oYXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKTsK
KyAgICByZXR1cm4gY29tcHJlc3Nvci0+cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRz
KG51bU91dHB1dFBhY2tldHNQdHIsIGJ1ZmZlckxpc3QsIHBhY2tldERlc2NyaXB0aW9uT3V0KTsK
K30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm92aWRlU291cmNl
RGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKiBudW1PdXRwdXRQYWNrZXRzUHRyLCBBdWRpb0J1
ZmZlckxpc3QqIGF1ZGlvQnVmZmVyTGlzdCwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioq
IHBhY2tldERlc2NyaXB0aW9uT3V0KQoreworICAgIGlmIChwYWNrZXREZXNjcmlwdGlvbk91dCkK
KyAgICAgICAgKnBhY2tldERlc2NyaXB0aW9uT3V0ID0gTlVMTDsKKworICAgIGNvbnN0IFVJbnQz
MiBudW1QYWNrZXRzVG9Db3B5ID0gKm51bU91dHB1dFBhY2tldHNQdHI7CisgICAgc2l6ZV90IG51
bUJ5dGVzVG9Db3B5ID0gKG51bVBhY2tldHNUb0NvcHkgKiBtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQ
ZXJQYWNrZXQpOworCisgICAgaWYgKGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnMgPT0g
MSkgeworICAgICAgICBzaXplX3QgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyID0gMDsKKwor
ICAgICAgICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobnVtQnl0ZXNUb0NvcHkpOwor
CisgICAgICAgIHdoaWxlIChudW1CeXRlc1RvQ29weSkgeworICAgICAgICAgICAgaWYgKG1fc2Ft
cGxlQmxvY2tCdWZmZXJTaXplIDw9IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIp
IHsKKyAgICAgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAg
ICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAg
ICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVmZmVyUXVl
dWUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nh
c3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1
ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0
Q0YoKENNQmxvY2tCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxl
QnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
Q01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAgICAgICAg
ICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1fY3Vy
cmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9j
a0J1ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX3NhbXBsZUJsb2NrQnVm
ZmVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2Nr
QnVmZmVyID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxv
Y2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHlGcm9tU2Ft
cGxlQmJ1ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVCbG9ja0J1ZmZlclNp
emUgLSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSk7CisgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJs
b2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyLCBudW1C
eXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAobV9zb3VyY2VCdWZmZXIuZGF0YSgpICsgY3VycmVu
dE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9j
a0J1ZmZlckNvcHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAg
ICAgICAgICAgICBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgKz0gbnVtQnl0ZXNUb0NvcHlG
cm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJs
b2NrQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9
IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVy
c1swXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOworICAgICAg
ICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fc291cmNl
Rm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lOworCisgICAgICAgICpudW1PdXRwdXRQYWNrZXRzUHRy
ID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNl
Rm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisgICAgICAgIHJldHVybiBub0VycjsKKyAgICB9CisK
KyAgICBBU1NFUlQoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAyKTsKKworICAg
IC8vIEZJWE1FOiBTdXBwb3J0IGludGVybGVhdmVkIGRhdGEgYnkgdW5pbnRlcmxlYXZpbmcgbV9z
b3VyY2VCdWZmZXIgaWYgbmVlZGVkLgorICAgIEFTU0VSVChtX3NvdXJjZUZvcm1hdC5tRm9ybWF0
RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZCk7CisKKyAgICBtX3NvdXJj
ZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkoMiAqIG51bUJ5dGVzVG9Db3B5KTsKKyAgICBhdXRvKiBm
aXJzdENoYW5uZWwgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7CisgICAgYXV0byogc2Vjb25kQ2hh
bm5lbCA9IG1fc291cmNlQnVmZmVyLmRhdGEoKSArIG51bUJ5dGVzVG9Db3B5OworCisgICAgc2l6
ZV90IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciA9IDA7CisgICAgd2hpbGUgKG51bUJ5dGVz
VG9Db3B5KSB7CisgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA8PSBtX2N1cnJl
bnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICBpZiAobV9zYW1wbGVC
bG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBudWxs
cHRyOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5KG1faW5wdXRC
dWZmZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nh
c3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1
ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRDRigo
Q01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVCdWZm
ZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAgICAgICAgaWYg
KCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZm
ZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tC
dWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJs
b2NrQnVmZmVyID0gMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gQ01CbG9ja0J1ZmZlckdldERh
dGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSkgLyAyOworICAgICAgICAgICAgbV9j
dXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgc2l6ZV90IG51bUJ5dGVz
VG9Db3B5RnJvbVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1CeXRlc1RvQ29weSwgKG1fc2FtcGxl
QmxvY2tCdWZmZXJTaXplIC0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikpOwor
ICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyht
X3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVm
ZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoZmlyc3RDaGFubmVsICsgY3VycmVu
dE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVm
ZmVyQ29weURhdGFCeXRlcyBmaXJzdCBjaGFubmVsIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9j
a0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArIG1fc2Ft
cGxlQmxvY2tCdWZmZXJTaXplLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoc2Vjb25k
Q2hhbm5lbCArIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcikpKSB7CisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc2Vjb25kIGNoYW5uZWwgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2Ft
cGxlQmJ1ZjsKKyAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciArPSBudW1C
eXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5T
YW1wbGVCbG9ja0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAg
ICB9CisgICAgfQorCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IGZp
cnN0Q2hhbm5lbDsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNp
emUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5t
QnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgYXVkaW9CdWZmZXJMaXN0LT5t
QnVmZmVyc1sxXS5tRGF0YSA9IHNlY29uZENoYW5uZWw7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5t
QnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOwor
ICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0gMTsKKwor
ICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0u
bURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisgICAgcmV0
dXJuIG5vRXJyOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vz
c1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUgbG93V2F0ZXJUaW1lKQorewor
ICAgIGlmICghbV9jb252ZXJ0ZXIpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSAoQ01TYW1wbGVC
dWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1faW5wdXRC
dWZmZXJRdWV1ZS5nZXQoKSkpKTsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlcik7CisKKyAgICAgICAg
bV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRQ
cmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJl
c2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50YXRpb25U
aW1lU3RhbXAoYnVmZmVyKTsKKworICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0aW9uID0gQ01T
YW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpOworICAgICAgICBpZiAoIWlu
aXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0
aW9uLCBtX291dHB1dENvZGVjVHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgd2hpbGUgKENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVyVGltZSkgfHwgQ01USU1FX0NPTVBB
UkVfSU5MSU5FKGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJRdWV1ZUdldER1cmF0aW9uKG1faW5w
dXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSB7CisgICAgICAgIEF1ZGlvQnVmZmVyTGlzdCBmaWxsQnVm
ZmVyTGlzdDsKKworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9IDE7Cisg
ICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fZGVz
dGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0
Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSAoVUludDMyKW1fZGVzdGluYXRpb25CdWZmZXIu
Y2FwYWNpdHkoKTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEgPSBt
X2Rlc3RpbmF0aW9uQnVmZmVyLmRhdGEoKTsKKworICAgICAgICBVSW50MzIgb3V0cHV0UGFja2V0
U2l6ZSA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gbV9kZXN0aW5hdGlv
bkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtX21heE91dHB1dFBhY2tldFNpemU7CisgICAgICAg
IFVJbnQzMiBudW1PdXRwdXRQYWNrZXRzID0gKFVJbnQzMiltX2Rlc3RpbmF0aW9uQnVmZmVyLmNh
cGFjaXR5KCkgLyBvdXRwdXRQYWNrZXRTaXplOworCisgICAgICAgIGF1dG8gZXJyb3IgPSBBdWRp
b0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyKG1fY29udmVydGVyLmdldCgpLCBhdWRpb0NvbnZl
cnRlckNvbXBsZXhJbnB1dERhdGFQcm9jLCB0aGlzLCAmbnVtT3V0cHV0UGFja2V0cywgJmZpbGxC
dWZmZXJMaXN0LCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSk7CisgICAg
ICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJGaWxsQ29tcGxl
eEJ1ZmZlciBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghbnVtT3V0cHV0UGFja2V0cykKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGF1dG8gYnVmZmVyID0gc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMo
bnVtT3V0cHV0UGFja2V0cywgZmlsbEJ1ZmZlckxpc3QpOworCisgICAgICAgIGF0dGFjaFByaW1p
bmdUcmltc0lmTmVlZGVkKGJ1ZmZlcik7CisKKyAgICAgICAgZXJyb3IgPSBDTVNhbXBsZUJ1ZmZl
clNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIsIG1fY3VycmVudE91dHB1dFBy
ZXNlbnRhdGlvblRpbWVTdGFtcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBDTVRpbWUgbmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZl
cik7CisgICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGlt
ZUFkZChtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG5hdGl2ZUR1cmF0aW9u
KTsKKworICAgICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldE91
dHB1dER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlv
blRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3Rh
bXAsIG91dHB1dER1cmF0aW9uKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVldWVFbnF1
ZXVlKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAgIGlmIChlcnJv
cikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2Ft
cGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVu
cXVldWUobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIHBy
b2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUobV9sb3dXYXRlclRpbWUpOworfQor
Cit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKENNU2Ft
cGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0
Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykKKyAgICAgICAgICAgIHByb2Nl
c3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVCdWZmZXJSZWYg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQorewor
ICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVy
UXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisKK1JldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0
cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJS
ZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1fb3V0
cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCBiMTQ3Y2EyODgyOWIwZjEwMzBi
ZGE3NGEwODQyNmM0NTY1ZTk4NzFlLi5mYjAyYjEyMWY3OTk1NDBjOWVhYmE4NTM3ZTYyMmNiMTk4
YmI1NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaApAQCAtMjUsNiArMjUsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKIAogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgpAQCAtMzQsMTEgKzM1LDE2IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5h
cnlTZW1hcGhvcmUuaD4KKyNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KKyNp
bmNsdWRlIDxDb3JlTWVkaWEvQ01UaW1lLmg+CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2Ft
cGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1
ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7Cit0eXBlZGVmIHN0
cnVjdCBvcGFxdWVDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuICpDTUJ1ZmZlclF1ZXVlVHJpZ2dl
clRva2VuOwogCiBPQkpDX0NMQVNTIEFWQXNzZXRXcml0ZXI7CiBPQkpDX0NMQVNTIEFWQXNzZXRX
cml0ZXJJbnB1dDsKK09CSkNfQ0xBU1MgV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlOwogCiBuYW1l
c3BhY2UgV1RGIHsKIGNsYXNzIE1lZGlhVGltZTsKQEAgLTQ2LDI5ICs1Miw4MyBAQCBjbGFzcyBN
ZWRpYVRpbWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOwogY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNsYXNzIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7CitjbGFzcyBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiB7CitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRo
cmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlciwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFnZXI+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoY29uc3Qg
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNvbnN0IE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlKiB2aWRlb1RyYWNrKTsKICAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyPiBjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KTsKICAgICB+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKTsKLSAgICAKLSAgICBib29sIHNl
dHVwV3JpdGVyKCk7Ci0gICAgYm9vbCBzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhlaWdo
dCk7Ci0gICAgYm9vbCBzZXRBdWRpb0lucHV0KCk7CisKICAgICB2b2lkIGFwcGVuZFZpZGVvU2Ft
cGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxl
QnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNv
cmRpbmcoKTsKICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpPiYmKTsKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisg
ICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5k
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgorI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCisgICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9vbCBo
YXNBdWRpbywgYm9vbCBoYXNWaWRlbyk7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgYm9vbCBp
bml0aWFsaXplKCk7CisKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZm
ZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CisgICAgc3RhdGlj
IHZvaWQgY29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVy
UXVldWVUcmlnZ2VyVG9rZW4pOworCisgICAgdm9pZCBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAg
dm9pZCBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworCisgICAgYm9vbCBhcHBlbmRD
b21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKTsKKyAgICBib29sIGFwcGVuZENvbXByZXNzZWRW
aWRlb1NhbXBsZUJ1ZmZlcigpOworCisgICAgdm9pZCBwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlv
U2FtcGxlQnVmZmVycygpOworICAgIHZvaWQgcHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBs
ZUJ1ZmZlcnMoKTsKKworICAgIHZvaWQgZmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYXBwZW5kRW5kT2ZWaWRlb1NhbXBs
ZUR1cmF0aW9uSWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyNlbHNlCiAg
ICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYs
IFN0cmluZyYmIHBhdGgpOwogICAgIHZvaWQgY2xlYXIoKTsKIAorICAgIGJvb2wgc2V0dXBXcml0
ZXIoKTsKKyAgICBib29sIHNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAg
ICBib29sIHNldEF1ZGlvSW5wdXQoKTsKKyNlbmRpZgorCisgICAgYm9vbCBtX2hhc1N0YXJ0ZWRX
cml0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKKwogICAg
IFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKKworICAgIGJvb2wgbV9pc1N0b3Bw
aW5nIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4gbV9mZXRjaERhdGFD
b21wbGV0aW9uSGFuZGxlcjsKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgYm9v
bCBtX2hhc0F1ZGlvOworICAgIGJvb2wgbV9oYXNWaWRlbzsKKworICAgIFJldGFpblB0cjxDTUZv
cm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CisgICAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7
CisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0Fzc2V0V3JpdGVySW5w
dXQ7CisKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV92aWRlb0Zvcm1h
dERlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I+IG1fdmlkZW9Db21wcmVzc29yOworICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5w
dXQ+IG1fdmlkZW9Bc3NldFdyaXRlcklucHV0OworICAgIENNVGltZSBtX2xhc3RWaWRlb1ByZXNl
bnRhdGlvblRpbWU7CisgICAgQ01UaW1lIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lOworICAgIGJv
b2wgbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzIHsgZmFsc2UgfTsKKworICAgIFJldGFpblB0cjxX
ZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+IG1fd3JpdGVyRGVsZWdhdGU7CisjZWxzZQogICAgIFJl
dGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9JbnB1dDsKICAgICBSZXRhaW5QdHI8
QVZBc3NldFdyaXRlcklucHV0PiBtX2F1ZGlvSW5wdXQ7CiAKQEAgLTc4LDE3ICsxMzgsMTMgQEAg
cHJpdmF0ZToKICAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nU2VtYXBob3JlOwog
ICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZTsKICAgICBC
aW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmU7Ci0gICAgYm9vbCBt
X2hhc1N0YXJ0ZWRXcml0aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNTdG9wcGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNGaXJzdEF1ZGlvU2FtcGxlIHsgdHJ1ZSB9OwogICAgIGRpc3Bh
dGNoX3F1ZXVlX3QgbV9hdWRpb1B1bGxRdWV1ZTsKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fdmlk
ZW9QdWxsUXVldWU7CiAgICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV92
aWRlb0J1ZmZlclBvb2w7CiAgICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4g
bV9hdWRpb0J1ZmZlclBvb2w7CiAKLSAgICBib29sIG1faXNTdG9wcGluZyB7IGZhbHNlIH07Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwotICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7
CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAyMzM1NGY0Nzg0
ZGUwOTJmMDQ4N2MxODU0ZmM1YjI2YTVlMjIxMWFjLi5mODQ1NTdjMDM1OWJiNzBhZDEyNDc4Njc4
MDA5NDMxOTYxZGM0ZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0yNiwxMTEgKzI2LDEzMiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKIAor
I2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW0iCisjZWxzZQorCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oIgogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNp
bmNsdWRlICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJXZWJBdWRp
b0J1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlci5oPgog
I2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQuaD4KKyNpbmNsdWRlIDxB
VkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcl9Qcml2YXRlLmg+CisjaW5jbHVkZSA8cGFsL2F2Zm91
bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDx3dGYvQmxvY2tQdHIuaD4KICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1
ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0
aW9uU29mdExpbmsuaD4KIAotI3VuZGVmIEFWRW5jb2RlckJpdFJhdGVLZXkKLSNkZWZpbmUgQVZF
bmNvZGVyQml0UmF0ZUtleSBnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKLSN1
bmRlZiBBVkZvcm1hdElES2V5Ci0jZGVmaW5lIEFWRm9ybWF0SURLZXkgZ2V0QVZGb3JtYXRJREtl
eVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZOdW1iZXJPZkNoYW5uZWxzS2V5Ci0jZGVmaW5lIEFW
TnVtYmVyT2ZDaGFubmVsc0tleSBnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2so
KQotI3VuZGVmIEFWU2FtcGxlUmF0ZUtleQotI2RlZmluZSBBVlNhbXBsZVJhdGVLZXkgZ2V0QVZT
YW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKK0BpbnRlcmZhY2UgV2ViQVZBc3NldFdyaXRlckRl
bGVnYXRlIDogTlNPYmplY3QgPEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4geworICAgIFdlYWtQdHI8
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IG1fd3JpdGVyOworfQogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKil3cml0ZXI7CistICh2b2lkKWNsb3NlOworLSAo
dm9pZClmaW5pc2g7CiAKLXVzaW5nIG5hbWVzcGFjZSBQQUw7CitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgeworfTsKIAotc3RhdGljIE5TU3RyaW5nICpn
ZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdy
aXRlcjooV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqKXdyaXRlcgogewotICAg
IGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKSkKLSAgICAgICAg
cmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCk7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmIChzZWxm
KQorICAgICAgICBzZWxmLT5tX3dyaXRlciA9IG1ha2VXZWFrUHRyKHdyaXRlcik7CiAKLSAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRm9ybWF0SURLZXkiKTsK
LSAgICByZXR1cm4gQCJBVkZvcm1hdElES2V5IjsKKyAgICByZXR1cm4gc2VsZjsKIH0KIAotc3Rh
dGljIE5TU3RyaW5nICpnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2soKQorLSAo
dm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZOdW1i
ZXJPZkNoYW5uZWxzS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25f
QVZOdW1iZXJPZkNoYW5uZWxzS2V5KCk7Ci0KLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwg
IkZhaWxlZCB0byBsb2FkIEFWTnVtYmVyT2ZDaGFubmVsc0tleSIpOwotICAgIHJldHVybiBAIkFW
TnVtYmVyT2ZDaGFubmVsc0tleSI7CisgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi1zdGF0aWMg
TlNTdHJpbmcgKmdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCistICh2b2lkKWFzc2V0
V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRI
ZWFkZXJEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkSGVhZGVyRGF0YQogewotICAgIGlmIChQQUw6
OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpKQotICAgICAgICByZXR1cm4g
UEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpOworICAgIFVOVVNFRF9QQVJB
TShhc3NldFdyaXRlcik7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBpZiAo
YXV0byBzaXplID0gW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pIHsKKyAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZBc3NldFdy
aXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRlc10p
LCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+
bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyLT5h
cHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJG
YWlsZWQgdG8gbG9hZCBBVlNhbXBsZVJhdGVLZXkiKTsKLSAgICByZXR1cm4gQCJBVlNhbXBsZVJh
dGVLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93cml0ZXItPmFwcGVuZERhdGEo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRlc10pLCBb
ZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3RoXSk7CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqZ2V0
QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCistICh2b2lkKWFzc2V0V3JpdGVyOihB
VkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRNZWRpYURhdGE6
KE5TRGF0YSAqKWZyYWdtZW50ZWRNZWRpYURhdGEgZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydDoo
QVZGcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0ICopZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydAog
ewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVLZXko
KSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRl
S2V5KCk7CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKKyAgICBVTlVTRURfUEFSQU0o
ZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCk7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewor
ICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSkgewor
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxX
ZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRNZWRpYURh
dGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3Rl
Y3RlZFNlbGYtPm1fd3JpdGVyKQorICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5t
X3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZFbmNvZGVyQml0UmF0ZUtleSIpOwotICAgIHJldHVy
biBAIkFWRW5jb2RlckJpdFJhdGVLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93
cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkTWVk
aWFEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0pOwogfQogCi1SZWZQ
dHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNvbnN0
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKQorLSAodm9pZCljbG9zZQogewot
ICAgIGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7Ci0gICAgaWYgKHZpZGVvVHJhY2spIHsKLSAg
ICAgICAgYXV0byYgc2V0dGluZ3MgPSB2aWRlb1RyYWNrLT5zZXR0aW5ncygpOwotICAgICAgICB3
aWR0aCA9IHNldHRpbmdzLndpZHRoKCk7Ci0gICAgICAgIGhlaWdodCA9IHNldHRpbmdzLmhlaWdo
dCgpOwotICAgIH0KLSAgICByZXR1cm4gY3JlYXRlKCEhYXVkaW9UcmFjaywgd2lkdGgsIGhlaWdo
dCk7CisgICAgbV93cml0ZXIgPSBudWxscHRyOwogfQogCi1SZWZQdHI8TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNB
dWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorLSAodm9pZClmaW5pc2gKIHsKLSAgICBOU1N0
cmluZyAqZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAi
dmlkZW9zIik7Ci0gICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIvJWxsZC5tcDQiLCBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9j
aygpKS52YWx1ZV07Ci0gICAgTlNTdHJpbmcgKnBhdGggPSBbZGlyZWN0b3J5IHN0cmluZ0J5QXBw
ZW5kaW5nU3RyaW5nOmZpbGVuYW1lXTsKKyAgICBtX3dyaXRlciA9IG51bGxwdHI7Cit9CiAKLSAg
ICBOU1VSTCAqb3V0cHV0VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXTsKLSAgICBT
dHJpbmcgZmlsZVBhdGggPSBbcGF0aCBVVEY4U3RyaW5nXTsKLSAgICBOU0Vycm9yICplcnJvciA9
IG5pbDsKLSAgICBhdXRvIGF2QXNzZXRXcml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3Nl
dFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhVUkw6b3V0cHV0VVJMIGZpbGVUeXBlOkFWRmlsZVR5
cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBm
YWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKWVycm9yLmNvZGUpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9CitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAg
IGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihX
VEZNb3ZlKGF2QXNzZXRXcml0ZXIpLCBXVEZNb3ZlKGZpbGVQYXRoKSkpOwordXNpbmcgbmFtZXNw
YWNlIFBBTDsKIAotICAgIGlmIChoYXNBdWRpbyAmJiAhd3JpdGVyLT5zZXRBdWRpb0lucHV0KCkp
CitSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorewor
ICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cihoYXNBdWRpbywgd2lkdGggJiYgaGVpZ2h0KSk7CisgICAgaWYgKCF3cml0ZXItPmluaXRpYWxp
emUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHdyaXRlcjsKK30KIAot
ICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKLSAgICAgICAgaWYgKCF3cml0ZXItPnNldFZpZGVv
SW5wdXQod2lkdGgsIGhlaWdodCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wcmVzc2VkVmlkZW9PdXRwdXRC
dWZmZXJDYWxsYmFjayh2b2lkICptZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgQ01CdWZmZXJR
dWV1ZVRyaWdnZXJUb2tlbikKK3sKKyAgICBhdXRvICp3cml0ZXIgPSBzdGF0aWNfY2FzdDxNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcio+KG1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKTsKKyAg
ICB3cml0ZXItPnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCk7Cit9CiAK
LSAgICByZXR1cm4gV1RGTW92ZSh3cml0ZXIpOwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6Y29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCAqbWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pCit7CisgICAgYXV0
byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqPihtZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7CisgICAgd3JpdGVyLT5wcm9jZXNzTmV3Q29tcHJlc3Nl
ZEF1ZGlvU2FtcGxlQnVmZmVycygpOwogfQogCi1NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYgYXZB
c3NldFdyaXRlciwgU3RyaW5nJiYgZmlsZVBhdGgpCi0gICAgOiBtX3dyaXRlcihXVEZNb3ZlKGF2
QXNzZXRXcml0ZXIpKQotICAgICwgbV9wYXRoKFdURk1vdmUoZmlsZVBhdGgpKQorTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGJvb2wgaGFzQXVk
aW8sIGJvb2wgaGFzVmlkZW8pCisgICAgOiBtX2hhc0F1ZGlvKGhhc0F1ZGlvKQorICAgICwgbV9o
YXNWaWRlbyhoYXNWaWRlbykKIHsKIH0KIApAQCAtMTM5LDE0MCArMTYwLDIzOCBAQCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICBj
bGVhcigpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVhcigpCiti
b29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKCkKIHsKLSAgICBpZiAo
bV92aWRlb0lucHV0KSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1dC5jbGVhcigpOwotICAgICAgICBk
aXNwYXRjaF9yZWxlYXNlKG1fdmlkZW9QdWxsUXVldWUpOworICAgIE5TRXJyb3IgKmVycm9yID0g
bmlsOworICAgIG1fd3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnN0
YW5jZSgpIGluaXRXaXRoRmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOwor
ICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
ImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxk
IiwgKGxvbmcpZXJyb3IuY29kZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBtX3dyaXRlckRlbGVnYXRlID0gYWRvcHROUyhbW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhXcml0ZXI6IHRoaXNdKTsKKyAgICBbbV93cml0ZXIuZ2V0KCkgc2V0RGVs
ZWdhdGU6bV93cml0ZXJEZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBpZiAobV9oYXNBdWRpbykgewor
ICAgICAgICBtX2F1ZGlvQ29tcHJlc3NvciA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
Y3JlYXRlKGNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsKKyAgICAg
ICAgaWYgKCFtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgaWYgKG1fYXVkaW9JbnB1dCkgewotICAgICAgICBtX2F1ZGlvSW5wdXQuY2xlYXIo
KTsKLSAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2F1ZGlvUHVsbFF1ZXVlKTsKKyAgICBpZiAo
bV9oYXNWaWRlbykgeworICAgICAgICBtX3ZpZGVvQ29tcHJlc3NvciA9IFZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQsIGNvbXByZXNzZWRW
aWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgaWYgKCFtX3ZpZGVvQ29t
cHJlc3NvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKG1fd3Jp
dGVyKQotICAgICAgICBtX3dyaXRlci5jbGVhcigpOworICAgIHJldHVybiB0cnVlOworfQogCi0g
ICAgbV9kYXRhID0gbnVsbHB0cjsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG51bGxwdHIpOwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vz
c05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKQoreworICAgIEFTU0VSVChtX2hhc1Zp
ZGVvKTsKKyAgICBpZiAoIW1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAgICBtX3Zp
ZGVvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9u
KG1fdmlkZW9Db21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVCdWZmZXIoKSk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXNdIHsKKyAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAobV9oYXNBdWRpbyAmJiAhbV9hdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc3RhcnRBc3Nl
dFdyaXRlcigpOworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0
aW5nKQorICAgICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMo
KTsKIH0KIAotYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0VmlkZW9JbnB1dChp
bnQgd2lkdGgsIGludCBoZWlnaHQpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpw
cm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpCiB7Ci0gICAgQVNTRVJUKCFt
X3ZpZGVvSW5wdXQpOwotICAgIAotICAgIE5TRGljdGlvbmFyeSAqY29tcHJlc3Npb25Qcm9wZXJ0
aWVzID0gQHsKLSAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDogW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAxMl0sCi0gICAgICAgIEFWVmlkZW9FeHBlY3Rl
ZFNvdXJjZUZyYW1lUmF0ZUtleSA6IEAoMzApLAotICAgICAgICBBVlZpZGVvTWF4S2V5RnJhbWVJ
bnRlcnZhbEtleSA6IEAoMTIwKSwKLSAgICAgICAgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSA6IEFW
VmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbAotICAgIH07Ci0KLSAgICBOU0RpY3Rp
b25hcnkgKnZpZGVvU2V0dGluZ3MgPSBAewotICAgICAgICBBVlZpZGVvQ29kZWNLZXk6IEFWVmlk
ZW9Db2RlY0gyNjQsCi0gICAgICAgIEFWVmlkZW9XaWR0aEtleTogW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6d2lkdGhdLAotICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5OiBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDpoZWlnaHRdLAotICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5
OiBjb21wcmVzc2lvblByb3BlcnRpZXMKLSAgICB9OworICAgIEFTU0VSVChtX2hhc0F1ZGlvKTsK
KyAgICBpZiAoIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAgICBtX2F1ZGlvRm9y
bWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKG1fYXVk
aW9Db21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVCdWZmZXIoKSk7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXNdIHsKKyAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAobV9oYXNWaWRlbyAmJiAhbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9u
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc3RhcnRBc3NldFdyaXRl
cigpOworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKQor
ICAgICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKK30K
Kwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlcigpCit7
CisgICAgaWYgKG1faGFzVmlkZW8pIHsKKyAgICAgICAgbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0
aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOm5pbCBzb3VyY2VGb3Jt
YXRIaW50Om1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKV0pOworICAgICAgICBbbV92aWRl
b0Fzc2V0V3JpdGVySW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07Cisg
ICAgICAgIGlmICghW21fd3JpdGVyLmdldCgpIGNhbkFkZElucHV0Om1fdmlkZW9Bc3NldFdyaXRl
cklucHV0LmdldCgpXSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlciBmYWlsZWQg
Y2FuQWRkSW5wdXQgZm9yIHZpZGVvIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgW21fd3JpdGVyLmdldCgpIGFkZElucHV0Om1fdmlkZW9Bc3NldFdyaXRlcklucHV0
LmdldCgpXTsKKyAgICB9CiAgICAgCi0gICAgbV92aWRlb0lucHV0ID0gYWRvcHROUyhbUEFMOjph
bGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRp
YVR5cGVWaWRlbyBvdXRwdXRTZXR0aW5nczp2aWRlb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6
bmlsXSk7Ci0gICAgW21fdmlkZW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0
cnVlXTsKKyAgICBpZiAobV9oYXNBdWRpbykgeworICAgICAgICBtX2F1ZGlvQXNzZXRXcml0ZXJJ
bnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGlu
aXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6bmlsIHNvdXJj
ZUZvcm1hdEhpbnQ6bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7CisgICAgICAgIFtt
X2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVl
XTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV9hdWRpb0Fzc2V0
V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZh
aWxlZCBjYW5BZGRJbnB1dCBmb3IgYXVkaW8iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV9hdWRpb0Fzc2V0V3JpdGVy
SW5wdXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1
dDptX3ZpZGVvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1dCA9IG51bGxwdHI7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIHZpZGVvIGlucHV0
IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgc3RhcnRXcml0aW5nXSkgewor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBzdGFydFdyaXRpbmciKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92aWRlb0lucHV0Lmdl
dCgpXTsKLSAgICBtX3ZpZGVvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJD
b3JlVmlkZW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwp
OworCisgICAgW21fd3JpdGVyLmdldCgpIHN0YXJ0U2Vzc2lvbkF0U291cmNlVGltZTprQ01UaW1l
WmVyb107CisKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworCisgICAgbV9o
YXNTdGFydGVkV3JpdGluZyA9IHRydWU7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpCit7CisgICAgaWYgKCFt
X2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFbbV9h
dWRpb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYXVkaW9Db21wcmVzc29yLT50YWtl
T3V0cHV0U2FtcGxlQnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSBhcHBlbmRTYW1wbGVC
dWZmZXI6YnVmZmVyLmdldCgpXTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0QXVkaW9JbnB1dCgpCitib29sIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIoKQogewotICAg
IEFTU0VSVCghbV9hdWRpb0lucHV0KTsKKyAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29yKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBOU0RpY3Rpb25hcnkgKmF1ZGlvU2V0dGluZ3MgPSBA
ewotICAgICAgICBBVkVuY29kZXJCaXRSYXRlS2V5IDogQCgyODAwMCksCi0gICAgICAgIEFWRm9y
bWF0SURLZXkgOiBAKGtBdWRpb0Zvcm1hdE1QRUc0QUFDKSwKLSAgICAgICAgQVZOdW1iZXJPZkNo
YW5uZWxzS2V5IDogQCgxKSwKLSAgICAgICAgQVZTYW1wbGVSYXRlS2V5IDogQCgyMjA1MCkKLSAg
ICB9OworICAgIGlmICghW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVk
aWFEYXRhXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9hdWRpb0lucHV0ID0gYWRv
cHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRp
YVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczphdWRpb1NldHRpbmdzIHNvdXJj
ZUZvcm1hdEhpbnQ6bmlsXSk7Ci0gICAgW21fYXVkaW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRh
SW5SZWFsVGltZTp0cnVlXTsKLSAgICAKLSAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1dDpt
X2F1ZGlvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1dCA9IG51bGxwdHI7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIGF1ZGlvIGlucHV0IGlz
IG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOworICAgIGF1dG8gYnVm
ZmVyID0gbV92aWRlb0NvbXByZXNzb3ItPnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBp
ZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBbbV93cml0ZXIg
YWRkSW5wdXQ6bV9hdWRpb0lucHV0LmdldCgpXTsKLSAgICBtX2F1ZGlvUHVsbFF1ZXVlID0gZGlz
cGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3JlQXVkaW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUi
LCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworCisgICAgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25U
aW1lID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyLmdldCgp
KTsKKyAgICBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0RGVjb2Rl
VGltZVN0YW1wKGJ1ZmZlci5nZXQoKSk7CisgICAgbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzID0g
dHJ1ZTsKKworICAgIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSBhcHBlbmRTYW1wbGVC
dWZmZXI6YnVmZmVyLmdldCgpXTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKQorewor
ICAgIHdoaWxlIChhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIoKSB8fCBhcHBlbmRD
b21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKSkgeyB9OworfQorCitzdGF0aWMgaW5saW5lIHZv
aWQgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIoQVZBc3NldFdyaXRlcklu
cHV0ICphc3NldFdyaXRlcklucHV0LCBDTVRpbWUgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRp
bWUgZGVjb2RpbmdUaW1lU3RhbXApCit7CisgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0lu
Zm8gPSB7IGtDTVRpbWVJbnZhbGlkLCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGRlY29kaW5nVGlt
ZVN0YW1wfTsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlciA9IE5VTEw7CisgICAgYXV0
byBlcnJvciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEws
IHRydWUsIE5VTEwsIE5VTEwsIE5VTEwsIDAsIDEsICZ0aW1pbmdJbmZvLCAwLCBOVUxMLCAmYnVm
ZmVyKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRFbmRzUHJldmlvdXNTYW1w
bGVEdXJhdGlvbk1hcmtlciBmYWlsZWQgQ01TYW1wbGVCdWZmZXJDcmVhdGUgd2l0aCAlZCIsIGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGFk
b3B0Q0YoYnVmZmVyKTsKKworICAgIENNU2V0QXR0YWNobWVudChzYW1wbGVCdWZmZXIuZ2V0KCks
IGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb24s
IGtDRkJvb2xlYW5UcnVlLCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOworICAg
IGlmICghW2Fzc2V0V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOnNhbXBsZUJ1ZmZlci5n
ZXQoKV0pCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXIgYXBwZW5kU2FtcGxlQnVmZmVyIHRvIHdyaXRlciBpbnB1dCBmYWls
ZWQiKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRW5kT2ZW
aWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaWYgKFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0p
IHsKKyAgICAgICAgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIobV92aWRl
b0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCksIG1fbGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZSwgbV9s
YXN0VmlkZW9EZWNvZGluZ1RpbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7CisvKgorICAgIGF1dG8gYmxvY2sgPSBt
YWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICh3ZWFrVGhpcykgeworICAgICAgICAgICAgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxl
RHVyYXRpb25NYXJrZXIobV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCksIG1fbGFzdFZpZGVv
UHJlc2VudGF0aW9uVGltZSwgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUpOworICAgICAgICAgICAg
W21fdmlkZW9Bc3NldFdyaXRlcklucHV0IG1hcmtBc0ZpbmlzaGVkXTsKKyAgICAgICAgfQorICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworICAgIFttX3ZpZGVvQXNzZXRXcml0
ZXJJbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpIHVzaW5nQmxvY2s6YmxvY2suZ2V0KCldOworKi8KK30KKwordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXBwZW5kQ29t
cHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKyAgICBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRp
b25JZk5lZWRlZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKCkKK3sKKyAgICBpZiAobV93cml0ZXIpCisgICAg
ICAgIG1fd3JpdGVyLmNsZWFyKCk7CisKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5k
bGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKKwogc3RhdGlj
IGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZmZXJXaXRo
Q3VycmVudFRpbWVTdGFtcChDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikKIHsKICAg
ICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xv
Y2soKSk7CiAgICAgQ01JdGVtQ291bnQgY291bnQgPSAwOwogICAgIENNU2FtcGxlQnVmZmVyR2V0
U2FtcGxlVGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCAwLCBuaWwsICZjb3VudCk7Ci0g
ICAgCisKICAgICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3VudCk7CiAg
ICAgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIs
IGNvdW50LCB0aW1lSW5mby5kYXRhKCksICZjb3VudCk7Ci0gICAgCi0gICAgZm9yIChDTUl0ZW1D
b3VudCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKworICAgIGZvciAoYXV0byBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKICAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1wID0ga0NN
VGltZUludmFsaWQ7CiAgICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9
IHN0YXJ0VGltZTsKICAgICB9Ci0gICAgCisKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdCdWZm
ZXIgPSBudWxscHRyOwotICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlX
aXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwg
dGltZUluZm8uZGF0YSgpLCAmbmV3QnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYgKGF1
dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAmbmV3
QnVmZmVyKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyIENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1p
bmcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KICAgICByZXR1cm4gYWRvcHRDRihuZXdCdWZmZXIpOwogfQotCisgICAgCiB2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1
ZmZlclJlZiBzYW1wbGVCdWZmZXIpCiB7Ci0gICAgQVNTRVJUKG1fdmlkZW9JbnB1dCk7Ci0gICAg
aWYgKG1faXNTdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faGFzU3RhcnRl
ZFdyaXRpbmcpIHsKLSAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewotICAg
ICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0
aCBlcnJvciBjb2RlICVsZCIsIChsb25nKVttX3dyaXRlciBlcnJvcl0pOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJj
ZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAg
ICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fdmlkZW9J
bnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX3ZpZGVvUHVsbFF1ZXVlIHVz
aW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7
Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGlz
UmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7Ci0gICAgICAg
ICAgICAgICAgaWYgKG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX3ZpZGVvQnVmZmVy
UG9vbC50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsK
LSAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1
ZmZlci5nZXQoKV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSB3
aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV92aWRlb0J1ZmZl
clBvb2wuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgW21fdmlkZW9JbnB1dCBtYXJrQXNG
aW5pc2hlZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmUu
c2lnbmFsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZlcldp
dGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7Ci0gICAgaWYgKCFidWZmZXJXaXRoQ3Vy
cmVudFRpbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV92aWRlb0xvY2spOwotICAgIG1fdmlkZW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cldpdGhDdXJyZW50VGltZSkpOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHNldCB0aGUg
dGltZXN0YW1wcyBpZiB0aGV5IGFyZSBhbHJlYWR5IHNldC4KKyAgICBpZiAoYXV0byBidWZmZXJX
aXRoQ3VycmVudFRpbWUgPSBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2Ft
cGxlQnVmZmVyKSkKKyAgICAgICAgbV92aWRlb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihi
dWZmZXJXaXRoQ3VycmVudFRpbWUuZ2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFJldGFpblB0
cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQpAQCAtMjgwLDY4ICszOTks
MzkgQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3Jl
YXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb24KICAgICBhdXRvIGJhc2ljRGVzY3JpcHRpb24g
PSBXVEY6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlv
bi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOwogICAgIENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZm9ybWF0ID0gbnVsbHB0cjsKICAgICBhdXRvIGVycm9yID0gQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24s
IDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXQpOwotICAgIGlmIChlcnJvcikKKyAgICBp
ZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAg
ICByZXR1cm4gYWRvcHRDRihmb3JtYXQpOwogfQogCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3Jp
cHRpb25zKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0LCBzaXplX3Qgc2FtcGxlQ291bnQp
Ci17Ci0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0
VGltZUNsb2NrKCkpOwotICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxw
dHI7Ci0gICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0
RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxM
LCBmb3JtYXQsIHNhbXBsZUNvdW50LCBzdGFydFRpbWUsIE5VTEwsICZzYW1wbGVCdWZmZXIpOwot
ICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0
Q0Yoc2FtcGxlQnVmZmVyKTsKLX0KLQotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlh
VGltZSYsIHNpemVfdCBzYW1wbGVDb3VudCkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPiBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlv
RGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNv
bnN0IFdURjo6TWVkaWFUaW1lJiB0aW1lLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7Ci0gICAgQVNT
RVJUKG1fYXVkaW9JbnB1dCk7Ci0gICAgaWYgKCghbV9oYXNTdGFydGVkV3JpdGluZyAmJiBtX3Zp
ZGVvSW5wdXQpIHx8IG1faXNTdG9wcGVkKQotICAgICAgICByZXR1cm47CiAgICAgYXV0byBmb3Jt
YXQgPSBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKICAgICBpZiAo
IWZvcm1hdCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2lzRmlyc3RBdWRpb1NhbXBsZSkg
ewotICAgICAgICBpZiAoIW1fdmlkZW9JbnB1dCkgewotICAgICAgICAgICAgLy8gYXVkaW8tb25s
eSByZWNvcmRpbmcuCi0gICAgICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7
Ci0gICAgICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25B
dFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwot
ICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSBmYWxzZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fYXVk
aW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX2F1ZGlvUHVsbFF1ZXVl
IHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
XSB7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV9hdWRpb0lucHV0
IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7Ci0gICAg
ICAgICAgICAgICAgaWYgKG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX2F1ZGlvQnVm
ZmVyUG9vbC50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHko
KTsKLSAgICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZm
ZXIuZ2V0KCldOwotICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAgICBpZiAo
bV9pc1N0b3BwZWQgJiYgbV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICAgICAgW21fYXVkaW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAgICAgICAgbV9m
aW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH1dOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVC
dWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5V
TEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50LCB0b0NNVGlt
ZSh0aW1lKSwgTlVMTCwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXIgY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CisgICAgYXV0
byBidWZmZXIgPSBhZG9wdENGKHNhbXBsZUJ1ZmZlcik7CiAKLSAgICBhdXRvIHNhbXBsZUJ1ZmZl
ciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhmb3JtYXQu
Z2V0KCksIHNhbXBsZUNvdW50KTsKLSAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKLSAgICAgICAgcmV0
dXJuOwotICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVk
aW9CdWZmZXJMaXN0KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NG
QWxsb2NhdG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5s
aXN0KCkpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuOworICAgIGVycm9yID0gQ01T
YW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdChidWZmZXIuZ2V0KCks
IGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdl
YkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkubGlzdCgpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlciBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0IGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
cmV0dXJuIGJ1ZmZlcjsKK30KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb0xv
Y2spOwotICAgIG1fYXVkaW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKHNhbXBsZUJ1ZmZlcikp
Owordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZm
ZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgc2l6ZV90IHNh
bXBsZUNvdW50KQoreworICAgIGlmIChhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2Ft
cGxlQnVmZmVyKGRhdGEsIGRlc2NyaXB0aW9uLCB0aW1lLCBzYW1wbGVDb3VudCkpCisgICAgICAg
IG1fYXVkaW9Db21wcmVzc29yLT5hZGRTYW1wbGVCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKTsK
IH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCkBA
IC0zNTAsMzUgKzQ0MCw0MCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9w
UmVjb3JkaW5nKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwor
CisgICAgaWYgKG1fdmlkZW9Db21wcmVzc29yKQorICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+
ZmluaXNoKCk7CisgICAgaWYgKG1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICBtX2F1ZGlvQ29t
cHJlc3Nvci0+ZmluaXNoKCk7CisKICAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCiAgICAg
ICAgIHJldHVybjsKICAgICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZBc3NldFdyaXRl
clN0YXR1c1dyaXRpbmcpOwotICAgIGlmIChtX3ZpZGVvSW5wdXQpCi0gICAgICAgIG1fZmluaXNo
V3JpdGluZ1ZpZGVvU2VtYXBob3JlLndhaXQoKTsKLQotICAgIGlmIChtX2F1ZGlvSW5wdXQpCi0g
ICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKIAogICAgIG1faXNT
dG9wcGluZyA9IHRydWU7Ci0gICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlv
bkhhbmRsZXI6W3RoaXMsIHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3ZlKHdlYWtQ
dHIpLCBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3Bh
dGgpXSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgICAgICBt
X2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgIGZs
dXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBt
X2hhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2lzRmlyc3RBdWRpb1Nh
bXBsZSA9IHRydWU7Ci0gICAgICAgICAgICBjbGVhcigpOwotICAgICAgICB9KTsKLSAgICAgICAg
bV9maW5pc2hXcml0aW5nU2VtYXBob3JlLnNpZ25hbCgpOwotICAgIH1dOwotICAgIG1fZmluaXNo
V3JpdGluZ1NlbWFwaG9yZS53YWl0KCk7CisgICAgICAgIFttX3dyaXRlciBmbHVzaF07CisgICAg
ICAgIFttX3dyaXRlciBmaW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdURk1vdmUobV9kYXRhKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAg
ICAgIGNsZWFyKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfV07CisgICAgfSk7CiB9CiAK
IHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMzkyLDYgKzQ4NywyNSBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRj
aERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQgogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit7Cisg
ICAgaWYgKCFtX2RhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9kYXRhLT5hcHBlbmQo
ZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVu
ZERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFtX2RhdGEpIHsK
KyAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1fZGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZP
VU5EQVRJT04pCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNl
ZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43M2ZiMWVl
YWU3ZDRhNDU1ZTM1NGExNmViNmE2ODQ2OGVkNDEyZTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tCkBAIC0wLDAgKzEsMzgzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNs
dWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZm
ZXJMaXN0LmgiCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXIuaD4KKyNpbmNs
dWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcklucHV0Lmg+CisjaW5jbHVkZSA8cGFsL2Nm
L0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91
bmRhdGlvblNvZnRMaW5rLmg+CisKKyN1bmRlZiBBVkVuY29kZXJCaXRSYXRlS2V5CisjZGVmaW5l
IEFWRW5jb2RlckJpdFJhdGVLZXkgZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygp
CisjdW5kZWYgQVZGb3JtYXRJREtleQorI2RlZmluZSBBVkZvcm1hdElES2V5IGdldEFWRm9ybWF0
SURLZXlXaXRoRmFsbGJhY2soKQorI3VuZGVmIEFWTnVtYmVyT2ZDaGFubmVsc0tleQorI2RlZmlu
ZSBBVk51bWJlck9mQ2hhbm5lbHNLZXkgZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxi
YWNrKCkKKyN1bmRlZiBBVlNhbXBsZVJhdGVLZXkKKyNkZWZpbmUgQVZTYW1wbGVSYXRlS2V5IGdl
dEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dXNpbmcgbmFtZXNwYWNlIFBBTDsKKworc3RhdGljIE5TU3RyaW5nICpnZXRBVkZvcm1hdElES2V5
V2l0aEZhbGxiYWNrKCkKK3sKKyAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkZv
cm1hdElES2V5KCkpCisgICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZGb3Jt
YXRJREtleSgpOworCisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9h
ZCBBVkZvcm1hdElES2V5Iik7CisgICAgcmV0dXJuIEAiQVZGb3JtYXRJREtleSI7Cit9CisKK3N0
YXRpYyBOU1N0cmluZyAqZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxiYWNrKCkKK3sK
KyAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5lbHNLZXko
KSkKKyAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5l
bHNLZXkoKTsKKworICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQg
QVZOdW1iZXJPZkNoYW5uZWxzS2V5Iik7CisgICAgcmV0dXJuIEAiQVZOdW1iZXJPZkNoYW5uZWxz
S2V5IjsKK30KKworc3RhdGljIE5TU3RyaW5nICpnZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJh
Y2soKQoreworICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtl
eSgpKQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtl
eSgpOworCisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVlNh
bXBsZVJhdGVLZXkiKTsKKyAgICByZXR1cm4gQCJBVlNhbXBsZVJhdGVLZXkiOworfQorCitzdGF0
aWMgTlNTdHJpbmcgKmdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2soKQoreworICAg
IGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVLZXkoKSkKKyAg
ICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCk7
CisKKyAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRW5jb2Rl
ckJpdFJhdGVLZXkiKTsKKyAgICByZXR1cm4gQCJBVkVuY29kZXJCaXRSYXRlS2V5IjsKK30KKwor
UmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAg
ICBOU1N0cmluZyAqZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KEAidmlkZW9zIik7CisgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIvJWxsZC5tcDQiLCBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRp
bWVDbG9jaygpKS52YWx1ZV07CisgICAgTlNTdHJpbmcgKnBhdGggPSBbZGlyZWN0b3J5IHN0cmlu
Z0J5QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1lXTsKKworICAgIE5TVVJMICpvdXRwdXRVUkwgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhdOworICAgIFN0cmluZyBmaWxlUGF0aCA9IFtwYXRo
IFVURjhTdHJpbmddOworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIGF1dG8gYXZBc3Nl
dFdyaXRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0
V2l0aFVSTDpvdXRwdXRVUkwgZmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0p
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUg
JWxkIiwgKGxvbmcpZXJyb3IuY29kZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpLCBXVEZNb3ZlKGZpbGVQYXRoKSkpOworCisgICAg
aWYgKGhhc0F1ZGlvICYmICF3cml0ZXItPnNldEF1ZGlvSW5wdXQoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBpZiAod2lkdGggJiYgaGVpZ2h0KSB7CisgICAgICAgIGlmICghd3Jp
dGVyLT5zZXRWaWRlb0lucHV0KHdpZHRoLCBoZWlnaHQpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIFdURk1vdmUod3JpdGVyKTsKK30KKworTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0
cjxBVkFzc2V0V3JpdGVyPiYmIGF2QXNzZXRXcml0ZXIsIFN0cmluZyYmIGZpbGVQYXRoKQorICAg
IDogbV93cml0ZXIoV1RGTW92ZShhdkFzc2V0V3JpdGVyKSkKKyAgICAsIG1fcGF0aChXVEZNb3Zl
KGZpbGVQYXRoKSkKK3sKK30KKworTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcigpCit7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQoreworICAgIGlmIChtX3ZpZGVvSW5wdXQpIHsK
KyAgICAgICAgbV92aWRlb0lucHV0LmNsZWFyKCk7CisgICAgICAgIGRpc3BhdGNoX3JlbGVhc2Uo
bV92aWRlb1B1bGxRdWV1ZSk7CisgICAgfQorICAgIGlmIChtX2F1ZGlvSW5wdXQpIHsKKyAgICAg
ICAgbV9hdWRpb0lucHV0LmNsZWFyKCk7CisgICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9hdWRp
b1B1bGxRdWV1ZSk7CisgICAgfQorICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93cml0ZXIu
Y2xlYXIoKTsKKworICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKK30KKworYm9vbCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6c2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAg
QVNTRVJUKCFtX3ZpZGVvSW5wdXQpOworICAgIAorICAgIE5TRGljdGlvbmFyeSAqY29tcHJlc3Np
b25Qcm9wZXJ0aWVzID0gQHsKKyAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDogW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAxMl0sCisgICAgICAgIEFWVmlk
ZW9FeHBlY3RlZFNvdXJjZUZyYW1lUmF0ZUtleSA6IEAoMzApLAorICAgICAgICBBVlZpZGVvTWF4
S2V5RnJhbWVJbnRlcnZhbEtleSA6IEAoMTIwKSwKKyAgICAgICAgQVZWaWRlb1Byb2ZpbGVMZXZl
bEtleSA6IEFWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbAorICAgIH07CisKKyAg
ICBOU0RpY3Rpb25hcnkgKnZpZGVvU2V0dGluZ3MgPSBAeworICAgICAgICBBVlZpZGVvQ29kZWNL
ZXk6IEFWVmlkZW9Db2RlY0gyNjQsCisgICAgICAgIEFWVmlkZW9XaWR0aEtleTogW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6d2lkdGhdLAorICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5OiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpoZWlnaHRdLAorICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Qcm9w
ZXJ0aWVzS2V5OiBjb21wcmVzc2lvblByb3BlcnRpZXMKKyAgICB9OworICAgIAorICAgIG1fdmlk
ZW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgp
IGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6dmlkZW9T
ZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5pbF0pOworICAgIFttX3ZpZGVvSW5wdXQgc2V0RXhw
ZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07CisgICAgCisgICAgaWYgKCFbbV93cml0ZXIg
Y2FuQWRkSW5wdXQ6bV92aWRlb0lucHV0LmdldCgpXSkgeworICAgICAgICBtX3ZpZGVvSW5wdXQg
PSBudWxscHRyOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgInRoZSB2
aWRlbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0ZXIiKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92
aWRlb0lucHV0LmdldCgpXTsKKyAgICBtX3ZpZGVvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVf
Y3JlYXRlKCJXZWJDb3JlVmlkZW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9R
VUVVRV9TRVJJQUwpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpzZXRBdWRpb0lucHV0KCkKK3sKKyAgICBBU1NFUlQoIW1fYXVkaW9JbnB1
dCk7CisKKyAgICBOU0RpY3Rpb25hcnkgKmF1ZGlvU2V0dGluZ3MgPSBAeworICAgICAgICBBVkVu
Y29kZXJCaXRSYXRlS2V5IDogQCgyODAwMCksCisgICAgICAgIEFWRm9ybWF0SURLZXkgOiBAKGtB
dWRpb0Zvcm1hdE1QRUc0QUFDKSwKKyAgICAgICAgQVZOdW1iZXJPZkNoYW5uZWxzS2V5IDogQCgx
KSwKKyAgICAgICAgQVZTYW1wbGVSYXRlS2V5IDogQCgyMjA1MCkKKyAgICB9OworCisgICAgbV9h
dWRpb0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNl
KCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczphdWRp
b1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7CisgICAgW21fYXVkaW9JbnB1dCBzZXRF
eHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICAKKyAgICBpZiAoIVttX3dyaXRl
ciBjYW5BZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldKSB7CisgICAgICAgIG1fYXVkaW9JbnB1
dCA9IG51bGxwdHI7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhl
IGF1ZGlvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFttX3dyaXRlciBhZGRJbnB1dDpt
X2F1ZGlvSW5wdXQuZ2V0KCldOworICAgIG1fYXVkaW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1
ZV9jcmVhdGUoIldlYkNvcmVBdWRpb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENI
X1FVRVVFX1NFUklBTCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmV0
YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1l
U3RhbXAoQ01TYW1wbGVCdWZmZXJSZWYgb3JpZ2luYWxCdWZmZXIpCit7CisgICAgQ01UaW1lIHN0
YXJ0VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOworICAg
IENNSXRlbUNvdW50IGNvdW50ID0gMDsKKyAgICBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWlu
Z0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgMCwgbmlsLCAmY291bnQpOworICAgIAorICAgIFZl
Y3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWVJbmZvKGNvdW50KTsKKyAgICBDTVNhbXBsZUJ1
ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJ
bmZvLmRhdGEoKSwgJmNvdW50KTsKKyAgICAKKyAgICBmb3IgKENNSXRlbUNvdW50IGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgeworICAgICAgICB0aW1lSW5mb1tpXS5kZWNvZGVUaW1lU3RhbXAgPSBr
Q01UaW1lSW52YWxpZDsKKyAgICAgICAgdGltZUluZm9baV0ucHJlc2VudGF0aW9uVGltZVN0YW1w
ID0gc3RhcnRUaW1lOworICAgIH0KKyAgICAKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdCdWZm
ZXIgPSBudWxscHRyOworICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlX
aXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwg
dGltZUluZm8uZGF0YSgpLCAmbmV3QnVmZmVyKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdENGKG5ld0J1ZmZlcik7Cit9CisKK3ZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENNU2Ft
cGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcikKK3sKKyAgICBBU1NFUlQobV92aWRlb0lucHV0KTsK
KyAgICBpZiAobV9pc1N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9oYXNT
dGFydGVkV3JpdGluZykgeworICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7
CisgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxl
ZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpW21fd3JpdGVyIGVycm9yXSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgW21fd3JpdGVyIHN0YXJ0U2Vzc2lvbkF0
U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKV07Cisg
ICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOworICAgICAgICBSZWZQdHI8TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOworICAgICAgICBbbV92
aWRlb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fdmlkZW9QdWxsUXVl
dWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyldIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5w
dXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2NrKTsKKyAg
ICAgICAgICAgICAgICBpZiAobV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fdmlkZW9C
dWZmZXJQb29sLnRha2VGaXJzdCgpOworICAgICAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJs
eSgpOworICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBhcHBlbmRTYW1wbGVCdWZm
ZXI6YnVmZmVyLmdldCgpXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9IHdoaWxlICh0cnVlKTsKKyAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX3ZpZGVv
QnVmZmVyUG9vbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBbbV92aWRlb0lucHV0IG1h
cmtBc0ZpbmlzaGVkXTsKKyAgICAgICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFw
aG9yZS5zaWduYWwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfV07CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgYXV0byBidWZmZXJXaXRoQ3VycmVudFRpbWUgPSBjb3B5U2FtcGxlQnVm
ZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoIWJ1ZmZlcldp
dGhDdXJyZW50VGltZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX3ZpZGVvTG9jayk7CisgICAgbV92aWRlb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUo
YnVmZmVyV2l0aEN1cnJlbnRUaW1lKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENN
Rm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29uc3Qg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCit7CisgICAgYXV0byBiYXNpY0Rl
c2NyaXB0aW9uID0gV1RGOjpnZXQ8Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKj4o
ZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLmRlc2NyaXB0aW9uKTsKKyAgICBDTUZv
cm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdCA9IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENN
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBiYXNpY0Rl
c2NyaXB0aW9uLCAwLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0KTsKKyAgICBpZiAoZXJy
b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdENGKGZvcm1hdCk7
Cit9CisKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVB
dWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMoQ01Gb3JtYXREZXNjcmlwdGlv
blJlZiBmb3JtYXQsIHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBDTVRpbWUgc3RhcnRUaW1l
ID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7CisgICAgQ01TYW1w
bGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGVycm9yID0gQ01B
dWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgTlVMTCwgZmFsc2UsIE5VTEwsIE5VTEwsIGZvcm1hdCwgc2FtcGxlQ291bnQsIHN0
YXJ0VGltZSwgTlVMTCwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRDRihzYW1wbGVCdWZmZXIpOworfQorCit2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcihj
b25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90IHNhbXBsZUNvdW50
KQoreworICAgIEFTU0VSVChtX2F1ZGlvSW5wdXQpOworICAgIGlmICgoIW1faGFzU3RhcnRlZFdy
aXRpbmcgJiYgbV92aWRlb0lucHV0KSB8fCBtX2lzU3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gZm9ybWF0ID0gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihkZXNjcmlwdGlv
bik7CisgICAgaWYgKCFmb3JtYXQpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9pc0ZpcnN0
QXVkaW9TYW1wbGUpIHsKKyAgICAgICAgaWYgKCFtX3ZpZGVvSW5wdXQpIHsKKyAgICAgICAgICAg
IC8vIGF1ZGlvLW9ubHkgcmVjb3JkaW5nLgorICAgICAgICAgICAgaWYgKCFbbV93cml0ZXIgc3Rh
cnRXcml0aW5nXSkgeworICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBbbV93cml0ZXIg
c3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGlt
ZUNsb2NrKCkpXTsKKyAgICAgICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOworICAg
ICAgICB9CisgICAgICAgIG1faXNGaXJzdEF1ZGlvU2FtcGxlID0gZmFsc2U7CisgICAgICAgIFJl
ZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7Cisg
ICAgICAgIFttX2F1ZGlvSW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6bV9h
dWRpb1B1bGxRdWV1ZSB1c2luZ0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKV0geworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGlmICgh
W21fYXVkaW9JbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRp
b0xvY2spOworICAgICAgICAgICAgICAgIGlmIChtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gbV9hdWRpb0J1ZmZlclBvb2wudGFrZUZpcnN0KCk7CisgICAgICAgICAgICAgICAgbG9ja2Vy
LnVubG9ja0Vhcmx5KCk7CisgICAgICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBhcHBlbmRTYW1w
bGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpOworICAg
ICAgICAgICAgaWYgKG1faXNTdG9wcGVkICYmIG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgbWFya0FzRmluaXNoZWRdOworICAgICAg
ICAgICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLnNpZ25hbCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9XTsKKyAgICB9CisKKyAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNy
ZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhmb3JtYXQuZ2V0KCks
IHNhbXBsZUNvdW50KTsKKyAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZm
ZXJMaXN0KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkp
OworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2F1ZGlvTG9jayk7CisgICAgbV9hdWRpb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1v
dmUoc2FtcGxlQnVmZmVyKSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnN0b3BSZWNvcmRpbmcoKQoreworICAgIGlmIChtX2lzU3RvcHBlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGlu
ZykKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChbbV93cml0ZXIgc3RhdHVzXSA9PSBBVkFz
c2V0V3JpdGVyU3RhdHVzV3JpdGluZyk7CisgICAgaWYgKG1fdmlkZW9JbnB1dCkKKyAgICAgICAg
bV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmUud2FpdCgpOworCisgICAgaWYgKG1fYXVkaW9J
bnB1dCkKKyAgICAgICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUud2FpdCgpOworCisg
ICAgbV9pc1N0b3BwaW5nID0gdHJ1ZTsKKyAgICBbbV93cml0ZXIgZmluaXNoV3JpdGluZ1dpdGhD
b21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1B0ciA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1B0ciA9IFdURk1v
dmUod2Vha1B0ciksIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKG1fcGF0aCldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtQdHIpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsK
KyAgICAgICAgICAgIGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAg
ICAgICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7
CisKKyAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7CisgICAgICAgICAgICBtX2hhc1N0
YXJ0ZWRXcml0aW5nID0gZmFsc2U7CisgICAgICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9
IHRydWU7CisgICAgICAgICAgICBjbGVhcigpOworICAgICAgICB9KTsKKyAgICAgICAgbV9maW5p
c2hXcml0aW5nU2VtYXBob3JlLnNpZ25hbCgpOworICAgIH1dOworICAgIG1fZmluaXNoV3JpdGlu
Z1NlbWFwaG9yZS53YWl0KCk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChtX2lzU3RvcHBpbmcpIHsKKyAgICAg
ICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBidWZmZXIgPSBXVEZNb3Zl
KG1fZGF0YSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWQyOTYzZWY0NDUxZmVmOWQ3NjQwZmVjMGYwNzMy
ZDIzOTFkOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSA8Q29yZU1lZGlhL0NvcmVNZWRp
YS5oPgorI2luY2x1ZGUgPFZpZGVvVG9vbEJveC9WVEVycm9ycy5oPgorCit0eXBlZGVmIHN0cnVj
dCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVj
dCBPcGFxdWVWVENvbXByZXNzaW9uU2Vzc2lvbiogIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IGNyZWF0ZShDTVZpZGVv
Q29kZWNUeXBlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09i
amVjdCk7CisgICAgflZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpOworCisgICAgdm9pZCBm
aW5pc2goKTsKKyAgICB2b2lkIGFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7Cisg
ICAgQ01TYW1wbGVCdWZmZXJSZWYgZ2V0T3V0cHV0U2FtcGxlQnVmZmVyKCk7CisgICAgUmV0YWlu
UHRyPENNU2FtcGxlQnVmZmVyUmVmPiB0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKENNVmlkZW9Db2Rl
Y1R5cGUpOworCisgICAgYm9vbCBpbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJh
Y2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKworICAgIHZvaWQgcHJvY2Vzc1NhbXBsZUJ1ZmZl
cihDTVNhbXBsZUJ1ZmZlclJlZik7CisgICAgYm9vbCBpbml0Q29tcHJlc3Npb25TZXNzaW9uKENN
VmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZik7CisKKyAgICBzdGF0aWMgdm9pZCB2aWRlb0NvbXBy
ZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwgT1NTdGF0dXMsIFZURW5jb2RlSW5m
b0ZsYWdzLCBDTVNhbXBsZUJ1ZmZlclJlZik7CisKKyAgICBkaXNwYXRjaF9xdWV1ZV90IG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRw
dXRCdWZmZXJRdWV1ZTsKKyAgICBSZXRhaW5QdHI8VlRDb21wcmVzc2lvblNlc3Npb25SZWY+IG1f
dnRTZXNzaW9uOworCisgICAgYm9vbCBtX2lzRW5jb2RpbmcgeyBmYWxzZSB9OworCisgICAgQ01W
aWRlb0NvZGVjVHlwZSBtX291dHB1dENvZGVjVHlwZTsKKyAgICBmbG9hdCBtX21heEtleUZyYW1l
SW50ZXJ2YWxEdXJhdGlvbiB7IDIuMCB9OworICAgIHVuc2lnbmVkIG1fZXhwZWN0ZWRGcmFtZVJh
dGUgeyAzMCB9OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA4ZmU0MzI5NWVmNTJhNjc5MGZm
MWRlY2FjYTZmMzBkOWJiYmFmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1t
CkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1w
b3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaD4KKyNpbXBvcnQgPFZpZGVvVG9vbGJveC9WVENvbXByZXNzaW9uU2Vzc2lvbi5oPgorI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpbXBvcnQgPHBhbC9jZi9WaWRlb1Rvb2xib3hT
b2Z0TGluay5oPgorCit1c2luZyBuYW1lc3BhY2UgUEFMOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKENNVmlkZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNU
eXBlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFj
a09iamVjdCkKK3sKKyAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKG91
dHB1dENvZGVjVHlwZSkpOworICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShjYWxsYmFj
aywgY2FsbGJhY2tPYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
Y29tcHJlc3NvcjsKK30KKworVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUpCisgICAg
OiBtX3NlcmlhbERpc3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBs
ZS5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0K
KyAgICAsIG1fb3V0cHV0Q29kZWNUeXBlIHsgb3V0cHV0Q29kZWNUeXBlIH0KK3sKK30KKworVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkK
K3sKKyAgICBpZiAobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKQorICAgICAgICBkaXNwYXRjaF9yZWxl
YXNlKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSk7Cit9CisKK2Jvb2wgVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjppbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJh
Y2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KQoreworICAgIENNQnVmZmVyUXVldWVSZWYgb3V0cHV0
QnVmZmVyUXVldWU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRl
ZFNhbXBsZUJ1ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB1bmFi
bGUgdG8gY3JlYXRlIGJ1ZmZlciBxdWV1ZSAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICBtX291dHB1dEJ1ZmZlclF1ZXVlID0gb3V0cHV0QnVmZmVyUXVldWU7
CisgICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0
KCksIGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVyUXVldWVUcmlnZ2VyX1doZW5E
YXRhQmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywgTlVMTCk7CisKKyAgICBtX2lzRW5jb2Rpbmcg
PSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6ZmluaXNoKCkKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hR
dWV1ZSwgXnsKKyAgICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxl
dGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CisKKyAgICAgICAgZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0
YShtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVm
ZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgICAg
IG1faXNFbmNvZGluZyA9IGZhbHNlOworICAgIH0pOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9p
ZCosIE9TU3RhdHVzIHN0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVm
IGJ1ZmZlcikKK3sKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihzdGF0dXMsIE1lZGlhU3RyZWFt
LCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayBz
dGF0dXMgaXMgJWQiLCBzdGF0dXMpOworICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCisgICAgICAg
IHJldHVybjsKKworICAgIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciAqY29tcHJlc3NvciA9
IHN0YXRpY19jYXN0PFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcio+KHJlZkNvbik7CisKKyAg
ICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUoY29tcHJlc3Nvci0+bV9vdXRwdXRC
dWZmZXJRdWV1ZS5nZXQoKSwgYnVmZmVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJv
ciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1
ZUVucXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cit9CisKK2Jvb2wgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjppbml0Q29tcHJlc3Npb25TZXNzaW9uKENNVmlkZW9Gb3JtYXREZXNj
cmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKK3sKKyAgICBDTVZpZGVvRGltZW5zaW9ucyBk
aW1lbnNpb25zID0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9ucyhmb3JtYXRE
ZXNjcmlwdGlvbik7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIE5TRGljdGlvbmFyeSAqZW5jb2Rl
clNwZWNpZmljYXRpb25zID0gbmlsOworI2Vsc2UKKyAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJT
cGVjaWZpY2F0aW9ucyA9IEB7KF9fYnJpZGdlIE5TU3RyaW5nICopa1ZUVmlkZW9FbmNvZGVyU3Bl
Y2lmaWNhdGlvbl9FbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyOkBZRVN9Owor
I2VuZGlmCisKKyAgICBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiB2dFNlc3Npb247CisgICAgYXV0
byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBtX291dHB1dENvZGVjVHlwZSwg
KF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZillbmNvZGVyU3BlY2lmaWNhdGlvbnMsIE5VTEwsIE5V
TEwsIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjaywgdGhpcywgJnZ0U2Vzc2lvbik7CisgICAgaWYg
KGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorICAgIG1fdnRTZXNz
aW9uID0gYWRvcHRDRih2dFNlc3Npb24pOworCisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9w
ZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGlt
ZSwga0NGQm9vbGVhblRydWUpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRp
YVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0
eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCks
IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uLCAo
X19icmlkZ2UgQ0ZUeXBlUmVmKUAobV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24pKTsKKyAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0
eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZU
Q29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdlIENGVHlw
ZVJlZilAKG1fZXhwZWN0ZWRGcmFtZVJhdGUpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihl
cnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9u
U2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIC8vIEZJWE1FOiBTZXQgdmlkZW8gY29tcHJl
c3Npb24gcmF0ZS4KKyAgICBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5j
b2RlRnJhbWVzKG1fdnRTZXNzaW9uLmdldCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihl
cnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVz
c2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisKKyAgICByZXR1cm4gWUVTOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAg
aWYgKCFtX3Z0U2Vzc2lvbikgeworICAgICAgICBpZiAoIWluaXRDb21wcmVzc2lvblNlc3Npb24o
Q01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gQ01TYW1wbGVCdWZmZXJH
ZXRJbWFnZUJ1ZmZlcihidWZmZXIpOworICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZVN0YW1wID0g
Q01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICBhdXRv
IGR1cmF0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgIGF1dG8g
ZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKG1fdnRTZXNzaW9uLmdldCgp
LCBpbWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgTlVMTCwgdGhp
cywgTlVMTCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAi
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJh
bWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQorewor
ICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBpZiAo
IW1faXNFbmNvZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwcm9jZXNzU2Ft
cGxlQnVmZmVyKGJ1ZmZlcik7CisgICAgfSk7Cit9CisKK0NNU2FtcGxlQnVmZmVyUmVmIFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICBy
ZXR1cm4gKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVl
R2V0SGVhZChtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOworfQorCitSZXRhaW5QdHI8Q01T
YW1wbGVCdWZmZXJSZWY+IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNh
bXBsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShj
b25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX291dHB1dEJ1
ZmZlclF1ZXVlLmdldCgpKSkpKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTE0YTM4ZGRlZTIx
MWUyZDM4YzNkMWY4NjBjNmZkZWIzNjExMTc1OC4uN2ZkMGMzOTZkMDNiNGU4NTI4ZjAyMDM3NmIy
ZTUzZGUwYjg2NjNlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI3ICB5b3Vlbm4g
ZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0
V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRt
bDoKKyAgICAgICAgVXNlIG1lZGlhIGNhcHR1cmUgaW5zdGVhZCBvZiB3ZWIgYXVkaW8gc2luY2Ug
dGhlcmUgc2VlbXMgdG8gYmUgc29tZSB1bnN0YWJpbGl0eSBpbiB3ZWIgYXVkaW8gLT4gc3RyZWFt
IC0+IG1lZGlhIHJlY29yZGVyLgorICAgICAgICB3aGljaCBzaG91bGQgYmUgZml4ZWQgYXMgZm9s
bG93LXVwIHNwZWNpZmljIHBhdGNoZXMuCisKIDIwMjAtMDEtMjcgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IFsgTWFjIERlYnVnIFdLMSBd
IGluc3BlY3Rvci9wYWdlL292ZXJyaWRlU2V0dGluZy1JQ0VDYW5kaWRhdGVGaWx0ZXJpbmdFbmFi
bGVkLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWls
YWJsZS1ncHVwcm9jZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0
bWwKaW5kZXggMzMzMDZkZTc5NDdiYmI5MjU3Mzk0YzNiYTE5NjIwMWIwNTg0Nzg4Yi4uZDYyMDE5
MzRhOWE0OTgzNzFlZTEyZjM4NzVjODM1OWRhOTQ2Nzg3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRh
dGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdw
dXByb2Nlc3MuaHRtbApAQCAtMjMsNTEgKzIzLDggQEAKICAgICBpZiAod2luZG93LmludGVybmFs
cykKICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRVc2VHUFVQcm9jZXNzRm9yV2ViUlRDKHRy
dWUpOwogCi0gICAgdmFyIGNvbnRleHQ7Ci0gICAgdmFyIGRyYXdTdGFydFRpbWU7Ci0KLSAgICBm
dW5jdGlvbiBjcmVhdGVWaWRlb1N0cmVhbSgpIHsKLSAgICAgICAgY29uc3QgY2FudmFzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotICAgICAgICBjb250ZXh0ID0gY2FudmFz
LmdldENvbnRleHQoJzJkJyk7Ci0gICAgICAgIHJldHVybiBjYW52YXMuY2FwdHVyZVN0cmVhbSgp
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGRvUmVkSW1hZ2VEcmF3KCkgewotICAgICAgICBpZiAo
Y29udGV4dCkgewotICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAiI2ZmMDAwMCI7Ci0g
ICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIDIwMCwgMjAwKTsKLSAgICAgICAgICAg
IGlmIChEYXRlLm5vdygpIC0gZHJhd1N0YXJ0VGltZSA8IDUwMCkgewotICAgICAgICAgICAgICAg
IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZG9SZWRJbWFnZURyYXcpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBkcmF3U3RhcnRUaW1lID0gRGF0ZS5ub3coKTsK
LSAgICAgICAgICAgICAgICBkb0dyZWVuSW1hZ2VEcmF3KCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBkb0dyZWVuSW1hZ2VEcmF3KCkgewotICAgICAg
ICBpZiAoY29udGV4dCkgewotICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAiIzAwZmYw
MCI7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIDIwMCwgMjAwKTsKLSAgICAg
ICAgICAgIGlmIChEYXRlLm5vdygpIC0gZHJhd1N0YXJ0VGltZSA8IDIwMDApIHsKLSAgICAgICAg
ICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGRvR3JlZW5JbWFnZURyYXcpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgYXN5bmNfdGVzdCh0ID0+IHsK
LSAgICAgICAgY29uc3QgYWMgPSBuZXcgQXVkaW9Db250ZXh0KCk7Ci0gICAgICAgIGNvbnN0IG9z
YyA9IGFjLmNyZWF0ZU9zY2lsbGF0b3IoKTsKLSAgICAgICAgY29uc3QgZGVzdCA9IGFjLmNyZWF0
ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKLSAgICAgICAgY29uc3QgYXVkaW8gPSBkZXN0LnN0
cmVhbTsKLSAgICAgICAgb3NjLmNvbm5lY3QoZGVzdCk7Ci0KLSAgICAgICAgY29uc3QgdmlkZW8g
PSBjcmVhdGVWaWRlb1N0cmVhbSgpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHZpZGVvLmdldEF1
ZGlvVHJhY2tzKCkubGVuZ3RoLCAwLCAidmlkZW8gbWVkaWFzdHJlYW0gc3RhcnRzIHdpdGggbm8g
YXVkaW8gdHJhY2siKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhdWRpby5nZXRBdWRpb1RyYWNr
cygpLmxlbmd0aCwgMSwgImF1ZGlvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRoIG9uZSBhdWRpbyB0
cmFjayIpOwotICAgICAgICB2aWRlby5hZGRUcmFjayhhdWRpby5nZXRBdWRpb1RyYWNrcygpWzBd
KTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWRlby5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwg
MSwgInZpZGVvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRoIG9uZSBhdWRpbyB0cmFjayIpOwotICAg
ICAgICBjb25zdCByZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHZpZGVvKTsKKyAgICBhc3lu
Y190ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCByZWNvcmRlciA9IG5ldyBNZWRpYVJl
Y29yZGVyKGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86
IHRydWUsIHZpZGVvOiB0cnVlIH0pKTsKICAgICAgICAgbGV0IG1vZGUgPSAwOwogCiAgICAgICAg
IHJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IHQuc3RlcF9mdW5jKGJsb2JFdmVudCA9PiB7CkBA
IC03OCw4ICszNSw2IEBACiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShibG9iRXZlbnQuZGF0YS5z
aXplID4gMCwgJ3RoZSBibG9iIHNob3VsZCBjb250YWluIHNvbWUgYnVmZmVycycpOwogICAgICAg
ICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwotICAgICAgICBkcmF3U3RhcnRUaW1lID0gRGF0
ZS5ub3coKTsKLSAgICAgICAgZG9SZWRJbWFnZURyYXcoKTsKICAgICAgICAgcmVjb3JkZXIuc3Rh
cnQoKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWNvcmRlci5zdGF0ZSwgJ3JlY29yZGluZycs
ICdNZWRpYVJlY29yZGVyIGhhcyBiZWVuIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5Jyk7CiAgICAgICAg
IHNldFRpbWVvdXQoKCkgPT4gewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388994</attachid>
            <date>2020-01-28 08:00:43 -0800</date>
            <delta_ts>2020-01-30 05:20:36 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206582-20200128170040.patch</filename>
            <type>text/plain</type>
            <size>137381</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ5NDczMmQ4MTc5ZDU1
NTVhZjFlNjkwYTVhYzgxZmMxYzZlMjk1YS4uYjlhMjk0YjZmYmY5OGMyMjVhYjM3ZTBlZDUzYWQ1
ZmUxOGQ5MGVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTAxLTI4ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
YWxsb3dzIHRvIGdyYWIgcmVjb3JkZWQgZGF0YSB3aGVuZXZlciB3YW50ZWQuCisgICAgICAgIFRo
aXMgZGVsZWdhdGUgcmVxdWlyZXMgcGFzc2luZyBjb21wcmVzc2VkIHNhbXBsZXMgdG8gQVZBc3Nl
dFdyaXRlci4KKyAgICAgICAgSW1wbGVtZW50IHZpZGVvIGVuY29kaW5nIGFuZCBhdWRpbyBlbmNv
ZGluZyBpbiBkZWRpY2F0ZWQgY2xhc3NlcyBhbmQgdXNlIHRoZXNlIGNsYXNzZXMgYmVmb3JlIGFk
ZGluZyBidWZmZXJzIHRvIEFWQXNzZXRXcml0ZXIuCisgICAgICAgIFNpbmNlIEFWQXNzZXRXcml0
ZXJEZWxlZ2F0ZSBpcyBBcHBsZSBTREsgb25seSwga2VlcCB0aGUgZXhpc3RpbmcgZmlsZSBiYXNl
ZCBpbXBsZW1lbnRhdGlvbiBhcyBhIGZhbGxiYWNrLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVBy
b2MpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0
QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVk
aW9Gb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0
aE51bVBhY2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1P
dXRwdXRQYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1w
bGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojpwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRp
b1NhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2Ft
cGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1w
bGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKToKKwogMjAyMC0wMS0yOCAg
eW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQmxvYiBtZWRpYSBs
b2FkaW5nIGRvZXMgbm90IHdvcmsgd2l0aCBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRl
eCA4MTg1NDgzMjI2ZjVjYzFlNjVjZjRkYjg4NWM5NTlkMzQyZTNjZmYxLi5lYjI5MmVmOTlhZDUz
NjVlN2JlZDAyZTA1MDMzYTRkZDMwOWY3NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAyMC0wMS0yOCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBN
ZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDY1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAg
ICAgQWRkIHNvZnQgbGluayBtYWNyb3MgZm9yIFZpZGVvVG9vbGJveCBhbmQgQXVkaW9Ub29sYm94
LgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
cGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFsL2Nm
L0F1ZGlvVG9vbGJveFNvZnRMaW5rLmg6IEFkZGVkLgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5jcHA6CisgICAgICAgICogcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg6Cisg
ICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDogQWRkZWQuCisgICAgICAg
ICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg6IEFkZGVkLgorCiAyMDIwLTAxLTIyICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSB1bm5l
ZWRlZCBkZWZpbml0aW9ucyBmcm9tIFBsYXRmb3JtLmggZmFtaWx5IGhlYWRlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMTMwMmU3YWZmZjc0YmQ5MzJjN2Y5OWEyMDAyNTIwNzRmMjkyYzM5OC4uYjNhMGI5ZjE4MGU5
OGM1ZDRkMmI1NTYyNTExYjE0NGU0NGZiYTJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAyMC0wMS0yOCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
W0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29y
ZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKToKKyAgICAgICAgVXNlIG5ldyBjb25zdHJ1Y3Rv
ci4KKwogMjAyMC0wMS0yOCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIHVubmVlZGVkIG1lc3NhZ2UgY2hlY2tzIGluIEdQVVByb2Nlc3MgY29kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGE0MTlhYzk4YjRkMTkyYzlmMzYxZGIxOTc3M2YyYjZmYjhlMGM5Y2EuLjNmODE0NmFkMTU1
YWZjYzA4NThkNjhiM2QyNzRlMzkyZTBmZjQ3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNSw2ICsxMTUsMTAgQEAKIAkJ
MkUxMzQyQ0MyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNBMjE1QUExMEEwMDcxOTlE
MiAvKiBVSUtpdFNvZnRMaW5rLmggKi87IH07CiAJCTJFMTM0MkNEMjE1QUExMEEwMDcxOTlEMiAv
KiBVSUtpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkUxMzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi87
IH07CiAJCTMxMzA4QjE0MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMwOEIxMzIwQTIx
NzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovOyB9OworCQk0MTZFOTk1MzIzREFF
NkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTEyM0RBRTZCRDAwRTg3MUNCIC8q
IEF1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCAqLzsgfTsKKwkJNDE2RTk5NTQyM0RBRTZCRTAwRTg3
MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29s
Ym94U29mdExpbmsuaCAqLzsgfTsKKwkJNDE2RTk5NTcyM0RBRUZGODAwRTg3MUNCIC8qIFZpZGVv
VG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNkU5OTU1MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGlu
ay5jcHAgKi87IH07CisJCTQxNkU5OTU4MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggKi87IH07
CiAJCTQ0Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Mjk1NkNDMjE4QTcyREUwMDgwREI1
NCAvKiBSZXZlYWxTUEkuaCAqLzsgfTsKIAkJNDQ1MEZDOUYyMUY1RjYwMjAwNERGQTU2IC8qIFF1
aWNrTG9va1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1t
ICovOyB9OwogCQk0NDUwRkNBMDIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlF
MjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovOyB9OwpAQCAtMjkxLDYg
KzI5NSwxMCBAQAogCQkyRTEzNDJDQjIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJS2l0U29mdExpbmsu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzA4QjEzMjBBMjE3MDUwMDNGQjky
OSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVByZXZpZXdTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxMTlBNzgyMENDQjVGRjAwMkM2REM5
IC8qIFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJL
aXRUYXJnZXRDb25kaXRpb25hbHMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGlu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkU5OTUyMjNEQUU2QkUwMEU4
NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExp
bmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1NjIzREFFRkY3MDBF
ODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0IC8qIFJldmVhbFNQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZXZlYWxTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVpY2tMb29rU29mdExp
bmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlFMjFGNUY2MDIwMDRE
RkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBRdWlja0xvb2tTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTI0LDggKzUzMiwxMiBAQAogCQkwQ0Y5OUNBNTFGNzM4NDFDMDA3RUU3OTMgLyogY2YgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNkU5OTUxMjNEQUU2
QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi8sCisJCQkJNDE2RTk5NTIy
M0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi8sCiAJCQkJMENGOTlD
QTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLywKIAkJCQkwQ0Y5
OUNBNzFGNzM4NDM3MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExpbmsuaCAqLywKKwkJCQk0MTZF
OTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovLAorCQkJ
CTQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MTUs
NiArNzI3LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThCMjJCMzU5ODkwMDhEMEU4QiAv
KiBBcHBTU09Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDYyMkI4NTRBQjAw
MzAxNDNDIC8qIEFwcFNTT1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTk5NTQyM0RBRTZC
RTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDAyRTkzQzIwNTZGQUE3MDBBMTM3OTcgLyogQXVkaW9Ub29sYm94U1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzJBMTA3ODIyQjQ1NkY1MDBGNDEwQzggLyogQXV0aEtpdFNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDc3RTg3QjIyMjZBNDYwMzAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRM
aW5rLmggaW4gSGVhZGVycyAqLywKQEAgLTgzOCw2ICs4NTEsNyBAQAogCQkJCTJFMTM0MkNDMjE1
QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzVB
RjkyMjFGNDNBNEM3MDAyRUFDMDIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
MkRBMTQ3MUYzQkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0MTZFOTk1ODIzREFFRkY4MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTU5MUYzQkVCNDkwMERCQzMxNyAvKiBXZWJGaWx0
ZXJFdmFsdWF0b3JTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDgyNkY5MUY1NzYyOTIwMDQ3
NzJBQyAvKiBXZWJQYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtOTMwLDYgKzk0NCw3
IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJ
NTdGRDMxOEEyMkIzNTkzRTAwOEQwRThCIC8qIEFwcFNTT1NvZnRMaW5rLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5r
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3N0U4N0IxMjI2QTQ2MDIwMEEyQUZGMCAvKiBBVkZv
dW5kYXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBDNUZGRjBGMUY3OEQ5REEw
MDlFRkYxQSAvKiBDbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMENGOTlDQTgxRjczODQz
NzAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTU2
LDYgKzk3MSw3IEBACiAJCQkJQTNBQjZFNTcxRjNEMUREQjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVw
TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNjUxRjNEMjE3RjAwOUMxNEIx
IC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTEzNDJD
RDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTQxNkU5OTU3MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMTA4MjZGQTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwubW0g
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29s
Ym94U29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hT
b2Z0TGluay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNmNTUwNTZhY2RhNmY1NjUzYWRjN2UxN2VjMDJhMmQ4
MjZlNDQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVk
aW9Ub29sYm94U29mdExpbmsuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPEF1
ZGlvVG9vbGJveC9BdWRpb0NvbnZlcnRlci5oPgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRp
b0Zvcm1hdC5oPgorCisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19G
UkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCkKKworU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHks
IE9TU3RhdHVzLCAoQXVkaW9Gb3JtYXRQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGlu
U3BlY2lmaWVyU2l6ZSwgY29uc3Qgdm9pZCogaW5TcGVjaWZpZXIsIFVJbnQzMiogaW9Qcm9wZXJ0
eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5Qcm9wZXJ0eUlELCBpblNwZWNp
ZmllclNpemUsIGluU3BlY2lmaWVyLCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0
YSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCwgQXVk
aW9Db252ZXJ0ZXJOZXcsIE9TU3RhdHVzLCAoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKiBpblNvdXJjZUZvcm1hdCwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBp
bkRlc3RpbmF0aW9uRm9ybWF0LCBBdWRpb0NvbnZlcnRlclJlZiogb3V0QXVkaW9Db252ZXJ0ZXIp
LCAoaW5Tb3VyY2VGb3JtYXQsIGluRGVzdGluYXRpb25Gb3JtYXQsIG91dEF1ZGlvQ29udmVydGVy
KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRp
b0NvbnZlcnRlclNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVk
aW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQz
MiBpblByb3BlcnR5RGF0YVNpemUsIGNvbnN0IHZvaWQqIGluUHJvcGVydHlEYXRhKSwgKGluQXVk
aW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW5Qcm9wZXJ0eURhdGFTaXplLCBpblByb3BlcnR5
RGF0YSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCwg
QXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRlclJlZiBp
bkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBV
SW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRhKSwgKGluQXVk
aW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0
eURhdGEpKQorCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzMxMTg3
MTc0YWMxNTU0NDM3MWRlZTAzYjE0MzJlM2U2NTYzMmUwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVZGT1VOREFUSU9O
KQorCisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktf
Rk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHksIE9TU3Rh
dHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQ
cm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQq
IG91dFByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlvUHJv
cGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKyNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJH
ZXRQcm9wZXJ0eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0
eQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlv
Q29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
biogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5E
ZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwg
KGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikp
CisjZGVmaW5lIEF1ZGlvQ29udmVydGVyTmV3IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0Nv
bnZlcnRlck5ldworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xi
b3gsIEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJS
ZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJ
RCwgVUludDMyIGluUHJvcGVydHlEYXRhU2l6ZSwgY29uc3Qgdm9pZCogaW5Qcm9wZXJ0eURhdGEp
LCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9wZXJ0eUlELCBpblByb3BlcnR5RGF0YVNpemUsIGlu
UHJvcGVydHlEYXRhKSkKKyNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSBzb2Z0TGlu
a19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eQorU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHks
IE9TU3RhdHVzLCAoQXVkaW9Gb3JtYXRQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGlu
U3BlY2lmaWVyU2l6ZSwgY29uc3Qgdm9pZCogaW5TcGVjaWZpZXIsIFVJbnQzMiogaW9Qcm9wZXJ0
eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5Qcm9wZXJ0eUlELCBpblNwZWNp
ZmllclNpemUsIGluU3BlY2lmaWVyLCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0
YSkpCisjZGVmaW5lIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94
X0F1ZGlvRm9ybWF0R2V0UHJvcGVydHkKKworCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKaW5k
ZXggMmI4MjMxMzY1Y2I5YWFmOTM1OTdmMTg3ZmEyMmMxNDliZTQyZmIzYS4uZGM4YWI0MWNiYzc4
YmExOWNlY2RkYTdmY2ZhNzBkOTM1MDkzYzIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAgU09GVF9MSU5L
X0ZSQU1FV09SS19GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhKQogCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMs
IE9TU3RhdHVzLCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVTb3VyY2VCdWZmZXIsIHNpemVfdCBvZmZz
ZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB2b2lkKiBkZXN0aW5hdGlvbiksICh0aGVTb3Vy
Y2VCdWZmZXIsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZGVzdGluYXRpb24pKQogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJHZXRE
YXRhTGVuZ3RoLCBzaXplX3QsIChDTUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciksICh0aGVCdWZm
ZXIpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQmxv
Y2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzLCBPU1N0YXR1cywgKGNvbnN0IHZvaWQqIHNvdXJjZUJ5
dGVzLCBDTUJsb2NrQnVmZmVyUmVmIGRlc3RpbmF0aW9uQnVmZmVyLCBzaXplX3Qgb2Zmc2V0SW50
b0Rlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUxlbmd0aCksIChzb3VyY2VCeXRlcywgZGVzdGluYXRp
b25CdWZmZXIsIG9mZnNldEludG9EZXN0aW5hdGlvbiwgZGF0YUxlbmd0aCkpCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01Gb3JtYXREZXNjcmlwdGlvbkdl
dEV4dGVuc2lvbnMsIENGRGljdGlvbmFyeVJlZiwgKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVz
YyksIChkZXNjKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlh
LCBDTVNhbXBsZUJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQsICh2b2lkKSwgKCkpCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRE
YXRhQnVmZmVyLCBDTUJsb2NrQnVmZmVyUmVmLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChz
YnVmKSkKQEAgLTEzNiw2ICsxMzcsNyBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQ
QUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEJ1ZmZlckNvdW50LCBDTUl0ZQogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRG
aXJzdFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1
ZSksIChxdWV1ZSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRp
YSwgQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lLCAoQ01C
dWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVn
ZXJUaHJlc2hvbGQsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSwgQ01CdWZmZXJR
dWV1ZVRyaWdnZXJDYWxsYmFjayB0cmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIHRyaWdnZXJSZWZjb24s
IENNQnVmZmVyUXVldWVUcmlnZ2VyQ29uZGl0aW9uIHRyaWdnZXJDb25kaXRpb24sIENNSXRlbUNv
dW50IHRyaWdnZXJUaHJlc2hvbGQsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4qIHRyaWdnZXJU
b2tlbk91dCksIChxdWV1ZSwgdHJpZ2dlckNhbGxiYWNrLCB0cmlnZ2VyUmVmY29uLCB0cmlnZ2Vy
Q29uZGl0aW9uLCB0cmlnZ2VyVGhyZXNob2xkLCB0cmlnZ2VyVG9rZW5PdXQpKQorU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVNYXJrRW5k
T2ZEYXRhLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogCiBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0
YWNobWVudEtleV9Eb05vdERpc3BsYXksIENGU3RyaW5nUmVmKQogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfTm90U3lu
YywgQ0ZTdHJpbmdSZWYpCkBAIC0xNjMsNiArMTY1LDkgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFj
a2UKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBs
ZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0LCBPU1N0YXR1cywgKENNU2Ft
cGxlQnVmZmVyUmVmIHNidWYsIENGQWxsb2NhdG9yUmVmIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIENG
QWxsb2NhdG9yUmVmIGJidWZNZW1vcnlBbGxvY2F0b3IsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBB
dWRpb0J1ZmZlckxpc3QgKmJ1ZmZlckxpc3QpLCAoc2J1ZiwgYmJ1ZlN0cnVjdEFsbG9jYXRvciwg
YmJ1Zk1lbW9yeUFsbG9jYXRvciwgZmxhZ3MsIGJ1ZmZlckxpc3QpKQogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyU2V0RGF0YVJlYWR5
LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0
aW9uQ3JlYXRlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3QgQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBhc2JkLCBzaXplX3QgbGF5b3V0U2l6ZSwgY29uc3Qg
QXVkaW9DaGFubmVsTGF5b3V0KiBsYXlvdXQsIHNpemVfdCBtYWdpY0Nvb2tpZVNpemUsIGNvbnN0
IHZvaWQqIG1hZ2ljQ29va2llLCBDRkRpY3Rpb25hcnlSZWYgZXh0ZW5zaW9ucywgQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uUmVmKiBvdXREZXNjKSwgKGFsbG9jYXRvciwgYXNiZCwgbGF5b3V0U2l6
ZSwgbGF5b3V0LCBtYWdpY0Nvb2tpZVNpemUsIG1hZ2ljQ29va2llLCBleHRlbnNpb25zLCBvdXRE
ZXNjKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZSwgY29uc3Qgdm9pZCosIChDTUF1ZGlv
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYywgc2l6ZV90KiBzaXplT3V0KSwgKGRlc2MsIHNpemVP
dXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQXVk
aW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQsIGNvbnN0IEF1ZGlv
Rm9ybWF0TGlzdEl0ZW0gKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRl
c2MpKQorCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01D
bG9ja0dldEhvc3RUaW1lQ2xvY2ssIENNQ2xvY2tSZWYsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldFRpbWUsIENNVGlt
ZSwgKENNQ2xvY2tSZWYgY2xvY2spLCAoY2xvY2spKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ2FsbEZvckVhY2hTYW1wbGUsIE9T
U3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgT1NTdGF0dXMgKCogQ01TQU1QTEVCVUZG
RVJDQUxMX05PRVNDQVBFIGNhbGxiYWNrKSggQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVy
LCBDTUl0ZW1Db3VudCBpbmRleCwgdm9pZCAqcmVmY29uKSwgdm9pZCAqcmVmY29uKSwgKHNidWYs
IGNhbGxiYWNrLCByZWZjb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
Zi9Db3JlTWVkaWFTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5oCmluZGV4IDI2OGQxNjdmMjdkNmQzYWJiZmY1OTM1MjY3ZmMyMjIzOTEwMTBl
M2QuLmEwYzczMjkyNjJlMGIwNmNiYjZjMzZkODI4NDJmMmZkNmYxZjg0YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKQEAgLTQ5LDYgKzQ5LDgg
QEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tC
dWZmZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXQKICNkZWZpbmUgQ01CbG9ja0J1ZmZlckNvcHlEYXRh
Qnl0ZXMgc29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdl
dERhdGFMZW5ndGgsIHNpemVfdCwgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1
ZmZlcikpCiAjZGVmaW5lIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoIHNvZnRMaW5rX0NvcmVN
ZWRpYV9DTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzLCBPU1N0
YXR1cywgKGNvbnN0IHZvaWQqIHNvdXJjZUJ5dGVzLCBDTUJsb2NrQnVmZmVyUmVmIGRlc3RpbmF0
aW9uQnVmZmVyLCBzaXplX3Qgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUxlbmd0
aCksIChzb3VyY2VCeXRlcywgZGVzdGluYXRpb25CdWZmZXIsIG9mZnNldEludG9EZXN0aW5hdGlv
biwgZGF0YUxlbmd0aCkpCisjZGVmaW5lIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzIHNv
ZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcwogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25H
ZXRFeHRlbnNpb25zLCBDRkRpY3Rpb25hcnlSZWYsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRl
c2MpLCAoZGVzYykpCiAjZGVmaW5lIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zIHNv
ZnRMaW5rX0NvcmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucwogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0
VHlwZUlELCBDRlR5cGVJRCwgKHZvaWQpLCAoKSkKQEAgLTIyNyw2ICsyMjksOCBAQCBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEVu
ZFByZXNlbnRhdGlvblRpbQogI2RlZmluZSBDTUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9u
VGltZVN0YW1wIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0
aW9uVGltZVN0YW1wCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRp
YSwgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQsIE9TU3Rh
dHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFj
ayB0cmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIHRyaWdnZXJSZWZjb24sIENNQnVmZmVyUXVldWVUcmln
Z2VyQ29uZGl0aW9uIHRyaWdnZXJDb25kaXRpb24sIENNSXRlbUNvdW50IHRyaWdnZXJUaHJlc2hv
bGQsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4qIHRyaWdnZXJUb2tlbk91dCksIChxdWV1ZSwg
dHJpZ2dlckNhbGxiYWNrLCB0cmlnZ2VyUmVmY29uLCB0cmlnZ2VyQ29uZGl0aW9uLCB0cmlnZ2Vy
VGhyZXNob2xkLCB0cmlnZ2VyVG9rZW5PdXQpKQogI2RlZmluZSBDTUJ1ZmZlclF1ZXVlSW5zdGFs
bFRyaWdnZXJXaXRoSW50ZWdlclRocmVzaG9sZCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CdWZmZXJR
dWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSwg
T1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKKyNkZWZpbmUgQ01C
dWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVN
YXJrRW5kT2ZEYXRhCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxheSwgQ0ZTdHJpbmdSZWYpCiAj
ZGVmaW5lIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5IGdldF9Db3JlTWVkaWFf
a0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERpc3BsYXkoKQpAQCAtMjU2LDYgKzI2MCw5IEBA
IFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lYmFz
ZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkCiAjZGVmaW5lIGtDTVRpbWViYXNlTm90aWZpY2F0aW9u
X1RpbWVKdW1wZWQgZ2V0X0NvcmVNZWRpYV9rQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVt
cGVkKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01T
YW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwgQ0ZTdHJpbmdS
ZWYpCiAjZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNv
bnN1bWVkIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25f
QnVmZmVyQ29uc3VtZWQoKQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENv
cmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUsIGNvbnN0IHZv
aWQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MsIHNpemVfdCogc2l6ZU91dCks
IChkZXNjLCBzaXplT3V0KSkKKyNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFn
aWNDb29raWUgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1h
Z2ljQ29va2llCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgY29uc3Qg
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25S
ZWYgZGVzYyksIChkZXNjKSkKICNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2ss
IE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxsb2NhdG9yLCB2b2lkKiBtZW1v
cnlCbG9jaywgc2l6ZV90IGJsb2NrTGVuZ3RoLCBDRkFsbG9jYXRvclJlZiBibG9ja0FsbG9jYXRv
ciwgY29uc3QgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlKiBjdXN0b21CbG9ja1NvdXJj
ZSwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIENNQmxvY2tCdWZmZXJG
bGFncyBmbGFncywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJl
QWxsb2NhdG9yLCBtZW1vcnlCbG9jaywgYmxvY2tMZW5ndGgsIGJsb2NrQWxsb2NhdG9yLCBjdXN0
b21CbG9ja1NvdXJjZSwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncywgYmxvY2tCdWZm
ZXJPdXQpKQpAQCAtMjY0LDYgKzI3MSw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpCiAjZGVm
aW5lIENNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZm
ZXIgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0
aFJldGFpbmVkQmxvY2tCdWZmZXIKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwg
Q29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMsIENNSXRlbUNvdW50LCAoQ01T
YW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKICNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXRO
dW1TYW1wbGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1h
dExpc3RJdGVtICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkK
KyNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1h
dCBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERl
Y29kYWJsZUZvcm1hdAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIENNU2FtcGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlLCBPU1N0YXR1cywgKENG
QWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZSYW5nZSBz
YW1wbGVSYW5nZSwgQ01TYW1wbGVCdWZmZXJSZWYqIHNCdWZPdXQpLCAoYWxsb2NhdG9yLCBzYnVm
LCBzYW1wbGVSYW5nZSwgc0J1Zk91dCkpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyQ29weVNhbXBs
ZUJ1ZmZlckZvclJhbmdlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckNvcHlTYW1w
bGVCdWZmZXJGb3JSYW5nZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3Jl
TWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlU2l6ZUFycmF5LCBPU1N0YXR1cywgKENNU2Ft
cGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUNvdW50IHNpemVBcnJheUVudHJpZXMsIHNpemVfdCog
c2l6ZUFycmF5T3V0LCBDTUl0ZW1Db3VudCogc2l6ZUFycmF5RW50cmllc05lZWRlZE91dCksIChz
YnVmLCBzaXplQXJyYXlFbnRyaWVzLCBzaXplQXJyYXlPdXQsIHNpemVBcnJheUVudHJpZXNOZWVk
ZWRPdXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xi
b3hTb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNv
ZnRMaW5rLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZmU2OTNjYTllNDFmZDg1OTdhODJiN2M3OTY2MDFiOGE3
MGNhYTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRl
b1Rvb2xib3hTb2Z0TGluay5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0IDxWaWRl
b1Rvb2xib3gvVlRDb21wcmVzc2lvblNlc3Npb24uaD4KKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xi
b3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBW
VENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxv
Y2F0b3IsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVvQ29kZWNUeXBlIGNv
ZGVjVHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBDRkRpY3Rpb25h
cnlSZWYgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRvclJlZiBjb21wcmVz
c2VkRGF0YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNrIG91dHB1dENhbGxi
YWNrLCB2b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lvblNlc3Npb25SZWYq
IGNvbXByZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBoZWlnaHQsIGNvZGVj
VHlwZSwgZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywg
Y29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRwdXRDYWxsYmFja1Jl
ZkNvbiwgY29tcHJlc3Npb25TZXNzaW9uT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVz
LCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENNVGltZSBjb21w
bGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSwgKHNlc3Npb24sIGNvbXBsZXRlVW50aWxQ
cmVzZW50YXRpb25UaW1lU3RhbXApKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUsIE9TU3RhdHVz
LCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1ZmZlclJlZiBpbWFn
ZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lIGR1cmF0aW9uLCBD
RkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lkKiBzb3VyY2VGcmFtZVJlZmNvbiwg
VlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChzZXNzaW9uLCBpbWFnZUJ1ZmZlciwg
cHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJhbWVQcm9wZXJ0aWVzLCBzb3VyY2VG
cmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZy
YW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uKSwgKHNlc3Np
b24pKQorCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTA4MzhhM2Fm
ZGVkMmVkN2Q2ZjhlMzQ4ZmZkZjZkZDExNTFiYzRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5oCkBAIC0wLDAgKzEsNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQor
CisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9S
X0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlLCBPU1N0YXR1
cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQsIENNVmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlLCBDRkRpY3Rpb25hcnlSZWYgZW5jb2RlclNw
ZWNpZmljYXRpb24sIENGRGljdGlvbmFyeVJlZiBzb3VyY2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMs
IENGQWxsb2NhdG9yUmVmIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBWVENvbXByZXNzaW9uT3V0
cHV0Q2FsbGJhY2sgb3V0cHV0Q2FsbGJhY2ssIHZvaWQqIG91dHB1dENhbGxiYWNrUmVmQ29uLCBW
VENvbXByZXNzaW9uU2Vzc2lvblJlZiogY29tcHJlc3Npb25TZXNzaW9uT3V0KSwgKGFsbG9jYXRv
ciwgd2lkdGgsIGhlaWdodCwgY29kZWNUeXBlLCBlbmNvZGVyU3BlY2lmaWNhdGlvbiwgc291cmNl
SW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBjb21wcmVzc2VkRGF0YUFsbG9jYXRvciwgb3V0cHV0Q2Fs
bGJhY2ssIG91dHB1dENhbGxiYWNrUmVmQ29uLCBjb21wcmVzc2lvblNlc3Npb25PdXQpKQorI2Rl
ZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRD
b21wcmVzc2lvblNlc3Npb25DcmVhdGUKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzLCBPU1N0
YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENNVGltZSBjb21wbGV0ZVVu
dGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSwgKHNlc3Npb24sIGNvbXBsZXRlVW50aWxQcmVzZW50
YXRpb25UaW1lU3RhbXApKQorI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJh
bWVzIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJh
bWVzCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRD
b21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSwgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vz
c2lvblJlZiBzZXNzaW9uLCBDVkltYWdlQnVmZmVyUmVmIGltYWdlQnVmZmVyLCBDTVRpbWUgcHJl
c2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUgZHVyYXRpb24sIENGRGljdGlvbmFyeVJlZiBmcmFt
ZVByb3BlcnRpZXMsIHZvaWQqIHNvdXJjZUZyYW1lUmVmY29uLCBWVEVuY29kZUluZm9GbGFncyog
aW5mb0ZsYWdzT3V0KSwgKHNlc3Npb24sIGltYWdlQnVmZmVyLCBwcmVzZW50YXRpb25UaW1lU3Rh
bXAsIGR1cmF0aW9uLCBmcmFtZVByb3BlcnRpZXMsIHNvdXJjZUZyYW1lUmVmY29uLCBpbmZvRmxh
Z3NPdXQpKQorI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lIHNvZnRMaW5r
X1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lCitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Np
b25QcmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25S
ZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25QcmVw
YXJlVG9FbmNvZGVGcmFtZXMgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNz
aW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzCisKKyNlbmRpZiAvLyBVU0UoQVZGT1VOREFUSU9OKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDkwZDUxYmVkMDc4OWY4NDU3YjlmYzUwNTU0ZmQzMmI3NDMwNDAwOTIuLjlmM2Y5NmEzYTFj
MzdiZWFmNDE0ODVmODU0OWM1MjAyM2RjMzY3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTcsNiArMTA5Nyw3IEBACiAJ
CTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0
aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAz
RDgwNjFCQjMxMTBEMDBCNzY0RTkgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2
RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBC
NzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBX
cml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1C
dWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTQxNkY3OTkwMjNENzUwQ0YwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZG
Nzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICov
OyB9OwogCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzI1M0E5
MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovOyB9OwogCQk0MTc2
MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQjFFM0E5OTNC
MDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgKi87IH07CiAJCTQxNzYxMkIw
MUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4
MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovOyB9OwpAQCAtMTEzNyw2ICsxMTM4LDcg
QEAKIAkJNDFCODc3NjIyM0RFMTA0NTAwMzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUI4Nzc2MDIzREUxMDQyMDAzNjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUJG
MjA0OTIyQkE3QkU4MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjIwNDAyMkI5NDcxNjAwMDRG
ODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
Qzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQ0Q2RjhDMjNENkU4MjEwMEIxNjQy
MSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9OwogCQk0MUQwMTVDQTBGNEI1QzcxMDA0
QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRDEyOUNF
MUYzRDBFRjYwMEQxNUU0NyAvKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OEQxRjM0QzI4MjAwNzk1
NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmggKi87IH07CiAJCTQxRDEyOUQwMUYzRDBG
MDUwMEQxNUU0NyAvKiBDYWNoZVF1ZXJ5T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OUIxRjM0Q0VGMDAwNzk1NDg3IC8qIENhY2hl
UXVlcnlPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTc0MjAsNiArNzQyMiw5IEBACiAJCTQxNkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAv
KiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9y
dGluZ1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclJlcG9y
dGluZ1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkY3OThEMjNENzUw
Q0EwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkY3OThGMjNENzUwQ0IwMDgyOUZDMSAvKiBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxNkY3OTkzMjNEOEI2OUMwMDgyOUZDMSAvKiBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MEEyRTkxRDhDMENDMDAwMzE4NDUy
IC8qIEpTRE9NV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RPTVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNB
ODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEgLyogTWVk
aWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1Mjcs
NiArNzUzMiw4IEBACiAJCTQxQzdFMTA1MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQzdFMTA2MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYW52YXNDYXB0
dXJlTWVkaWFTdHJlYW1UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3
RTEwODFFNkFBMzdDMDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRDZGODkyM0Q2RTgxQzAwQjE2NDIx
IC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhCRTUxRDQ2MjIyMDAwNzA3REM5
IC8qIEZldGNoQm9keUNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZldGNoQm9keUNvbnN1bWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDAx
NUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTkwMjcsOCArMTkwMzQsMTMgQEAKIAkJNEQzQzA1RDQyMUFGNDgwOTAwRjI4OTBBIC8qIGNv
Y29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTZG
Nzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8s
CisJCQkJNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbSAqLywKIAkJCQk0RDczRjk0QzIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5oICovLAogCQkJCTRENzNGOTREMjE4QzRBODcwMDNBM0VENiAv
KiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tICovLAorCQkJCTQxNkY3OTkzMjNE
OEI2OUMwMDgyOUZDMSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hRmlsZUJhc2Vk
Lm1tICovLAorCQkJCTQxQ0Q2Rjg5MjNENkU4MUMwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaCAqLywKKwkJCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzY5Niw2ICszMzcwOCw3IEBACiAJCQkJQTk3
ODdDQjQxRjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAxRDBCRDAg
LyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNkY3OTkwMjNE
NzUwQ0YwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwRDgxNzE1RDJB
MjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNDQyOCw2ICsz
NDQ0MSw3IEBACiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZCQzRBRjMxODk4ODE1NjAw
NDZFRTM4IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTJENUExOEYxQzU0NTkyMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFu
YWdlck9iakMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MUNENkY4QzIzRDZFODIxMDBCMTY0MjEg
LyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4
OEUwREUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkU4OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEMzM2RjY3MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQppbmRl
eCBmYThlZTBiMTAwY2YyMTQwODU2NTA1MTZiYzRlMjNhMWRiMTViZjM1Li5mYzI5MDhjZWJlM2Q3
NGU1ZjE1MTA0YTVkNzgyMzBjYmY5ZWQ1MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0K
QEAgLTk1LDYgKzk1LDcgQEAgYm9vbCBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpzZXRTaXplKGNv
bnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVs
QnVmZmVySU9TdXJmYWNlUHJvcGVydGllc0tleSA6IEB7IC8qZW1wdHkgZGljdGlvbmFyeSovIH0s
CiAgICAgfTsKIAorCiAgICAgTlNEaWN0aW9uYXJ5KiBwaXhlbEJ1ZmZlclBvb2xPcHRpb25zID0g
QHsKICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQb29sTWluaW11
bUJ1ZmZlckNvdW50S2V5OiBAKDYpCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsLmNwcAppbmRleCA3M2YxZDBhMTUxOWYyYzAzYjkxZDY5NTEwNTEzNWE0ZjIwZDFk
YTY0Li5kNDc5MzQ4ODM4NjE5MTdmNmIzNjBlZjE0ZGQ4MmMxZTM1M2IyYWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24u
aCIKKyNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTY4LDcgKzY5LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6
Y3JlYXRlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRvIHdy
aXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYXVkaW9UcmFjaywgdmlk
ZW9UcmFjayk7CisKKyAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOworICAgIGlmICh2aWRl
b1RyYWNrKSB7CisgICAgICAgIGF1dG8mIHNldHRpbmdzID0gdmlkZW9UcmFjay0+c2V0dGluZ3Mo
KTsKKyAgICAgICAgd2lkdGggPSBzZXR0aW5ncy53aWR0aCgpOworICAgICAgICBoZWlnaHQgPSBz
ZXR0aW5ncy5oZWlnaHQoKTsKKyAgICB9CisgICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKCEhYXVkaW9UcmFjaywgd2lkdGgsIGhlaWdodCk7CiAgICAg
aWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDdiZjgxZTFkNDU2
YzcwYzJkOTQ0ZjcwNDVhOGUxNmUwNTliY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8
Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1
ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZl
cnRlciogQXVkaW9Db252ZXJ0ZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcj4gY3JlYXRlKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrT2JqZWN0KTsKKyAgICB+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAg
ICB2b2lkIGZpbmlzaCgpOworICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVy
UmVmKTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAg
ICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsK
KworcHJpdmF0ZToKKyAgICBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKyAgICBib29s
IGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tP
YmplY3QpOworCisgICAgc3RhdGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0
RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1
ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKiwgdm9pZCopOworCisgICAgdm9pZCBwcm9jZXNz
U2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRBdWRpb0NvbnZl
cnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIEF1
ZGlvRm9ybWF0SUQpOworICAgIHNpemVfdCBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0
KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgVUludDMyLCBGbG9hdDMyKTsKKyAgICB2b2lk
IGF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBSZXRh
aW5QdHI8TlNOdW1iZXI+IGdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCk7CisgICAgQ01TYW1w
bGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMs
IEF1ZGlvQnVmZmVyTGlzdCk7CisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93
V2F0ZXJUaW1lKENNVGltZSk7CisgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRw
dXRQYWNrZXRzKFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVz
Y3JpcHRpb24qKik7CisKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRC
dWZmZXJRdWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9pbnB1dEJ1ZmZl
clF1ZXVlOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAg
IENNVGltZSBtX2xvd1dhdGVyVGltZTsKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07
CisKKyAgICBSZXRhaW5QdHI8QXVkaW9Db252ZXJ0ZXJSZWY+IG1fY29udmVydGVyOworICAgIEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX3NvdXJjZUZvcm1hdDsKKyAgICBBdWRpb1N0cmVh
bUJhc2ljRGVzY3JpcHRpb24gbV9kZXN0aW5hdGlvbkZvcm1hdDsKKyAgICBSZXRhaW5QdHI8Q01G
b3JtYXREZXNjcmlwdGlvblJlZj4gbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAg
IFJldGFpblB0cjxOU051bWJlcj4gbV9nZHJDb3VudE51bTsKKyAgICBVSW50MzIgbV9tYXhPdXRw
dXRQYWNrZXRTaXplOworICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBt
X2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zOworCisgICAgQ01UaW1lIG1fY3VycmVudE5h
dGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAgICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0UHJl
c2VudGF0aW9uVGltZVN0YW1wOworICAgIENNVGltZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb247
CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9zb3VyY2VCdWZmZXI7CisgICAgVmVjdG9yPGNoYXI+IG1f
ZGVzdGluYXRpb25CdWZmZXI7CisKKyAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9z
YW1wbGVCbG9ja0J1ZmZlcjsKKyAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7Cisg
ICAgc2l6ZV90IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXI7CisgICAgQXVkaW9G
b3JtYXRJRCBtX291dHB1dENvZGVjVHlwZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MzMzNzQ2YWRmYjAwM2Rj
NjYyMGEwMmQxMDZjOGQ0MGIxY2ZkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5tbQpAQCAtMCwwICsxLDQ5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvZGVjLmg+CisjaW5jbHVkZSA8QXVkaW9U
b29sYm94L0F1ZGlvQ29udmVydGVyLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9y
bWF0Lmg+CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgPHBh
bC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oPgorCisjZGVmaW5lIExPV19XQVRFUl9USU1FX0lO
X1NFQ09ORCAwLjEKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNr
IGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBhdXRvIGNvbXByZXNzb3Ig
PSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcgQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yKCkpOworICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6
ZShjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gY29tcHJlc3NvcjsKK30KKworQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVl
IHsgZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSB9CisgICAgLCBtX2xvd1dhdGVyVGltZSB7
IENNVGltZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQsIDEwMDApIH0K
KyAgICAsIG1fb3V0cHV0Q29kZWNUeXBlIHsga0F1ZGlvRm9ybWF0TVBFRzRBQUMgfQoreworfQor
CitBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IoKQoreworICAgIGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAgICAgIGRpc3BhdGNo
X3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKK30KKworYm9vbCBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBj
YWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgQ01CdWZmZXJRdWV1ZVJlZiBp
bnB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5z
b3J0ZWRTYW1wbGVCdWZmZXJzKCksICZpbnB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBD
TUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX2lucHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9pbnB1dEJ1ZmZl
clF1ZXVlID0gYWRvcHRDRihpbnB1dEJ1ZmZlclF1ZXVlKTsKKworICAgIENNQnVmZmVyUXVldWVS
ZWYgb3V0cHV0QnVmZmVyUXVldWU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVl
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NG
b3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBDTUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX291dHB1dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fb3V0
cHV0QnVmZmVyUXVldWUgPSBhZG9wdENGKG91dHB1dEJ1ZmZlclF1ZXVlKTsKKyAgICBDTUJ1ZmZl
clF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgY2FsbGJhY2ss
IGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hlbkRhdGFCZWNvbWVzUmVh
ZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKKworICAgIG1faXNFbmNvZGluZyA9IHRydWU7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5p
c2goKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAg
ICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKGtDTVRpbWVJbnZhbGlk
KTsKKyAgICAgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0
cHV0QnVmZmVyUXVldWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJv
ciwgTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1
ZU1hcmtFbmRPZkRhdGEgZmFpbGVkICVkIiwgZXJyb3IpOworICAgICAgICBtX2lzRW5jb2Rpbmcg
PSBmYWxzZTsKKyAgICB9KTsKK30KKworYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVz
Y3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24sIEF1ZGlvRm9ybWF0SUQgb3V0cHV0Rm9ybWF0
SUQpCit7CisgICAgY29uc3QgYXV0byAqYXVkaW9Gb3JtYXRMaXN0SXRlbSA9IENNQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQoZm9ybWF0RGVzY3JpcHRpb24p
OworICAgIG1fc291cmNlRm9ybWF0ID0gYXVkaW9Gb3JtYXRMaXN0SXRlbS0+bUFTQkQ7CisKKyAg
ICBtZW1zZXQoJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIHNpemVvZihBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24pKTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9IG91dHB1
dEZvcm1hdElEOworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPSBtX3NvdXJj
ZUZvcm1hdC5tU2FtcGxlUmF0ZTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1DaGFubmVsc1Bl
ckZyYW1lID0gbV9zb3VyY2VGb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisKKyAgICBVSW50MzIg
c2l6ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9
IEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkoa0F1ZGlvRm9ybWF0UHJvcGVydHlfRm9ybWF0SW5mbywg
MCwgTlVMTCwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRp
b0Zvcm1hdEdldFByb3BlcnR5IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgY29udmVydGVyOworICAg
IGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJOZXcoJm1fc291cmNlRm9ybWF0LCAmbV9k
ZXN0aW5hdGlvbkZvcm1hdCwgJmNvbnZlcnRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0
ZXJOZXcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgbV9jb252ZXJ0ZXIgPSBhZG9wdENGKGNvbnZlcnRlcik7CisKKyAgICBzaXplX3Qg
Y29va2llU2l6ZSA9IDA7CisgICAgY29uc3Qgdm9pZCAqY29va2llID0gQ01BdWRpb0Zvcm1hdERl
c2NyaXB0aW9uR2V0TWFnaWNDb29raWUoZm9ybWF0RGVzY3JpcHRpb24sICZjb29raWVTaXplKTsK
KyAgICBpZiAoY29va2llU2l6ZSkgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29u
dmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckRlY29t
cHJlc3Npb25NYWdpY0Nvb2tpZSwgKFVJbnQzMiljb29raWVTaXplLCBjb29raWUpKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tp
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9zb3VyY2VGb3JtYXQpOworICAg
IGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5n
ZXQoKSwga0F1ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXpl
LCAmbV9zb3VyY2VGb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3Ry
ZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVy
Q3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fc291cmNlRm9ybWF0Lm1C
eXRlc1BlclBhY2tldCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
Im1CeXRlc1BlclBhY2tldCBzaG91bGQgbm90IGJlIHplcm8iKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlvbkZvcm1hdCk7Cisg
ICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVy
LmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24sICZz
aXplLCAmbV9kZXN0aW5hdGlvbkZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9D
b252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobV9kZXN0aW5h
dGlvbkZvcm1hdC5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TVBFRzRBQUMpIHsKKyAgICAgICAg
Ly8gRklYTUU6IFNldCBvdXRwdXRCaXRSYXRlIGFjY29yZGluZyBNZWRpYVJlY29yZGVyT3B0aW9u
cy5hdWRpb0JpdHNQZXJTZWNvbmQuCisgICAgICAgIFVJbnQzMiBvdXRwdXRCaXRSYXRlID0gNjQw
MDA7CisgICAgICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlID49IDQ0MTAw
KQorICAgICAgICAgICAgb3V0cHV0Qml0UmF0ZSA9IDE5MjAwMDsKKyAgICAgICAgZWxzZSBpZiAo
bV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA8IDIyMDAwKQorICAgICAgICAgICAgb3V0
cHV0Qml0UmF0ZSA9IDMyMDAwOworCisgICAgICAgIHNpemUgPSBzaXplb2Yob3V0cHV0Qml0UmF0
ZSk7CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSht
X2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSwgc2l6ZSwgJm91
dHB1dEJpdFJhdGUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckVu
Y29kZUJpdFJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQu
bUJ5dGVzUGVyUGFja2V0KSB7CisgICAgICAgIC8vIElmIHRoZSBkZXN0aW5hdGlvbiBmb3JtYXQg
aXMgVkJSLCB3ZSBuZWVkIHRvIGdldCBtYXggc2l6ZSBwZXIgcGFja2V0IGZyb20gdGhlIGNvbnZl
cnRlci4KKyAgICAgICAgc2l6ZSA9IHNpemVvZihtX21heE91dHB1dFBhY2tldFNpemUpOworCisg
ICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZl
cnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVtT3V0cHV0UGFja2V0U2l6
ZSwgJnNpemUsICZtX21heE91dHB1dFBhY2tldFNpemUpKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0
aW5nIGtBdWRpb0NvbnZlcnRlclByb3BlcnR5TWF4aW11bU91dHB1dFBhY2tldFNpemUgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBtX2Rlc3RpbmF0aW9uQnVmZmVyLnJlc2VydmVDYXBhY2l0eShjb21wdXRl
QnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KG1fZGVzdGluYXRpb25Gb3JtYXQsIG1fbWF4T3V0cHV0
UGFja2V0U2l6ZSwgTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EKSk7CisgICAgaWYgKCFtX2Rlc3Rp
bmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkKKyAgICAgICAgbV9kZXN0aW5hdGlvblBhY2tl
dERlc2NyaXB0aW9ucy5yZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0
eSgpIC8gbV9tYXhPdXRwdXRQYWNrZXRTaXplKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitz
aXplX3QgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZvckF1
ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBmb3JtYXQsIFVJbnQzMiBtYXhP
dXRwdXRQYWNrZXRTaXplLCBGbG9hdDMyIGR1cmF0aW9uKQoreworICAgIFVJbnQzMiBudW1QYWNr
ZXRzID0gKGZvcm1hdC5tU2FtcGxlUmF0ZSAqIGR1cmF0aW9uKSAvIGZvcm1hdC5tRnJhbWVzUGVy
UGFja2V0OworICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gZm9ybWF0Lm1CeXRlc1BlclBh
Y2tldCA/IGZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtYXhPdXRwdXRQYWNrZXRTaXplOworICAg
IFVJbnQzMiBidWZmZXJTaXplID0gbnVtUGFja2V0cyAqIG91dHB1dFBhY2tldFNpemU7CisKKyAg
ICByZXR1cm4gYnVmZmVyU2l6ZTsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikK
K3sKKyAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uKSkg
eworICAgICAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07Cisg
ICAgICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKHByaW1lSW5mbyk7CisKKyAgICAgICAgaWYgKGF1
dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBr
QXVkaW9Db252ZXJ0ZXJQcmltZUluZm8sICZzaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3JlbWFp
bmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVNYWtlKHByaW1lSW5mby5sZWFkaW5nRnJhbWVzLCBt
X2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlKTsKKyAgICB9CisKKyAgICBpZiAoQ01USU1F
X0NPTVBBUkVfSU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24p
KSB7CisgICAgICAgIENNVGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVy
YXRpb24oYnVmZmVyKTsKKyAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1pbmlt
dW0oc2FtcGxlRHVyYXRpb24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7CisgICAgICAgIENG
RGljdGlvbmFyeVJlZiB0cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRy
aW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgICAgIENNU2V0QXR0YWNobWVu
dChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFy
dCwgdHJpbUF0U3RhcnREaWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOwor
ICAgICAgICBDRlJlbGVhc2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAgbV9yZW1haW5pbmdQ
cmltZUR1cmF0aW9uID0gQ01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uLCB0
cmltRHVyYXRpb24pOworICAgIH0KK30KKworUmV0YWluUHRyPE5TTnVtYmVyPiBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCkKK3sKKyAgICBV
SW50MzIgZGVsYXlTaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICB1aW50MzJfdCBvcmlnaW5h
bERlbGF5TW9kZSA9IDA7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFBy
b3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCAm
ZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1
ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICB1aW50MzJfdCBvcHRpbWFsRGVsYXlNb2RlID0g
a0F1ZGlvQ29kZWNEZWxheU1vZGVfT3B0aW1hbDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlv
Q29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJvcGVy
dHlEZWxheU1vZGUsIGRlbGF5U2l6ZSwgJm9wdGltYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IHNldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBVSW50MzIgcHJpbWVTaXpl
ID0gc2l6ZW9mKEF1ZGlvQ29kZWNQcmltZUluZm8pOworICAgIEF1ZGlvQ29kZWNQcmltZUluZm8g
cHJpbWVJbmZvIHsgMCwgMCB9OworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJH
ZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1lSW5m
bywgJnByaW1lU2l6ZSwgJnByaW1lSW5mbykpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9D
b2RlY1Byb3BlcnR5UHJpbWVJbmZvIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICBy
ZXR1cm4gbmlsOworICAgIH0KKworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJT
ZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9k
ZSwgZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcg
a0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0TlMoW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6KHByaW1lSW5mby5sZWFkaW5nRnJhbWVzIC8gbV9kZXN0aW5hdGlvbkZvcm1h
dC5tRnJhbWVzUGVyUGFja2V0KV0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKFVJbnQzMiBudW1Q
YWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3QpCit7CisgICAgVmVjdG9yPGNo
YXI+IGNvb2tpZTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbikgewor
ICAgICAgICBVSW50MzIgY29va2llU2l6ZSA9IDA7CisKKyAgICAgICAgYXV0byBlcnJvciA9IEF1
ZGlvQ29udmVydGVyR2V0UHJvcGVydHlJbmZvKG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252
ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgTlVMTCk7CisgICAgICAg
IGlmICgoZXJyb3IgPT0gbm9FcnIpICYmICEhY29va2llU2l6ZSkgeworICAgICAgICAgICAgY29v
a2llLnJlc2VydmVDYXBhY2l0eShjb29raWVTaXplKTsKKworICAgICAgICAgICAgaWYgKGF1dG8g
ZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVk
aW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgY29va2llLmRh
dGEoKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckNvbXBy
ZXNzaW9uTWFnaWNDb29raWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIENNRm9y
bWF0RGVzY3JpcHRpb25SZWYgZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICAgICAg
aWYgKGF1dG8gZXJyb3IgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIE5VTEwsIGNvb2tpZVNpemUsIGNv
b2tpZS5kYXRhKCksIE5VTEwsICZkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAgICAgICBt
X2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24gPSBhZG9wdENGKGRlc3RpbmF0aW9uRm9ybWF0
RGVzY3JpcHRpb24pOworICAgICAgICBtX2dkckNvdW50TnVtID0gZ3JhZHVhbERlY29kZXJSZWZy
ZXNoQ291bnQoKTsKKyAgICB9CisKKyAgICBjaGFyICpkYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhKTsKKyAgICBzaXplX3QgZGF0YVNpemUg
PSBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplOworCisgICAgQ01CbG9j
a0J1ZmZlclJlZiBibG9ja0J1ZmZlcjsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZm
ZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZGF0YVNp
emUsIGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIDAsIGRhdGFTaXplLCBrQ01CbG9ja0J1ZmZl
ckFzc3VyZU1lbW9yeU5vd0ZsYWcsICZibG9ja0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9j
a0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKGJsb2Nr
QnVmZmVyKTsKKworICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRh
Qnl0ZXMoZGF0YSwgYnVmZmVyLmdldCgpLCAwLCBkYXRhU2l6ZSkpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01C
bG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVm
ZmVyOworICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tl
dERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIuZ2V0KCksIHRydWUsIE5V
TEwsIE5VTEwsIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgbnVtUGFja2V0
cywgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wLCBtX2Rlc3RpbmF0aW9uUGFj
a2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRp
b25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0K
KworICAgIGlmIChbbV9nZHJDb3VudE51bSBpbnRWYWx1ZV0pCisgICAgICAgIENNU2V0QXR0YWNo
bWVudChzYW1wbGVCdWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERl
Y29kZXJSZWZyZXNoLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKW1fZ2RyQ291bnROdW0uZ2V0KCksIGtD
TUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisKKyAgICByZXR1cm4gc2FtcGxlQnVm
ZmVyOworfQorCitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlvQ29u
dmVydGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiAqbnVt
T3V0cHV0UGFja2V0c1B0ciwgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0LCBBdWRpb1N0cmVh
bVBhY2tldERlc2NyaXB0aW9uICoqcGFja2V0RGVzY3JpcHRpb25PdXQsIHZvaWQgKmF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvcikKK3sKKyAgICBhdXRvICpjb21wcmVzc29yID0gc3RhdGljX2Nh
c3Q8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4oYXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yKTsKKyAgICByZXR1cm4gY29tcHJlc3Nvci0+cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQ
YWNrZXRzKG51bU91dHB1dFBhY2tldHNQdHIsIGJ1ZmZlckxpc3QsIHBhY2tldERlc2NyaXB0aW9u
T3V0KTsKK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm92aWRl
U291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKiBudW1PdXRwdXRQYWNrZXRzUHRyLCBB
dWRpb0J1ZmZlckxpc3QqIGF1ZGlvQnVmZmVyTGlzdCwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlw
dGlvbioqIHBhY2tldERlc2NyaXB0aW9uT3V0KQoreworICAgIGlmIChwYWNrZXREZXNjcmlwdGlv
bk91dCkKKyAgICAgICAgKnBhY2tldERlc2NyaXB0aW9uT3V0ID0gTlVMTDsKKworICAgIGNvbnN0
IFVJbnQzMiBudW1QYWNrZXRzVG9Db3B5ID0gKm51bU91dHB1dFBhY2tldHNQdHI7CisgICAgc2l6
ZV90IG51bUJ5dGVzVG9Db3B5ID0gKG51bVBhY2tldHNUb0NvcHkgKiBtX3NvdXJjZUZvcm1hdC5t
Qnl0ZXNQZXJQYWNrZXQpOworCisgICAgaWYgKGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZl
cnMgPT0gMSkgeworICAgICAgICBzaXplX3QgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyID0g
MDsKKworICAgICAgICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobnVtQnl0ZXNUb0Nv
cHkpOworCisgICAgICAgIHdoaWxlIChudW1CeXRlc1RvQ29weSkgeworICAgICAgICAgICAgaWYg
KG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tC
dWZmZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAg
ICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVm
ZmVyUXVldWUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNv
bnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZm
ZXJRdWV1ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9
IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENN
U2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAg
ICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9zYW1w
bGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX3NhbXBsZUJs
b2NrQnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBs
ZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1fc2Ft
cGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHlG
cm9tU2FtcGxlQmJ1ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVCbG9ja0J1
ZmZlclNpemUgLSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSk7CisgICAgICAg
ICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3Nh
bXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVy
LCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAobV9zb3VyY2VCdWZmZXIuZGF0YSgpICsg
Y3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
Q01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsK
KyAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgKz0gbnVtQnl0ZXNU
b0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNh
bXBsZUJsb2NrQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5t
RGF0YSA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5t
QnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOwor
ICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1f
c291cmNlRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lOworCisgICAgICAgICpudW1PdXRwdXRQYWNr
ZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1f
c291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisgICAgICAgIHJldHVybiBub0VycjsKKyAg
ICB9CisKKyAgICBBU1NFUlQoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAyKTsK
KworICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVybGVhdmVkIGRhdGEgYnkgdW5pbnRlcmxlYXZp
bmcgbV9zb3VyY2VCdWZmZXIgaWYgbmVlZGVkLgorICAgIEFTU0VSVChtX3NvdXJjZUZvcm1hdC5t
Rm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZCk7CisKKyAgICBt
X3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkoMiAqIG51bUJ5dGVzVG9Db3B5KTsKKyAgICBh
dXRvKiBmaXJzdENoYW5uZWwgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7CisgICAgYXV0byogc2Vj
b25kQ2hhbm5lbCA9IG1fc291cmNlQnVmZmVyLmRhdGEoKSArIG51bUJ5dGVzVG9Db3B5OworCisg
ICAgc2l6ZV90IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciA9IDA7CisgICAgd2hpbGUgKG51
bUJ5dGVzVG9Db3B5KSB7CisgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA8PSBt
X2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICBpZiAobV9z
YW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIg
PSBudWxscHRyOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5KG1f
aW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNv
bnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZm
ZXJRdWV1ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRv
cHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1w
bGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAgICAg
ICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1w
bGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIG1fc2FtcGxl
QmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNh
bXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gQ01CbG9ja0J1ZmZl
ckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSkgLyAyOworICAgICAgICAg
ICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgc2l6ZV90IG51
bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1CeXRlc1RvQ29weSwgKG1f
c2FtcGxlQmxvY2tCdWZmZXJTaXplIC0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZl
cikpOworICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFC
eXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJs
b2NrQnVmZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoZmlyc3RDaGFubmVsICsg
Y3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJs
b2NrQnVmZmVyQ29weURhdGFCeXRlcyBmaXJzdCBjaGFubmVsIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1w
bGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciAr
IG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAo
c2Vjb25kQ2hhbm5lbCArIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcikpKSB7CisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc2Vjb25kIGNoYW5uZWwgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlG
cm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciAr
PSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgbV9jdXJyZW50T2Zm
c2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOwor
ICAgICAgICB9CisgICAgfQorCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0
YSA9IGZpcnN0Q2hhbm5lbDsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRh
Qnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7CisgICAgYXVkaW9CdWZmZXJM
aXN0LT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgYXVkaW9CdWZmZXJM
aXN0LT5tQnVmZmVyc1sxXS5tRGF0YSA9IHNlY29uZENoYW5uZWw7CisgICAgYXVkaW9CdWZmZXJM
aXN0LT5tQnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVm
ZmVyOworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0g
MTsKKworICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZl
cnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7Cisg
ICAgcmV0dXJuIG5vRXJyOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUgbG93V2F0ZXJUaW1l
KQoreworICAgIGlmICghbV9jb252ZXJ0ZXIpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSAoQ01T
YW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1f
aW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlcik7CisKKyAg
ICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZm
ZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50T3V0
cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50
YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKworICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0aW9u
ID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpOworICAgICAgICBp
ZiAoIWluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKGZvcm1hdERl
c2NyaXB0aW9uLCBtX291dHB1dENvZGVjVHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgd2hpbGUgKENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVyVGltZSkgfHwgQ01USU1F
X0NPTVBBUkVfSU5MSU5FKGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJRdWV1ZUdldER1cmF0aW9u
KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSB7CisgICAgICAgIEF1ZGlvQnVmZmVyTGlzdCBm
aWxsQnVmZmVyTGlzdDsKKworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9
IDE7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9
IG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisgICAgICAgIGZpbGxCdWZm
ZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSAoVUludDMyKW1fZGVzdGluYXRpb25C
dWZmZXIuY2FwYWNpdHkoKTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURh
dGEgPSBtX2Rlc3RpbmF0aW9uQnVmZmVyLmRhdGEoKTsKKworICAgICAgICBVSW50MzIgb3V0cHV0
UGFja2V0U2l6ZSA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gbV9kZXN0
aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtX21heE91dHB1dFBhY2tldFNpemU7Cisg
ICAgICAgIFVJbnQzMiBudW1PdXRwdXRQYWNrZXRzID0gKFVJbnQzMiltX2Rlc3RpbmF0aW9uQnVm
ZmVyLmNhcGFjaXR5KCkgLyBvdXRwdXRQYWNrZXRTaXplOworCisgICAgICAgIGF1dG8gZXJyb3Ig
PSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyKG1fY29udmVydGVyLmdldCgpLCBhdWRp
b0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jLCB0aGlzLCAmbnVtT3V0cHV0UGFja2V0cywg
JmZpbGxCdWZmZXJMaXN0LCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSk7
CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJGaWxs
Q29tcGxleEJ1ZmZlciBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbnVtT3V0cHV0UGFja2V0cykKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gYnVmZmVyID0gc2FtcGxlQnVmZmVyV2l0aE51bVBh
Y2tldHMobnVtT3V0cHV0UGFja2V0cywgZmlsbEJ1ZmZlckxpc3QpOworCisgICAgICAgIGF0dGFj
aFByaW1pbmdUcmltc0lmTmVlZGVkKGJ1ZmZlcik7CisKKyAgICAgICAgZXJyb3IgPSBDTVNhbXBs
ZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIsIG1fY3VycmVudE91
dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBDTVRpbWUgbmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9u
KGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCA9
IENNVGltZUFkZChtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG5hdGl2ZUR1
cmF0aW9uKTsKKworICAgICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZl
ckdldE91dHB1dER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1dFByZXNl
bnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25U
aW1lU3RhbXAsIG91dHB1dER1cmF0aW9uKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVl
dWVFbnF1ZXVlKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAgIGlm
IChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVy
KENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJR
dWV1ZUVucXVldWUobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKwor
ICAgIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUobV9sb3dXYXRlclRpbWUp
OworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVy
KENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFs
RGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykKKyAgICAgICAgICAg
IHByb2Nlc3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVCdWZm
ZXJSZWYgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIo
KQoreworICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENN
QnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisKK1Jl
dGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0
YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVC
dWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWlu
KG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCBiMTQ3Y2EyODgyOWIw
ZjEwMzBiZGE3NGEwODQyNmM0NTY1ZTk4NzFlLi5mYjAyYjEyMWY3OTk1NDBjOWVhYmE4NTM3ZTYy
MmNiMTk4YmI1NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaApAQCAtMjUsNiArMjUsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIK
IAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgpAQCAtMzQsMTEgKzM1LDE2IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFk
cy9CaW5hcnlTZW1hcGhvcmUuaD4KKyNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMu
aD4KKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ01UaW1lLmg+CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1
ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0
IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7Cit0eXBl
ZGVmIHN0cnVjdCBvcGFxdWVDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuICpDTUJ1ZmZlclF1ZXVl
VHJpZ2dlclRva2VuOwogCiBPQkpDX0NMQVNTIEFWQXNzZXRXcml0ZXI7CiBPQkpDX0NMQVNTIEFW
QXNzZXRXcml0ZXJJbnB1dDsKK09CSkNfQ0xBU1MgV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlOwog
CiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1lZGlhVGltZTsKQEAgLTQ2LDI5ICs1Miw4MyBAQCBj
bGFzcyBNZWRpYVRpbWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOwogY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNsYXNz
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7CitjbGFz
cyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiB7CitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV1RGOjpEZXN0cnVj
dGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlciwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFnZXI+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUo
Y29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNvbnN0IE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKTsKICAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KTsKICAgICB+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKTsKLSAgICAKLSAgICBi
b29sIHNldHVwV3JpdGVyKCk7Ci0gICAgYm9vbCBzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50
IGhlaWdodCk7Ci0gICAgYm9vbCBzZXRBdWRpb0lucHV0KCk7CisKICAgICB2b2lkIGFwcGVuZFZp
ZGVvU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlv
U2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0
b3BSZWNvcmRpbmcoKTsKICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmKTsKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCisgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIHZvaWQg
YXBwZW5kRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgorI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIo
Ym9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbyk7CisgICAgdm9pZCBjbGVhcigpOworCisgICAg
Ym9vbCBpbml0aWFsaXplKCk7CisKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkVmlkZW9PdXRw
dXRCdWZmZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CisgICAg
c3RhdGljIHZvaWQgY29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENN
QnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOworCisgICAgdm9pZCBzdGFydEFzc2V0V3JpdGVyKCk7
CisgICAgdm9pZCBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworCisgICAgYm9vbCBh
cHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKTsKKyAgICBib29sIGFwcGVuZENvbXBy
ZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpOworCisgICAgdm9pZCBwcm9jZXNzTmV3Q29tcHJlc3Nl
ZEF1ZGlvU2FtcGxlQnVmZmVycygpOworICAgIHZvaWQgcHJvY2Vzc05ld0NvbXByZXNzZWRWaWRl
b1NhbXBsZUJ1ZmZlcnMoKTsKKworICAgIHZvaWQgZmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVy
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYXBwZW5kRW5kT2ZWaWRl
b1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyNl
bHNlCiAgICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0
ZXI+JiYsIFN0cmluZyYmIHBhdGgpOwogICAgIHZvaWQgY2xlYXIoKTsKIAorICAgIGJvb2wgc2V0
dXBXcml0ZXIoKTsKKyAgICBib29sIHNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KTsKKyAgICBib29sIHNldEF1ZGlvSW5wdXQoKTsKKyNlbmRpZgorCisgICAgYm9vbCBtX2hhc1N0
YXJ0ZWRXcml0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsK
KwogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKKworICAgIGJvb2wgbV9p
c1N0b3BwaW5nIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7Cisg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4gbV9mZXRj
aERhdGFDb21wbGV0aW9uSGFuZGxlcjsKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisg
ICAgYm9vbCBtX2hhc0F1ZGlvOworICAgIGJvb2wgbV9oYXNWaWRlbzsKKworICAgIFJldGFpblB0
cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CisgICAg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXBy
ZXNzb3I7CisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0Fzc2V0V3Jp
dGVySW5wdXQ7CisKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV92aWRl
b0Zvcm1hdERlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I+IG1fdmlkZW9Db21wcmVzc29yOworICAgIFJldGFpblB0cjxBVkFzc2V0V3Jp
dGVySW5wdXQ+IG1fdmlkZW9Bc3NldFdyaXRlcklucHV0OworICAgIENNVGltZSBtX2xhc3RWaWRl
b1ByZXNlbnRhdGlvblRpbWU7CisgICAgQ01UaW1lIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lOwor
ICAgIGJvb2wgbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzIHsgZmFsc2UgfTsKKworICAgIFJldGFp
blB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+IG1fd3JpdGVyRGVsZWdhdGU7CisjZWxzZQog
ICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9JbnB1dDsKICAgICBSZXRh
aW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX2F1ZGlvSW5wdXQ7CiAKQEAgLTc4LDE3ICsxMzgs
MTMgQEAgcHJpdmF0ZToKICAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nU2VtYXBo
b3JlOwogICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZTsK
ICAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmU7Ci0gICAg
Ym9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNTdG9wcGVk
IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNGaXJzdEF1ZGlvU2FtcGxlIHsgdHJ1ZSB9OwogICAg
IGRpc3BhdGNoX3F1ZXVlX3QgbV9hdWRpb1B1bGxRdWV1ZTsKICAgICBkaXNwYXRjaF9xdWV1ZV90
IG1fdmlkZW9QdWxsUXVldWU7CiAgICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVm
Pj4gbV92aWRlb0J1ZmZlclBvb2w7CiAgICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPj4gbV9hdWRpb0J1ZmZlclBvb2w7CiAKLSAgICBib29sIG1faXNTdG9wcGluZyB7IGZhbHNl
IH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwotICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhh
bmRsZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAyMzM1
NGY0Nzg0ZGUwOTJmMDQ4N2MxODU0ZmM1YjI2YTVlMjIxMWFjLi5mODQ1NTdjMDM1OWJiNzBhZDEy
NDc4Njc4MDA5NDMxOTYxZGM0ZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0yNiwxMTEgKzI2LDEzMiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aCIKIAorI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgIk1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW0iCisjZWxzZQorCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAorI2luY2x1ZGUgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUu
aCIKKyNpbmNsdWRlICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJX
ZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRl
ci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQuaD4KKyNpbmNs
dWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcl9Qcml2YXRlLmg+CisjaW5jbHVkZSA8cGFs
L2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxwYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDx3dGYvQmxvY2tQdHIuaD4KICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZG
b3VuZGF0aW9uU29mdExpbmsuaD4KIAotI3VuZGVmIEFWRW5jb2RlckJpdFJhdGVLZXkKLSNkZWZp
bmUgQVZFbmNvZGVyQml0UmF0ZUtleSBnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNr
KCkKLSN1bmRlZiBBVkZvcm1hdElES2V5Ci0jZGVmaW5lIEFWRm9ybWF0SURLZXkgZ2V0QVZGb3Jt
YXRJREtleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZOdW1iZXJPZkNoYW5uZWxzS2V5Ci0jZGVm
aW5lIEFWTnVtYmVyT2ZDaGFubmVsc0tleSBnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFs
bGJhY2soKQotI3VuZGVmIEFWU2FtcGxlUmF0ZUtleQotI2RlZmluZSBBVlNhbXBsZVJhdGVLZXkg
Z2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKK0BpbnRlcmZhY2UgV2ViQVZBc3NldFdy
aXRlckRlbGVnYXRlIDogTlNPYmplY3QgPEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4geworICAgIFdl
YWtQdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IG1fd3JpdGVyOworfQog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKil3cml0ZXI7CistICh2b2lkKWNsb3Nl
OworLSAodm9pZClmaW5pc2g7CiAKLXVzaW5nIG5hbWVzcGFjZSBQQUw7CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgeworfTsKIAotc3RhdGljIE5TU3Ry
aW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqKXdyaXRlcgog
ewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKSkKLSAg
ICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCk7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlm
IChzZWxmKQorICAgICAgICBzZWxmLT5tX3dyaXRlciA9IG1ha2VXZWFrUHRyKHdyaXRlcik7CiAK
LSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRm9ybWF0SURL
ZXkiKTsKLSAgICByZXR1cm4gQCJBVkZvcm1hdElES2V5IjsKKyAgICByZXR1cm4gc2VsZjsKIH0K
IAotc3RhdGljIE5TU3RyaW5nICpnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2so
KQorLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25f
QVZOdW1iZXJPZkNoYW5uZWxzS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5k
YXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCk7Ci0KLSAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWTnVtYmVyT2ZDaGFubmVsc0tleSIpOwotICAgIHJldHVy
biBAIkFWTnVtYmVyT2ZDaGFubmVsc0tleSI7CisgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi1z
dGF0aWMgTlNTdHJpbmcgKmdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCistICh2b2lk
KWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdt
ZW50ZWRIZWFkZXJEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkSGVhZGVyRGF0YQogewotICAgIGlm
IChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpKQotICAgICAgICBy
ZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpOworICAgIFVOVVNF
RF9QQVJBTShhc3NldFdyaXRlcik7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAg
ICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pIHsKKyAgICAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZB
c3NldFdyaXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBi
eXRlc10pLCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVk
U2VsZi0+bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPm1fd3Jp
dGVyLT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWEsICJGYWlsZWQgdG8gbG9hZCBBVlNhbXBsZVJhdGVLZXkiKTsKLSAgICByZXR1cm4gQCJBVlNh
bXBsZVJhdGVLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93cml0ZXItPmFwcGVu
ZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRl
c10pLCBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3RoXSk7CiB9CiAKLXN0YXRpYyBOU1N0cmlu
ZyAqZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCistICh2b2lkKWFzc2V0V3Jp
dGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRNZWRp
YURhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRNZWRpYURhdGEgZnJhZ21lbnRlZE1lZGlhRGF0YVJl
cG9ydDooQVZGcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0ICopZnJhZ21lbnRlZE1lZGlhRGF0YVJl
cG9ydAogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJh
dGVLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkVuY29kZXJC
aXRSYXRlS2V5KCk7CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKKyAgICBVTlVTRURf
UEFSQU0oZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCk7CisgICAgaWYgKCFpc01haW5UaHJlYWQo
KSkgeworICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3Ro
XSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFp
blB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRN
ZWRpYURhdGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYg
KHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyKQorICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRT
ZWxmLT5tX3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZFbmNvZGVyQml0UmF0ZUtleSIpOwotICAg
IHJldHVybiBAIkFWRW5jb2RlckJpdFJhdGVLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAgICAg
ICAgbV93cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVu
dGVkTWVkaWFEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0pOwogfQog
Ci1SZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ss
IGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKQorLSAodm9pZCljbG9z
ZQogewotICAgIGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7Ci0gICAgaWYgKHZpZGVvVHJhY2sp
IHsKLSAgICAgICAgYXV0byYgc2V0dGluZ3MgPSB2aWRlb1RyYWNrLT5zZXR0aW5ncygpOwotICAg
ICAgICB3aWR0aCA9IHNldHRpbmdzLndpZHRoKCk7Ci0gICAgICAgIGhlaWdodCA9IHNldHRpbmdz
LmhlaWdodCgpOwotICAgIH0KLSAgICByZXR1cm4gY3JlYXRlKCEhYXVkaW9UcmFjaywgd2lkdGgs
IGhlaWdodCk7CisgICAgbV93cml0ZXIgPSBudWxscHRyOwogfQogCi1SZWZQdHI8TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9v
bCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorLSAodm9pZClmaW5pc2gKIHsKLSAg
ICBOU1N0cmluZyAqZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KEAidmlkZW9zIik7Ci0gICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIvJWxsZC5tcDQiLCBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRp
bWVDbG9jaygpKS52YWx1ZV07Ci0gICAgTlNTdHJpbmcgKnBhdGggPSBbZGlyZWN0b3J5IHN0cmlu
Z0J5QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1lXTsKKyAgICBtX3dyaXRlciA9IG51bGxwdHI7Cit9
CiAKLSAgICBOU1VSTCAqb3V0cHV0VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXTsK
LSAgICBTdHJpbmcgZmlsZVBhdGggPSBbcGF0aCBVVEY4U3RyaW5nXTsKLSAgICBOU0Vycm9yICpl
cnJvciA9IG5pbDsKLSAgICBhdXRvIGF2QXNzZXRXcml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
QVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhVUkw6b3V0cHV0VVJMIGZpbGVUeXBlOkFW
RmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0
YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKWVycm9yLmNvZGUpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpLCBXVEZNb3ZlKGZpbGVQYXRoKSkpOwordXNpbmcg
bmFtZXNwYWNlIFBBTDsKIAotICAgIGlmIChoYXNBdWRpbyAmJiAhd3JpdGVyLT5zZXRBdWRpb0lu
cHV0KCkpCitSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQoreworICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcihoYXNBdWRpbywgd2lkdGggJiYgaGVpZ2h0KSk7CisgICAgaWYgKCF3cml0ZXItPmlu
aXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHdyaXRlcjsK
K30KIAotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKLSAgICAgICAgaWYgKCF3cml0ZXItPnNl
dFZpZGVvSW5wdXQod2lkdGgsIGhlaWdodCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wcmVzc2VkVmlkZW9P
dXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkICptZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgQ01C
dWZmZXJRdWV1ZVRyaWdnZXJUb2tlbikKK3sKKyAgICBhdXRvICp3cml0ZXIgPSBzdGF0aWNfY2Fz
dDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcio+KG1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
KTsKKyAgICB3cml0ZXItPnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCk7
Cit9CiAKLSAgICByZXR1cm4gV1RGTW92ZSh3cml0ZXIpOwordm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6Y29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCAqbWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pCit7Cisg
ICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIq
PihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7CisgICAgd3JpdGVyLT5wcm9jZXNzTmV3Q29t
cHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOwogfQogCi1NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+
JiYgYXZBc3NldFdyaXRlciwgU3RyaW5nJiYgZmlsZVBhdGgpCi0gICAgOiBtX3dyaXRlcihXVEZN
b3ZlKGF2QXNzZXRXcml0ZXIpKQotICAgICwgbV9wYXRoKFdURk1vdmUoZmlsZVBhdGgpKQorTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGJvb2wg
aGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pCisgICAgOiBtX2hhc0F1ZGlvKGhhc0F1ZGlvKQorICAg
ICwgbV9oYXNWaWRlbyhoYXNWaWRlbykKIHsKIH0KIApAQCAtMTM5LDE0MCArMTYwLDIzOCBAQCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkK
ICAgICBjbGVhcigpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVh
cigpCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKCkKIHsKLSAg
ICBpZiAobV92aWRlb0lucHV0KSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1dC5jbGVhcigpOwotICAg
ICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fdmlkZW9QdWxsUXVldWUpOworICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOworICAgIG1fd3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0
ZXJJbnN0YW5jZSgpIGluaXRXaXRoRmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJv
cl0pOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNv
ZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29kZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBtX3dyaXRlckRlbGVnYXRlID0gYWRvcHROUyhbW1dlYkFWQXNzZXRXcml0ZXJEZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhXcml0ZXI6IHRoaXNdKTsKKyAgICBbbV93cml0ZXIuZ2V0KCkg
c2V0RGVsZWdhdGU6bV93cml0ZXJEZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBpZiAobV9oYXNBdWRp
bykgeworICAgICAgICBtX2F1ZGlvQ29tcHJlc3NvciA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6Y3JlYXRlKGNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsK
KyAgICAgICAgaWYgKCFtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgaWYgKG1fYXVkaW9JbnB1dCkgewotICAgICAgICBtX2F1ZGlvSW5wdXQu
Y2xlYXIoKTsKLSAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2F1ZGlvUHVsbFF1ZXVlKTsKKyAg
ICBpZiAobV9oYXNWaWRlbykgeworICAgICAgICBtX3ZpZGVvQ29tcHJlc3NvciA9IFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQsIGNvbXBy
ZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgaWYgKCFtX3Zp
ZGVvQ29tcHJlc3NvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYg
KG1fd3JpdGVyKQotICAgICAgICBtX3dyaXRlci5jbGVhcigpOworICAgIHJldHVybiB0cnVlOwor
fQogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG51bGxwdHIpOwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKQoreworICAgIEFTU0VSVCht
X2hhc1ZpZGVvKTsKKyAgICBpZiAoIW1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAg
ICBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2Ny
aXB0aW9uKG1fdmlkZW9Db21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVCdWZmZXIoKSk7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXNd
IHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobV9oYXNBdWRpbyAmJiAhbV9hdWRpb0Zvcm1h
dERlc2NyaXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc3Rh
cnRBc3NldFdyaXRlcigpOworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFtX2hhc1N0YXJ0
ZWRXcml0aW5nKQorICAgICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1
ZmZlcnMoKTsKIH0KIAotYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0VmlkZW9J
bnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpCiB7Ci0gICAgQVNT
RVJUKCFtX3ZpZGVvSW5wdXQpOwotICAgIAotICAgIE5TRGljdGlvbmFyeSAqY29tcHJlc3Npb25Q
cm9wZXJ0aWVzID0gQHsKLSAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDogW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAxMl0sCi0gICAgICAgIEFWVmlkZW9F
eHBlY3RlZFNvdXJjZUZyYW1lUmF0ZUtleSA6IEAoMzApLAotICAgICAgICBBVlZpZGVvTWF4S2V5
RnJhbWVJbnRlcnZhbEtleSA6IEAoMTIwKSwKLSAgICAgICAgQVZWaWRlb1Byb2ZpbGVMZXZlbEtl
eSA6IEFWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbAotICAgIH07Ci0KLSAgICBO
U0RpY3Rpb25hcnkgKnZpZGVvU2V0dGluZ3MgPSBAewotICAgICAgICBBVlZpZGVvQ29kZWNLZXk6
IEFWVmlkZW9Db2RlY0gyNjQsCi0gICAgICAgIEFWVmlkZW9XaWR0aEtleTogW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6d2lkdGhdLAotICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5OiBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpoZWlnaHRdLAotICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0
aWVzS2V5OiBjb21wcmVzc2lvblByb3BlcnRpZXMKLSAgICB9OworICAgIEFTU0VSVChtX2hhc0F1
ZGlvKTsKKyAgICBpZiAoIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAgICBtX2F1
ZGlvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9u
KG1fYXVkaW9Db21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVCdWZmZXIoKSk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXNdIHsKKyAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAobV9oYXNWaWRlbyAmJiAhbV92aWRlb0Zvcm1hdERlc2Ny
aXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc3RhcnRBc3Nl
dFdyaXRlcigpOworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0
aW5nKQorICAgICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMo
KTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRl
cigpCit7CisgICAgaWYgKG1faGFzVmlkZW8pIHsKKyAgICAgICAgbV92aWRlb0Fzc2V0V3JpdGVy
SW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBp
bml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOm5pbCBzb3Vy
Y2VGb3JtYXRIaW50Om1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKV0pOworICAgICAgICBb
bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1
ZV07CisgICAgICAgIGlmICghW21fd3JpdGVyLmdldCgpIGNhbkFkZElucHV0Om1fdmlkZW9Bc3Nl
dFdyaXRlcklucHV0LmdldCgpXSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlciBm
YWlsZWQgY2FuQWRkSW5wdXQgZm9yIHZpZGVvIik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgW21fd3JpdGVyLmdldCgpIGFkZElucHV0Om1fdmlkZW9Bc3NldFdyaXRl
cklucHV0LmdldCgpXTsKKyAgICB9CiAgICAgCi0gICAgbV92aWRlb0lucHV0ID0gYWRvcHROUyhb
UEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6
QVZNZWRpYVR5cGVWaWRlbyBvdXRwdXRTZXR0aW5nczp2aWRlb1NldHRpbmdzIHNvdXJjZUZvcm1h
dEhpbnQ6bmlsXSk7Ci0gICAgW21fdmlkZW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFs
VGltZTp0cnVlXTsKKyAgICBpZiAobV9oYXNBdWRpbykgeworICAgICAgICBtX2F1ZGlvQXNzZXRX
cml0ZXJJbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5j
ZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6bmls
IHNvdXJjZUZvcm1hdEhpbnQ6bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7CisgICAg
ICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGlt
ZTp0cnVlXTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV9hdWRp
b0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3Jp
dGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgYXVkaW8iKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV9hdWRpb0Fzc2V0
V3JpdGVySW5wdXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBpZiAoIVttX3dyaXRlciBjYW5B
ZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1dCA9IG51
bGxwdHI7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIHZpZGVv
IGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgc3RhcnRXcml0aW5n
XSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBzdGFydFdyaXRpbmciKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92aWRlb0lu
cHV0LmdldCgpXTsKLSAgICBtX3ZpZGVvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRl
KCJXZWJDb3JlVmlkZW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9RVUVVRV9T
RVJJQUwpOworCisgICAgW21fd3JpdGVyLmdldCgpIHN0YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpr
Q01UaW1lWmVyb107CisKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworCisg
ICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpCit7CisgICAg
aWYgKCFtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYXVkaW9Db21wcmVzc29y
LT50YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSBhcHBlbmRT
YW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0QXVkaW9JbnB1dCgpCitib29sIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIoKQog
ewotICAgIEFTU0VSVCghbV9hdWRpb0lucHV0KTsKKyAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29y
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBOU0RpY3Rpb25hcnkgKmF1ZGlvU2V0dGlu
Z3MgPSBAewotICAgICAgICBBVkVuY29kZXJCaXRSYXRlS2V5IDogQCgyODAwMCksCi0gICAgICAg
IEFWRm9ybWF0SURLZXkgOiBAKGtBdWRpb0Zvcm1hdE1QRUc0QUFDKSwKLSAgICAgICAgQVZOdW1i
ZXJPZkNoYW5uZWxzS2V5IDogQCgxKSwKLSAgICAgICAgQVZTYW1wbGVSYXRlS2V5IDogQCgyMjA1
MCkKLSAgICB9OworICAgIGlmICghW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JN
b3JlTWVkaWFEYXRhXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9hdWRpb0lucHV0
ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdp
dGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczphdWRpb1NldHRpbmdz
IHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7Ci0gICAgW21fYXVkaW9JbnB1dCBzZXRFeHBlY3RzTWVk
aWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKLSAgICAKLSAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJ
bnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1dCA9IG51bGxw
dHI7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIGF1ZGlvIGlu
cHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOworICAgIGF1
dG8gYnVmZmVyID0gbV92aWRlb0NvbXByZXNzb3ItPnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsK
KyAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBbbV93
cml0ZXIgYWRkSW5wdXQ6bV9hdWRpb0lucHV0LmdldCgpXTsKLSAgICBtX2F1ZGlvUHVsbFF1ZXVl
ID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3JlQXVkaW9SZWNvcmRpbmdQdWxsQnVmZmVy
UXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworCisgICAgbV9sYXN0VmlkZW9QcmVzZW50
YXRpb25UaW1lID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVy
LmdldCgpKTsKKyAgICBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0
RGVjb2RlVGltZVN0YW1wKGJ1ZmZlci5nZXQoKSk7CisgICAgbV9oYXNFbmNvZGVkVmlkZW9TYW1w
bGVzID0gdHJ1ZTsKKworICAgIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSBhcHBlbmRT
YW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMo
KQoreworICAgIHdoaWxlIChhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIoKSB8fCBh
cHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKSkgeyB9OworfQorCitzdGF0aWMgaW5s
aW5lIHZvaWQgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIoQVZBc3NldFdy
aXRlcklucHV0ICphc3NldFdyaXRlcklucHV0LCBDTVRpbWUgcHJlc2VudGF0aW9uVGltZVN0YW1w
LCBDTVRpbWUgZGVjb2RpbmdUaW1lU3RhbXApCit7CisgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRp
bWluZ0luZm8gPSB7IGtDTVRpbWVJbnZhbGlkLCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGRlY29k
aW5nVGltZVN0YW1wfTsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlciA9IE5VTEw7Cisg
ICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IE5VTEwsIHRydWUsIE5VTEwsIE5VTEwsIE5VTEwsIDAsIDEsICZ0aW1pbmdJbmZvLCAwLCBOVUxM
LCAmYnVmZmVyKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRFbmRzUHJldmlv
dXNTYW1wbGVEdXJhdGlvbk1hcmtlciBmYWlsZWQgQ01TYW1wbGVCdWZmZXJDcmVhdGUgd2l0aCAl
ZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIHNhbXBsZUJ1ZmZl
ciA9IGFkb3B0Q0YoYnVmZmVyKTsKKworICAgIENNU2V0QXR0YWNobWVudChzYW1wbGVCdWZmZXIu
Z2V0KCksIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxlRHVy
YXRpb24sIGtDRkJvb2xlYW5UcnVlLCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUp
OworICAgIGlmICghW2Fzc2V0V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOnNhbXBsZUJ1
ZmZlci5nZXQoKV0pCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIgYXBwZW5kU2FtcGxlQnVmZmVyIHRvIHdyaXRlciBpbnB1
dCBmYWlsZWQiKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9oYXNFbmNvZGVkVmlkZW9TYW1w
bGVzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlh
RGF0YV0pIHsKKyAgICAgICAgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIo
bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCksIG1fbGFzdFZpZGVvUHJlc2VudGF0aW9uVGlt
ZSwgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRl
ZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7CisvKgorICAgIGF1dG8gYmxv
Y2sgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CisgICAgICAgIGlmICh3ZWFrVGhpcykgeworICAgICAgICAgICAgYXBwZW5kRW5kc1ByZXZpb3Vz
U2FtcGxlRHVyYXRpb25NYXJrZXIobV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCksIG1fbGFz
dFZpZGVvUHJlc2VudGF0aW9uVGltZSwgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUpOworICAgICAg
ICAgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IG1hcmtBc0ZpbmlzaGVkXTsKKyAgICAgICAg
fQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworICAgIFttX3ZpZGVvQXNz
ZXRXcml0ZXJJbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6YmxvY2suZ2V0KCldOworKi8KK30KKwordm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXBw
ZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKyAgICBhcHBlbmRFbmRPZlZpZGVvU2FtcGxl
RHVyYXRpb25JZk5lZWRlZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKCkKK3sKKyAgICBpZiAobV93cml0ZXIp
CisgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CisKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRp
b25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKKwog
c3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZm
ZXJXaXRoQ3VycmVudFRpbWVTdGFtcChDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikK
IHsKICAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RU
aW1lQ2xvY2soKSk7CiAgICAgQ01JdGVtQ291bnQgY291bnQgPSAwOwogICAgIENNU2FtcGxlQnVm
ZmVyR2V0U2FtcGxlVGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCAwLCBuaWwsICZjb3Vu
dCk7Ci0gICAgCisKICAgICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3Vu
dCk7CiAgICAgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxC
dWZmZXIsIGNvdW50LCB0aW1lSW5mby5kYXRhKCksICZjb3VudCk7Ci0gICAgCi0gICAgZm9yIChD
TUl0ZW1Db3VudCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKworICAgIGZvciAoYXV0byBpID0g
MDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1w
ID0ga0NNVGltZUludmFsaWQ7CiAgICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVT
dGFtcCA9IHN0YXJ0VGltZTsKICAgICB9Ci0gICAgCisKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBu
ZXdCdWZmZXIgPSBudWxscHRyOwotICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0
ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBj
b3VudCwgdGltZUluZm8uZGF0YSgpLCAmbmV3QnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpCisgICAg
aWYgKGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgp
LCAmbmV3QnVmZmVyKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
Ik1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhO
ZXdUaW1pbmcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihuZXdCdWZmZXIpOwogfQotCisgICAgCiB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNh
bXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIpCiB7Ci0gICAgQVNTRVJUKG1fdmlkZW9JbnB1dCk7
Ci0gICAgaWYgKG1faXNTdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faGFz
U3RhcnRlZFdyaXRpbmcpIHsKLSAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkg
ewotICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWls
ZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKVttX3dyaXRlciBlcnJvcl0pOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25B
dFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwot
ICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAgICAgICAgUmVmUHRyPE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21f
dmlkZW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX3ZpZGVvUHVsbFF1
ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpXSB7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lu
cHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX3ZpZGVv
QnVmZmVyUG9vbC50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFy
bHkoKTsKLSAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgYXBwZW5kU2FtcGxlQnVm
ZmVyOmJ1ZmZlci5nZXQoKV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV92aWRl
b0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgW21fdmlkZW9JbnB1dCBt
YXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1h
cGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1
ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7Ci0gICAgaWYgKCFidWZmZXJX
aXRoQ3VycmVudFRpbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV92aWRlb0xvY2spOwotICAgIG1fdmlkZW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcldpdGhDdXJyZW50VGltZSkpOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHNl
dCB0aGUgdGltZXN0YW1wcyBpZiB0aGV5IGFyZSBhbHJlYWR5IHNldC4KKyAgICBpZiAoYXV0byBi
dWZmZXJXaXRoQ3VycmVudFRpbWUgPSBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3Rh
bXAoc2FtcGxlQnVmZmVyKSkKKyAgICAgICAgbV92aWRlb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1
ZmZlcihidWZmZXJXaXRoQ3VycmVudFRpbWUuZ2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFJl
dGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0
aW9uKGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQpAQCAtMjgwLDY4
ICszOTksMzkgQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJl
Zj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb24KICAgICBhdXRvIGJhc2ljRGVzY3Jp
cHRpb24gPSBXVEY6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNj
cmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOwogICAgIENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZm9ybWF0ID0gbnVsbHB0cjsKICAgICBhdXRvIGVycm9yID0gQ01BdWRp
b0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJhc2ljRGVzY3Jp
cHRpb24sIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXQpOwotICAgIGlmIChlcnJvcikK
KyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVh
dGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KICAgICByZXR1cm4gYWRvcHRDRihmb3JtYXQpOwogfQogCi1zdGF0aWMgaW5saW5lIFJldGFp
blB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0
RGVzY3JpcHRpb25zKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0LCBzaXplX3Qgc2FtcGxl
Q291bnQpCi17Ci0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tH
ZXRIb3N0VGltZUNsb2NrKCkpOwotICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9
IG51bGxwdHI7Ci0gICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRo
UGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxM
LCBOVUxMLCBmb3JtYXQsIHNhbXBsZUNvdW50LCBzdGFydFRpbWUsIE5VTEwsICZzYW1wbGVCdWZm
ZXIpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKLX0KLQotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRh
dGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6
Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVDb3VudCkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRy
PENNU2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9y
bUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0aW1lLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7Ci0g
ICAgQVNTRVJUKG1fYXVkaW9JbnB1dCk7Ci0gICAgaWYgKCghbV9oYXNTdGFydGVkV3JpdGluZyAm
JiBtX3ZpZGVvSW5wdXQpIHx8IG1faXNTdG9wcGVkKQotICAgICAgICByZXR1cm47CiAgICAgYXV0
byBmb3JtYXQgPSBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKICAg
ICBpZiAoIWZvcm1hdCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2lzRmlyc3RBdWRpb1Nh
bXBsZSkgewotICAgICAgICBpZiAoIW1fdmlkZW9JbnB1dCkgewotICAgICAgICAgICAgLy8gYXVk
aW8tb25seSByZWNvcmRpbmcuCi0gICAgICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRp
bmddKSB7Ci0gICAgICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFttX3dyaXRlciBzdGFydFNl
c3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2so
KSldOwotICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7Ci0gICAgICAgIH0K
LSAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSBmYWxzZTsKLSAgICAgICAgUmVmUHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAg
W21fYXVkaW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX2F1ZGlvUHVs
bFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpXSB7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV9hdWRp
b0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7
Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX2F1
ZGlvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2Nr
RWFybHkoKTsKLSAgICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZl
cjpidWZmZXIuZ2V0KCldOwotICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAg
ICBpZiAobV9pc1N0b3BwZWQgJiYgbV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAgICAg
ICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH1dOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENNU2FtcGxlQnVm
ZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9T
YW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1
bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50LCB0
b0NNVGltZSh0aW1lKSwgTlVMTCwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIgY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZh
aWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Cisg
ICAgYXV0byBidWZmZXIgPSBhZG9wdENGKHNhbXBsZUJ1ZmZlcik7CiAKLSAgICBhdXRvIHNhbXBs
ZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhm
b3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50KTsKLSAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKLSAgICAg
ICAgcmV0dXJuOwotICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJG
cm9tQXVkaW9CdWZmZXJMaXN0KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVs
dCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0Pihk
YXRhKS5saXN0KCkpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuOworICAgIGVycm9y
ID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdChidWZmZXIu
Z2V0KCksIGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGRvd25j
YXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkubGlzdCgpKTsKKyAgICBpZiAoZXJyb3IpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlciBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9h
dWRpb0xvY2spOwotICAgIG1fYXVkaW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKHNhbXBsZUJ1
ZmZlcikpOwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1w
bGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgc2l6
ZV90IHNhbXBsZUNvdW50KQoreworICAgIGlmIChhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1
ZGlvU2FtcGxlQnVmZmVyKGRhdGEsIGRlc2NyaXB0aW9uLCB0aW1lLCBzYW1wbGVDb3VudCkpCisg
ICAgICAgIG1fYXVkaW9Db21wcmVzc29yLT5hZGRTYW1wbGVCdWZmZXIoc2FtcGxlQnVmZmVyLmdl
dCgpKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGlu
ZygpCkBAIC0zNTAsMzUgKzQ0MCw0MCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpzdG9wUmVjb3JkaW5nKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc1N0b3BwZWQgPSB0
cnVlOworCisgICAgaWYgKG1fdmlkZW9Db21wcmVzc29yKQorICAgICAgICBtX3ZpZGVvQ29tcHJl
c3Nvci0+ZmluaXNoKCk7CisgICAgaWYgKG1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICBtX2F1
ZGlvQ29tcHJlc3Nvci0+ZmluaXNoKCk7CisKICAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcp
CiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZBc3Nl
dFdyaXRlclN0YXR1c1dyaXRpbmcpOwotICAgIGlmIChtX3ZpZGVvSW5wdXQpCi0gICAgICAgIG1f
ZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLndhaXQoKTsKLQotICAgIGlmIChtX2F1ZGlvSW5w
dXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKIAogICAg
IG1faXNTdG9wcGluZyA9IHRydWU7Ci0gICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29t
cGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3Zl
KHdlYWtQdHIpLCBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShtX3BhdGgpXSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7Ci0g
ICAgICAgICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAg
ICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOwor
ICAgIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7Ci0gICAgICAg
ICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2lzRmlyc3RB
dWRpb1NhbXBsZSA9IHRydWU7Ci0gICAgICAgICAgICBjbGVhcigpOwotICAgICAgICB9KTsKLSAg
ICAgICAgbV9maW5pc2hXcml0aW5nU2VtYXBob3JlLnNpZ25hbCgpOwotICAgIH1dOwotICAgIG1f
ZmluaXNoV3JpdGluZ1NlbWFwaG9yZS53YWl0KCk7CisgICAgICAgIFttX3dyaXRlciBmbHVzaF07
CisgICAgICAgIFttX3dyaXRlciBmaW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0
aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikgeworICAg
ICAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdURk1vdmUobV9kYXRhKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlOworICAgICAg
ICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfV07CisgICAgfSk7
CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtMzkyLDYgKzQ4NywyNSBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQgogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
Cit7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgc2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9kYXRhLT5h
cHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmFwcGVuZERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFtX2Rh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIG1fZGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVT
RShBVkZPVU5EQVRJT04pCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYUZp
bGVCYXNlZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
M2ZiMWVlYWU3ZDRhNDU1ZTM1NGExNmViNmE2ODQ2OGVkNDEyZTRmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tCkBAIC0wLDAgKzEsMzgzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisK
KyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViQXVk
aW9CdWZmZXJMaXN0LmgiCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXIuaD4K
KyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcklucHV0Lmg+CisjaW5jbHVkZSA8
cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworI2ltcG9ydCA8cGFsL2NvY29h
L0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKKyN1bmRlZiBBVkVuY29kZXJCaXRSYXRlS2V5Cisj
ZGVmaW5lIEFWRW5jb2RlckJpdFJhdGVLZXkgZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxs
YmFjaygpCisjdW5kZWYgQVZGb3JtYXRJREtleQorI2RlZmluZSBBVkZvcm1hdElES2V5IGdldEFW
Rm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQorI3VuZGVmIEFWTnVtYmVyT2ZDaGFubmVsc0tleQor
I2RlZmluZSBBVk51bWJlck9mQ2hhbm5lbHNLZXkgZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0
aEZhbGxiYWNrKCkKKyN1bmRlZiBBVlNhbXBsZVJhdGVLZXkKKyNkZWZpbmUgQVZTYW1wbGVSYXRl
S2V5IGdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworc3RhdGljIE5TU3RyaW5nICpnZXRBVkZvcm1h
dElES2V5V2l0aEZhbGxiYWNrKCkKK3sKKyAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlv
bl9BVkZvcm1hdElES2V5KCkpCisgICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25f
QVZGb3JtYXRJREtleSgpOworCisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQg
dG8gbG9hZCBBVkZvcm1hdElES2V5Iik7CisgICAgcmV0dXJuIEAiQVZGb3JtYXRJREtleSI7Cit9
CisKK3N0YXRpYyBOU1N0cmluZyAqZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxiYWNr
KCkKK3sKKyAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5l
bHNLZXkoKSkKKyAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVk51bWJlck9m
Q2hhbm5lbHNLZXkoKTsKKworICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRv
IGxvYWQgQVZOdW1iZXJPZkNoYW5uZWxzS2V5Iik7CisgICAgcmV0dXJuIEAiQVZOdW1iZXJPZkNo
YW5uZWxzS2V5IjsKK30KKworc3RhdGljIE5TU3RyaW5nICpnZXRBVlNhbXBsZVJhdGVLZXlXaXRo
RmFsbGJhY2soKQoreworICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxl
UmF0ZUtleSgpKQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxl
UmF0ZUtleSgpOworCisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9h
ZCBBVlNhbXBsZVJhdGVLZXkiKTsKKyAgICByZXR1cm4gQCJBVlNhbXBsZVJhdGVLZXkiOworfQor
CitzdGF0aWMgTlNTdHJpbmcgKmdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2soKQor
eworICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVLZXko
KSkKKyAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRl
S2V5KCk7CisKKyAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFW
RW5jb2RlckJpdFJhdGVLZXkiKTsKKyAgICByZXR1cm4gQCJBVkVuY29kZXJCaXRSYXRlS2V5IjsK
K30KKworUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkK
K3sKKyAgICBOU1N0cmluZyAqZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5
RGlyZWN0b3J5KEAidmlkZW9zIik7CisgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIvJWxsZC5tcDQiLCBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0
SG9zdFRpbWVDbG9jaygpKS52YWx1ZV07CisgICAgTlNTdHJpbmcgKnBhdGggPSBbZGlyZWN0b3J5
IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1lXTsKKworICAgIE5TVVJMICpvdXRwdXRV
UkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhdOworICAgIFN0cmluZyBmaWxlUGF0aCA9
IFtwYXRoIFVURjhTdHJpbmddOworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIGF1dG8g
YXZBc3NldFdyaXRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5zdGFuY2Uo
KSBpbml0V2l0aFVSTDpvdXRwdXRVUkwgZmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZl
cnJvcl0pOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9y
IGNvZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29kZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpLCBXVEZNb3ZlKGZpbGVQYXRoKSkpOwor
CisgICAgaWYgKGhhc0F1ZGlvICYmICF3cml0ZXItPnNldEF1ZGlvSW5wdXQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAod2lkdGggJiYgaGVpZ2h0KSB7CisgICAgICAgIGlm
ICghd3JpdGVyLT5zZXRWaWRlb0lucHV0KHdpZHRoLCBoZWlnaHQpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIFdURk1vdmUod3JpdGVyKTsKK30KKwor
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJl
dGFpblB0cjxBVkFzc2V0V3JpdGVyPiYmIGF2QXNzZXRXcml0ZXIsIFN0cmluZyYmIGZpbGVQYXRo
KQorICAgIDogbV93cml0ZXIoV1RGTW92ZShhdkFzc2V0V3JpdGVyKSkKKyAgICAsIG1fcGF0aChX
VEZNb3ZlKGZpbGVQYXRoKSkKK3sKK30KKworTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCit7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQoreworICAgIGlmIChtX3ZpZGVvSW5w
dXQpIHsKKyAgICAgICAgbV92aWRlb0lucHV0LmNsZWFyKCk7CisgICAgICAgIGRpc3BhdGNoX3Jl
bGVhc2UobV92aWRlb1B1bGxRdWV1ZSk7CisgICAgfQorICAgIGlmIChtX2F1ZGlvSW5wdXQpIHsK
KyAgICAgICAgbV9hdWRpb0lucHV0LmNsZWFyKCk7CisgICAgICAgIGRpc3BhdGNoX3JlbGVhc2Uo
bV9hdWRpb1B1bGxRdWV1ZSk7CisgICAgfQorICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93
cml0ZXIuY2xlYXIoKTsKKworICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGF1dG8gY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKK30KKworYm9vbCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6c2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7
CisgICAgQVNTRVJUKCFtX3ZpZGVvSW5wdXQpOworICAgIAorICAgIE5TRGljdGlvbmFyeSAqY29t
cHJlc3Npb25Qcm9wZXJ0aWVzID0gQHsKKyAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5
IDogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAxMl0sCisgICAgICAg
IEFWVmlkZW9FeHBlY3RlZFNvdXJjZUZyYW1lUmF0ZUtleSA6IEAoMzApLAorICAgICAgICBBVlZp
ZGVvTWF4S2V5RnJhbWVJbnRlcnZhbEtleSA6IEAoMTIwKSwKKyAgICAgICAgQVZWaWRlb1Byb2Zp
bGVMZXZlbEtleSA6IEFWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbAorICAgIH07
CisKKyAgICBOU0RpY3Rpb25hcnkgKnZpZGVvU2V0dGluZ3MgPSBAeworICAgICAgICBBVlZpZGVv
Q29kZWNLZXk6IEFWVmlkZW9Db2RlY0gyNjQsCisgICAgICAgIEFWVmlkZW9XaWR0aEtleTogW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6d2lkdGhdLAorICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5OiBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpoZWlnaHRdLAorICAgICAgICBBVlZpZGVvQ29tcHJlc3Np
b25Qcm9wZXJ0aWVzS2V5OiBjb21wcmVzc2lvblByb3BlcnRpZXMKKyAgICB9OworICAgIAorICAg
IG1fdmlkZW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0
YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6
dmlkZW9TZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5pbF0pOworICAgIFttX3ZpZGVvSW5wdXQg
c2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07CisgICAgCisgICAgaWYgKCFbbV93
cml0ZXIgY2FuQWRkSW5wdXQ6bV92aWRlb0lucHV0LmdldCgpXSkgeworICAgICAgICBtX3ZpZGVv
SW5wdXQgPSBudWxscHRyOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
InRoZSB2aWRlbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0
ZXIiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBbbV93cml0ZXIgYWRkSW5w
dXQ6bV92aWRlb0lucHV0LmdldCgpXTsKKyAgICBtX3ZpZGVvUHVsbFF1ZXVlID0gZGlzcGF0Y2hf
cXVldWVfY3JlYXRlKCJXZWJDb3JlVmlkZW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQ
QVRDSF9RVUVVRV9TRVJJQUwpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpzZXRBdWRpb0lucHV0KCkKK3sKKyAgICBBU1NFUlQoIW1fYXVk
aW9JbnB1dCk7CisKKyAgICBOU0RpY3Rpb25hcnkgKmF1ZGlvU2V0dGluZ3MgPSBAeworICAgICAg
ICBBVkVuY29kZXJCaXRSYXRlS2V5IDogQCgyODAwMCksCisgICAgICAgIEFWRm9ybWF0SURLZXkg
OiBAKGtBdWRpb0Zvcm1hdE1QRUc0QUFDKSwKKyAgICAgICAgQVZOdW1iZXJPZkNoYW5uZWxzS2V5
IDogQCgxKSwKKyAgICAgICAgQVZTYW1wbGVSYXRlS2V5IDogQCgyMjA1MCkKKyAgICB9OworCisg
ICAgbV9hdWRpb0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dElu
c3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5n
czphdWRpb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7CisgICAgW21fYXVkaW9JbnB1
dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICAKKyAgICBpZiAoIVtt
X3dyaXRlciBjYW5BZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldKSB7CisgICAgICAgIG1fYXVk
aW9JbnB1dCA9IG51bGxwdHI7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAidGhlIGF1ZGlvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdy
aXRlciIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFttX3dyaXRlciBhZGRJ
bnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldOworICAgIG1fYXVkaW9QdWxsUXVldWUgPSBkaXNwYXRj
aF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVBdWRpb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJ
U1BBVENIX1FVRVVFX1NFUklBTCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBpbmxp
bmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJl
bnRUaW1lU3RhbXAoQ01TYW1wbGVCdWZmZXJSZWYgb3JpZ2luYWxCdWZmZXIpCit7CisgICAgQ01U
aW1lIHN0YXJ0VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkp
OworICAgIENNSXRlbUNvdW50IGNvdW50ID0gMDsKKyAgICBDTVNhbXBsZUJ1ZmZlckdldFNhbXBs
ZVRpbWluZ0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgMCwgbmlsLCAmY291bnQpOworICAgIAor
ICAgIFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWVJbmZvKGNvdW50KTsKKyAgICBDTVNh
bXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgY291bnQs
IHRpbWVJbmZvLmRhdGEoKSwgJmNvdW50KTsKKyAgICAKKyAgICBmb3IgKENNSXRlbUNvdW50IGkg
PSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICB0aW1lSW5mb1tpXS5kZWNvZGVUaW1lU3Rh
bXAgPSBrQ01UaW1lSW52YWxpZDsKKyAgICAgICAgdGltZUluZm9baV0ucHJlc2VudGF0aW9uVGlt
ZVN0YW1wID0gc3RhcnRUaW1lOworICAgIH0KKyAgICAKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBu
ZXdCdWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0
ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBj
b3VudCwgdGltZUluZm8uZGF0YSgpLCAmbmV3QnVmZmVyKTsKKyAgICBpZiAoZXJyb3IpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdENGKG5ld0J1ZmZlcik7Cit9CisK
K3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZFZpZGVvU2FtcGxlQnVmZmVy
KENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcikKK3sKKyAgICBBU1NFUlQobV92aWRlb0lu
cHV0KTsKKyAgICBpZiAobV9pc1N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
bV9oYXNTdGFydGVkV3JpdGluZykgeworICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRp
bmddKSB7CisgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNl
IGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpW21fd3JpdGVyIGVycm9yXSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgW21fd3JpdGVyIHN0YXJ0U2Vz
c2lvbkF0U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygp
KV07CisgICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOworICAgICAgICBSZWZQdHI8
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOworICAgICAg
ICBbbV92aWRlb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fdmlkZW9Q
dWxsUXVldWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyldIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpZiAoIVttX3Zp
ZGVvSW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2Nr
KTsKKyAgICAgICAgICAgICAgICBpZiAobV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1f
dmlkZW9CdWZmZXJQb29sLnRha2VGaXJzdCgpOworICAgICAgICAgICAgICAgIGxvY2tlci51bmxv
Y2tFYXJseSgpOworICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBhcHBlbmRTYW1w
bGVCdWZmZXI6YnVmZmVyLmdldCgpXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9IHdoaWxlICh0cnVlKTsKKyAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBt
X3ZpZGVvQnVmZmVyUG9vbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBbbV92aWRlb0lu
cHV0IG1hcmtBc0ZpbmlzaGVkXTsKKyAgICAgICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRl
b1NlbWFwaG9yZS5zaWduYWwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfV07CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgYXV0byBidWZmZXJXaXRoQ3VycmVudFRpbWUgPSBjb3B5U2Ft
cGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoIWJ1
ZmZlcldpdGhDdXJyZW50VGltZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3ZpZGVvTG9jayk7CisgICAgbV92aWRlb0J1ZmZlclBvb2wuYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyV2l0aEN1cnJlbnRUaW1lKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmV0YWlu
UHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24o
Y29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCit7CisgICAgYXV0byBi
YXNpY0Rlc2NyaXB0aW9uID0gV1RGOjpnZXQ8Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKj4oZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLmRlc2NyaXB0aW9uKTsKKyAg
ICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdCA9IG51bGxwdHI7CisgICAgYXV0byBlcnJv
ciA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBi
YXNpY0Rlc2NyaXB0aW9uLCAwLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0KTsKKyAgICBp
ZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdENGKGZv
cm1hdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBj
cmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMoQ01Gb3JtYXREZXNj
cmlwdGlvblJlZiBmb3JtYXQsIHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBDTVRpbWUgc3Rh
cnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7CisgICAg
Q01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGVycm9y
ID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgTlVMTCwgZmFsc2UsIE5VTEwsIE5VTEwsIGZvcm1hdCwgc2FtcGxlQ291
bnQsIHN0YXJ0VGltZSwgTlVMTCwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRDRihzYW1wbGVCdWZmZXIpOwor
fQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRBdWRpb1NhbXBsZUJ1
ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90IHNhbXBs
ZUNvdW50KQoreworICAgIEFTU0VSVChtX2F1ZGlvSW5wdXQpOworICAgIGlmICgoIW1faGFzU3Rh
cnRlZFdyaXRpbmcgJiYgbV92aWRlb0lucHV0KSB8fCBtX2lzU3RvcHBlZCkKKyAgICAgICAgcmV0
dXJuOworICAgIGF1dG8gZm9ybWF0ID0gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihkZXNj
cmlwdGlvbik7CisgICAgaWYgKCFmb3JtYXQpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9p
c0ZpcnN0QXVkaW9TYW1wbGUpIHsKKyAgICAgICAgaWYgKCFtX3ZpZGVvSW5wdXQpIHsKKyAgICAg
ICAgICAgIC8vIGF1ZGlvLW9ubHkgcmVjb3JkaW5nLgorICAgICAgICAgICAgaWYgKCFbbV93cml0
ZXIgc3RhcnRXcml0aW5nXSkgeworICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBbbV93
cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRI
b3N0VGltZUNsb2NrKCkpXTsKKyAgICAgICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVl
OworICAgICAgICB9CisgICAgICAgIG1faXNGaXJzdEF1ZGlvU2FtcGxlID0gZmFsc2U7CisgICAg
ICAgIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9IHRo
aXM7CisgICAgICAgIFttX2F1ZGlvSW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVl
dWU6bV9hdWRpb1B1bGxRdWV1ZSB1c2luZ0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKV0geworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAg
IGlmICghW21fYXVkaW9JbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9hdWRpb0xvY2spOworICAgICAgICAgICAgICAgIGlmIChtX2F1ZGlvQnVmZmVyUG9vbC5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gbV9hdWRpb0J1ZmZlclBvb2wudGFrZUZpcnN0KCk7CisgICAgICAgICAgICAgICAg
bG9ja2VyLnVubG9ja0Vhcmx5KCk7CisgICAgICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBhcHBl
bmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHRydWUp
OworICAgICAgICAgICAgaWYgKG1faXNTdG9wcGVkICYmIG1fYXVkaW9CdWZmZXJQb29sLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgbWFya0FzRmluaXNoZWRdOwor
ICAgICAgICAgICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLnNpZ25hbCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9XTsKKyAgICB9CisKKyAgICBhdXRvIHNhbXBsZUJ1ZmZl
ciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhmb3JtYXQu
Z2V0KCksIHNhbXBsZUNvdW50KTsKKyAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuOworICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVk
aW9CdWZmZXJMaXN0KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NG
QWxsb2NhdG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5s
aXN0KCkpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7CisgICAgbV9hdWRpb0J1ZmZlclBvb2wuYXBwZW5k
KFdURk1vdmUoc2FtcGxlQnVmZmVyKSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnN0b3BSZWNvcmRpbmcoKQoreworICAgIGlmIChtX2lzU3RvcHBlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworICAgIGlmICghbV9oYXNTdGFydGVk
V3JpdGluZykKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChbbV93cml0ZXIgc3RhdHVzXSA9
PSBBVkFzc2V0V3JpdGVyU3RhdHVzV3JpdGluZyk7CisgICAgaWYgKG1fdmlkZW9JbnB1dCkKKyAg
ICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmUud2FpdCgpOworCisgICAgaWYgKG1f
YXVkaW9JbnB1dCkKKyAgICAgICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUud2FpdCgp
OworCisgICAgbV9pc1N0b3BwaW5nID0gdHJ1ZTsKKyAgICBbbV93cml0ZXIgZmluaXNoV3JpdGlu
Z1dpdGhDb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1B0ciA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1B0ciA9
IFdURk1vdmUod2Vha1B0ciksIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKG1fcGF0aCldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtQdHIp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBm
YWxzZTsKKyAgICAgICAgICAgIGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKQorICAg
ICAgICAgICAgICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGJ1
ZmZlcik7CisKKyAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7CisgICAgICAgICAgICBt
X2hhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2U7CisgICAgICAgICAgICBtX2lzRmlyc3RBdWRpb1Nh
bXBsZSA9IHRydWU7CisgICAgICAgICAgICBjbGVhcigpOworICAgICAgICB9KTsKKyAgICAgICAg
bV9maW5pc2hXcml0aW5nU2VtYXBob3JlLnNpZ25hbCgpOworICAgIH1dOworICAgIG1fZmluaXNo
V3JpdGluZ1NlbWFwaG9yZS53YWl0KCk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChtX2lzU3RvcHBpbmcpIHsK
KyAgICAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBidWZmZXIgPSBX
VEZNb3ZlKG1fZGF0YSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWQyOTYzZWY0NDUxZmVmOWQ3NjQwZmVj
MGYwNzMyZDIzOTFkOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBAIC0w
LDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSA8Q29yZU1lZGlhL0Nv
cmVNZWRpYS5oPgorI2luY2x1ZGUgPFZpZGVvVG9vbEJveC9WVEVycm9ycy5oPgorCit0eXBlZGVm
IHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVm
IHN0cnVjdCBPcGFxdWVWVENvbXByZXNzaW9uU2Vzc2lvbiogIFZUQ29tcHJlc3Npb25TZXNzaW9u
UmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IGNyZWF0ZShD
TVZpZGVvQ29kZWNUeXBlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxs
YmFja09iamVjdCk7CisgICAgflZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpOworCisgICAg
dm9pZCBmaW5pc2goKTsKKyAgICB2b2lkIGFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJl
Zik7CisgICAgQ01TYW1wbGVCdWZmZXJSZWYgZ2V0T3V0cHV0U2FtcGxlQnVmZmVyKCk7CisgICAg
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiB0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKENNVmlk
ZW9Db2RlY1R5cGUpOworCisgICAgYm9vbCBpbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2Vy
Q2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKworICAgIHZvaWQgcHJvY2Vzc1NhbXBs
ZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CisgICAgYm9vbCBpbml0Q29tcHJlc3Npb25TZXNz
aW9uKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZik7CisKKyAgICBzdGF0aWMgdm9pZCB2aWRl
b0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwgT1NTdGF0dXMsIFZURW5j
b2RlSW5mb0ZsYWdzLCBDTVNhbXBsZUJ1ZmZlclJlZik7CisKKyAgICBkaXNwYXRjaF9xdWV1ZV90
IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4g
bV9vdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBSZXRhaW5QdHI8VlRDb21wcmVzc2lvblNlc3Npb25S
ZWY+IG1fdnRTZXNzaW9uOworCisgICAgYm9vbCBtX2lzRW5jb2RpbmcgeyBmYWxzZSB9OworCisg
ICAgQ01WaWRlb0NvZGVjVHlwZSBtX291dHB1dENvZGVjVHlwZTsKKyAgICBmbG9hdCBtX21heEtl
eUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiB7IDIuMCB9OworICAgIHVuc2lnbmVkIG1fZXhwZWN0ZWRG
cmFtZVJhdGUgeyAzMCB9OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9W
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA4ZmU0MzI5NWVmNTJh
Njc5MGZmMWRlY2FjYTZmMzBkOWJiYmFmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLm1tCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0ICJMb2dnaW5nLmgi
CisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpbXBvcnQgPFZpZGVvVG9vbGJveC9WVENvbXByZXNzaW9uU2Vzc2lvbi5o
PgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpbXBvcnQgPHBhbC9jZi9WaWRlb1Rv
b2xib3hTb2Z0TGluay5oPgorCit1c2luZyBuYW1lc3BhY2UgUEFMOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IFZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKENNVmlkZW9Db2RlY1R5cGUgb3V0cHV0
Q29kZWNUeXBlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBj
YWxsYmFja09iamVjdCkKK3sKKyAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yKG91dHB1dENvZGVjVHlwZSkpOworICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShj
YWxsYmFjaywgY2FsbGJhY2tPYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gY29tcHJlc3NvcjsKK30KKworVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUp
CisgICAgOiBtX3NlcmlhbERpc3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNv
bS5hcHBsZS5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJ
QUwpIH0KKyAgICAsIG1fb3V0cHV0Q29kZWNUeXBlIHsgb3V0cHV0Q29kZWNUeXBlIH0KK3sKK30K
KworVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yKCkKK3sKKyAgICBpZiAobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKQorICAgICAgICBkaXNwYXRj
aF9yZWxlYXNlKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSk7Cit9CisKK2Jvb2wgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjppbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sg
Y2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KQoreworICAgIENNQnVmZmVyUXVldWVSZWYg
b3V0cHV0QnVmZmVyUXVldWU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JV
bnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciB1bmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBxdWV1ZSAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBtX291dHB1dEJ1ZmZlclF1ZXVlID0gb3V0cHV0QnVmZmVy
UXVldWU7CisgICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0cHV0QnVmZmVyUXVl
dWUuZ2V0KCksIGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVyUXVldWVUcmlnZ2Vy
X1doZW5EYXRhQmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywgTlVMTCk7CisKKyAgICBtX2lzRW5j
b2RpbmcgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlz
cGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9u
Q29tcGxldGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisKKyAgICAgICAgZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0Vu
ZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisg
ICAgICAgIG1faXNFbmNvZGluZyA9IGZhbHNlOworICAgIH0pOworfQorCit2b2lkIFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNv
biwgdm9pZCosIE9TU3RhdHVzIHN0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVm
ZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihzdGF0dXMsIE1lZGlh
U3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHZpZGVvQ29tcHJlc3Npb25DYWxs
YmFjayBzdGF0dXMgaXMgJWQiLCBzdGF0dXMpOworICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCisg
ICAgICAgIHJldHVybjsKKworICAgIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciAqY29tcHJl
c3NvciA9IHN0YXRpY19jYXN0PFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcio+KHJlZkNvbik7
CisKKyAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUoY29tcHJlc3Nvci0+bV9v
dXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgYnVmZmVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
RihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZm
ZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cit9CisKK2Jvb2wgVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0Q29tcHJlc3Npb25TZXNzaW9uKENNVmlkZW9Gb3Jt
YXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKK3sKKyAgICBDTVZpZGVvRGltZW5z
aW9ucyBkaW1lbnNpb25zID0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9ucyhm
b3JtYXREZXNjcmlwdGlvbik7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIE5TRGljdGlvbmFyeSAq
ZW5jb2RlclNwZWNpZmljYXRpb25zID0gbmlsOworI2Vsc2UKKyAgICBOU0RpY3Rpb25hcnkgKmVu
Y29kZXJTcGVjaWZpY2F0aW9ucyA9IEB7KF9fYnJpZGdlIE5TU3RyaW5nICopa1ZUVmlkZW9FbmNv
ZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyOkBZ
RVN9OworI2VuZGlmCisKKyAgICBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiB2dFNlc3Npb247Cisg
ICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBtX291dHB1dENvZGVj
VHlwZSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZillbmNvZGVyU3BlY2lmaWNhdGlvbnMsIE5V
TEwsIE5VTEwsIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjaywgdGhpcywgJnZ0U2Vzc2lvbik7Cisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlIGZh
aWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorICAgIG1f
dnRTZXNzaW9uID0gYWRvcHRDRih2dFNlc3Npb24pOworCisgICAgZXJyb3IgPSBWVFNlc3Npb25T
ZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9S
ZWFsVGltZSwga0NGQm9vbGVhblRydWUpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9y
LCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQ
cm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24u
Z2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0
aW9uLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKUAobV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24p
KTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Q
cm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQo
KSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdl
IENGVHlwZVJlZilAKG1fZXhwZWN0ZWRGcmFtZVJhdGUpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRT
ZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1l
UmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIC8vIEZJWE1FOiBTZXQgdmlkZW8g
Y29tcHJlc3Npb24gcmF0ZS4KKyAgICBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFy
ZVRvRW5jb2RlRnJhbWVzKG1fdnRTZXNzaW9uLmdldCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRD
b21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisKKyAgICByZXR1cm4gWUVTOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7
CisgICAgaWYgKCFtX3Z0U2Vzc2lvbikgeworICAgICAgICBpZiAoIWluaXRDb21wcmVzc2lvblNl
c3Npb24oQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gQ01TYW1wbGVC
dWZmZXJHZXRJbWFnZUJ1ZmZlcihidWZmZXIpOworICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZVN0
YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAg
ICBhdXRvIGR1cmF0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAg
IGF1dG8gZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKG1fdnRTZXNzaW9u
LmdldCgpLCBpbWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgTlVM
TCwgdGhpcywgTlVMTCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3Ry
ZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5j
b2RlRnJhbWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVy
KQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAg
ICBpZiAoIW1faXNFbmNvZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwcm9j
ZXNzU2FtcGxlQnVmZmVyKGJ1ZmZlcik7CisgICAgfSk7Cit9CisKK0NNU2FtcGxlQnVmZmVyUmVm
IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sK
KyAgICByZXR1cm4gKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZl
clF1ZXVlR2V0SGVhZChtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOworfQorCitSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91
dHB1dFNhbXBsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVy
UmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX291
dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2NhZTY0
ZjY5ODc0MWZiMTZjMmNhNTEwMTBiYmQ5OWRiMGEwYzdhZC4uZjI1OTUwMWU5NTc3MDQ3NzhlYmQ5
M2NiNDgzN2Y1M2IwMWJlZGI2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI4ICB5
b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBB
VkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIGh0dHAvd3B0L21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nl
c3MuaHRtbDoKKyAgICAgICAgUmVtb3ZlIHdlYiBhdWRpbyBnZW5lcmF0aW9uIHNpbmNlIHRoZXJl
IHNlZW1zIHRvIGJlIHNvbWUgdW5zdGFiaWxpdHkgaW4gd2ViIGF1ZGlvIC0+IHN0cmVhbSAtPiBt
ZWRpYSByZWNvcmRlci4KKyAgICAgICAgd2hpY2ggc2hvdWxkIGJlIGZpeGVkIGFzIGZvbGxvdy11
cCBzcGVjaWZpYyBwYXRjaGVzLgorCiAyMDIwLTAxLTI4ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBCbG9iIG1lZGlhIGxvYWRpbmcgZG9lcyBub3Qgd29yayB3
aXRoIEdQVVByb2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nl
c3MuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbAppbmRleCAzMzMw
NmRlNzk0N2JiYjkyNTczOTRjM2JhMTk2MjAxYjA1ODQ3ODhiLi44ODAxNDg2NTdlMjVkZGUzM2Ni
MTA5MzQ2ZDZjYmVhYWI3ZjljZWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1n
cHVwcm9jZXNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1s
CkBAIC01NiwxNyArNTYsNyBAQAogICAgIH0KIAogICAgIGFzeW5jX3Rlc3QodCA9PiB7Ci0gICAg
ICAgIGNvbnN0IGFjID0gbmV3IEF1ZGlvQ29udGV4dCgpOwotICAgICAgICBjb25zdCBvc2MgPSBh
Yy5jcmVhdGVPc2NpbGxhdG9yKCk7Ci0gICAgICAgIGNvbnN0IGRlc3QgPSBhYy5jcmVhdGVNZWRp
YVN0cmVhbURlc3RpbmF0aW9uKCk7Ci0gICAgICAgIGNvbnN0IGF1ZGlvID0gZGVzdC5zdHJlYW07
Ci0gICAgICAgIG9zYy5jb25uZWN0KGRlc3QpOwotCiAgICAgICAgIGNvbnN0IHZpZGVvID0gY3Jl
YXRlVmlkZW9TdHJlYW0oKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWRlby5nZXRBdWRpb1Ry
YWNrcygpLmxlbmd0aCwgMCwgInZpZGVvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRoIG5vIGF1ZGlv
IHRyYWNrIik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoYXVkaW8uZ2V0QXVkaW9UcmFja3MoKS5s
ZW5ndGgsIDEsICJhdWRpbyBtZWRpYXN0cmVhbSBzdGFydHMgd2l0aCBvbmUgYXVkaW8gdHJhY2si
KTsKLSAgICAgICAgdmlkZW8uYWRkVHJhY2soYXVkaW8uZ2V0QXVkaW9UcmFja3MoKVswXSk7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHModmlkZW8uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgsIDEsICJ2
aWRlbyBtZWRpYXN0cmVhbSBzdGFydHMgd2l0aCBvbmUgYXVkaW8gdHJhY2siKTsKICAgICAgICAg
Y29uc3QgcmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcih2aWRlbyk7CiAgICAgICAgIGxldCBt
b2RlID0gMDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389240</attachid>
            <date>2020-01-30 05:20:41 -0800</date>
            <delta_ts>2020-02-03 05:32:34 -0800</delta_ts>
            <desc>Fix include path and commented out code</desc>
            <filename>bug-206582-20200130142039.patch</filename>
            <type>text/plain</type>
            <size>137232</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFmYzI5OGYzZmY1YmJi
YjZiYmJmMjNlODNlZmRiYzc4N2NjMmJmZS4uMjYyMjE3MmU4YjYxMWNkODRkYTQ5MjNlOTUyM2Q4
ZDI1ZWUxODA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTAxLTI5ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
YWxsb3dzIHRvIGdyYWIgcmVjb3JkZWQgZGF0YSB3aGVuZXZlciB3YW50ZWQuCisgICAgICAgIFRo
aXMgZGVsZWdhdGUgcmVxdWlyZXMgcGFzc2luZyBjb21wcmVzc2VkIHNhbXBsZXMgdG8gQVZBc3Nl
dFdyaXRlci4KKyAgICAgICAgSW1wbGVtZW50IHZpZGVvIGVuY29kaW5nIGFuZCBhdWRpbyBlbmNv
ZGluZyBpbiBkZWRpY2F0ZWQgY2xhc3NlcyBhbmQgdXNlIHRoZXNlIGNsYXNzZXMgYmVmb3JlIGFk
ZGluZyBidWZmZXJzIHRvIEFWQXNzZXRXcml0ZXIuCisgICAgICAgIFNpbmNlIEFWQXNzZXRXcml0
ZXJEZWxlZ2F0ZSBpcyBBcHBsZSBTREsgb25seSwga2VlcCB0aGUgZXhpc3RpbmcgZmlsZSBiYXNl
ZCBpbXBsZW1lbnRhdGlvbiBhcyBhIGZhbGxiYWNrLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVBy
b2MpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0
QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVk
aW9Gb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0
aE51bVBhY2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1P
dXRwdXRQYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1w
bGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojpwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRp
b1NhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2Ft
cGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1w
bGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKToKKwogMjAyMC0wMS0yOSAg
RnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbTVNW
Q10gQWRkIC9leHBlcmltZW50YWw6bmV3TGFtYmRhUHJvY2Vzc29yIHN3aXRjaCBmb3IgYmV0dGVy
IEMrKyBjb25mb3JtYW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggYmNiZGU5ZDc0Y2QzNTkzYzk3
YjFjNzNiNDhhMWMyOGYwYTJlN2NhYy4uNmQxMjZhNmNmMzdlMGFmMzc2NzA2NTcyNDdhYzRmYmZi
MWRkMWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDEtMjkg
IHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNl
IEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkZCBzb2Z0IGxpbmsgbWFj
cm9zIGZvciBWaWRlb1Rvb2xib3ggYW5kIEF1ZGlvVG9vbGJveC4KKworICAgICAgICAqIFBBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9jZi9BdWRpb1Rvb2xib3hT
b2Z0TGluay5jcHA6IEFkZGVkLgorICAgICAgICAqIHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGlu
ay5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwOgorICAg
ICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jZi9WaWRl
b1Rvb2xib3hTb2Z0TGluay5jcHA6IEFkZGVkLgorICAgICAgICAqIHBhbC9jZi9WaWRlb1Rvb2xi
b3hTb2Z0TGluay5oOiBBZGRlZC4KKwogMjAyMC0wMS0yOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1
NTM0NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggZTZiNjE3YzNiNDZhZDM4NTBiMjI1NjdjNTlkMjkxYmE4ZWE1ZTc0
YS4uMWVkYTFkYWJlYWY4ODAxYmE0NmQ3Mzk2ZWUxYjdkNGUyNTU5MDZhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAyMC0wMS0yOSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxl
bWVudCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDY1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisK
KyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKToKKyAgICAgICAgVXNl
IG5ldyBjb25zdHJ1Y3Rvci4KKwogMjAyMC0wMS0yOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjU1MzIyKTogbWFjQ2F0YWx5
c3Q6IFRhcHBpbmcgaW4gYW4gaW5wdXQgZmllbGQgZG9lc24ndCBjaGFuZ2UgdGhlIHNlbGVjdGlv
biBsb2NhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGE0MTlhYzk4YjRkMTkyYzlmMzYxZGIxOTc3M2YyYjZmYjhlMGM5Y2Eu
LjNmODE0NmFkMTU1YWZjYzA4NThkNjhiM2QyNzRlMzkyZTBmZjQ3ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNSw2ICsx
MTUsMTAgQEAKIAkJMkUxMzQyQ0MyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNBMjE1
QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggKi87IH07CiAJCTJFMTM0MkNEMjE1QUEx
MEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkUxMzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29m
dExpbmsubW0gKi87IH07CiAJCTMxMzA4QjE0MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2
aWV3U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTMwOEIxMzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovOyB9OworCQk0
MTZFOTk1MzIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTEyM0RBRTZC
RDAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCAqLzsgfTsKKwkJNDE2RTk5NTQy
M0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0Ig
LyogQXVkaW9Ub29sYm94U29mdExpbmsuaCAqLzsgfTsKKwkJNDE2RTk5NTcyM0RBRUZGODAwRTg3
MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU1MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rv
b2xib3hTb2Z0TGluay5jcHAgKi87IH07CisJCTQxNkU5OTU4MjNEQUVGRjgwMEU4NzFDQiAvKiBW
aWRlb1Rvb2xib3hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRM
aW5rLmggKi87IH07CiAJCTQ0Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Mjk1NkNDMjE4
QTcyREUwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCAqLzsgfTsKIAkJNDQ1MEZDOUYyMUY1RjYwMjAw
NERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9v
a1NvZnRMaW5rLm1tICovOyB9OwogCQk0NDUwRkNBMDIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tM
b29rU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovOyB9
OwpAQCAtMjkxLDYgKzI5NSwxMCBAQAogCQkyRTEzNDJDQjIxNUFBMTBBMDA3MTk5RDIgLyogVUlL
aXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJ
S2l0U29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzA4QjEzMjBB
MjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3Rl
bVByZXZpZXdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxMTlBNzgyMEND
QjVGRjAwMkM2REM5IC8qIFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IHBhdGggPSBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hT
b2Z0TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1Rv
b2xib3hTb2Z0TGluay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkU5OTUy
MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94
U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9U
b29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1
NjIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExpbmsuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0IC8qIFJldmVhbFNQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXZlYWxTUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9v
a1NvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVp
Y2tMb29rU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlF
MjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBRdWlja0xvb2tTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTI0LDggKzUzMiwxMiBAQAogCQkwQ0Y5OUNBNTFGNzM4NDFDMDA3RUU3OTMg
LyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQx
NkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi8sCisJ
CQkJNDE2RTk5NTIyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi8s
CiAJCQkJMENGOTlDQTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAq
LywKIAkJCQkwQ0Y5OUNBNzFGNzM4NDM3MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExpbmsuaCAq
LywKKwkJCQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsu
Y3BwICovLAorCQkJCTQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0
TGluay5oICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC03MTUsNiArNzI3LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThCMjJCMzU5
ODkwMDhEMEU4QiAvKiBBcHBTU09Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5
RDYyMkI4NTRBQjAwMzAxNDNDIC8qIEFwcFNTT1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2
RTk5NTQyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDAyRTkzQzIwNTZGQUE3MDBBMTM3OTcgLyogQXVkaW9Ub29sYm94U1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NzJBMTA3ODIyQjQ1NkY1MDBGNDEwQzggLyogQXV0aEtpdFNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc3RTg3QjIyMjZBNDYwMzAwQTJBRkYwIC8qIEFWRm91
bmRhdGlvblNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKQEAgLTgzOCw2ICs4NTEsNyBAQAogCQkJ
CTJFMTM0MkNDMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwQzVBRjkyMjFGNDNBNEM3MDAyRUFDMDIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBDMkRBMTQ3MUYzQkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MTZFOTk1ODIzREFFRkY4MDBFODcxQ0IgLyogVmlkZW9Ub29s
Ym94U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTU5MUYzQkVCNDkwMERCQzMx
NyAvKiBXZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDgyNkY5
MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAt
OTMwLDYgKzk0NCw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmls
ZXMgPSAoCiAJCQkJNTdGRDMxOEEyMkIzNTkzRTAwOEQwRThCIC8qIEFwcFNTT1NvZnRMaW5rLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9v
bGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3N0U4N0IxMjI2QTQ2MDIwMEEy
QUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBDNUZG
RjBGMUY3OEQ5REEwMDlFRkYxQSAvKiBDbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMENG
OTlDQTgxRjczODQzNzAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtOTU2LDYgKzk3MSw3IEBACiAJCQkJQTNBQjZFNTcxRjNEMUREQjAwOUMxNEIxIC8q
IFN5c3RlbVNsZWVwTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNjUxRjNE
MjE3RjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQkyRTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxNkU5OTU3MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0
TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTA4MjZGQTFGNTc2MjkyMDA0NzcyQUMgLyog
V2ViUGFuZWwubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9B
dWRpb1Rvb2xib3hTb2Z0TGluay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNmNTUwNTZhY2RhNmY1NjUzYWRj
N2UxN2VjMDJhMmQ4MjZlNDQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKwor
I2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvbnZlcnRlci5oPgorI2luY2x1ZGUgPEF1ZGlv
VG9vbGJveC9BdWRpb0Zvcm1hdC5oPgorCisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisK
K1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCkKKworU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvRm9ybWF0
R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Gb3JtYXRQcm9wZXJ0eUlEIGluUHJvcGVydHlJ
RCwgVUludDMyIGluU3BlY2lmaWVyU2l6ZSwgY29uc3Qgdm9pZCogaW5TcGVjaWZpZXIsIFVJbnQz
MiogaW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5Qcm9wZXJ0
eUlELCBpblNwZWNpZmllclNpemUsIGluU3BlY2lmaWVyLCBpb1Byb3BlcnR5RGF0YVNpemUsIG91
dFByb3BlcnR5RGF0YSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlv
VG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJOZXcsIE9TU3RhdHVzLCAoY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKiBpblNvdXJjZUZvcm1hdCwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uKiBpbkRlc3RpbmF0aW9uRm9ybWF0LCBBdWRpb0NvbnZlcnRlclJlZiogb3V0QXVk
aW9Db252ZXJ0ZXIpLCAoaW5Tb3VyY2VGb3JtYXQsIGluRGVzdGluYXRpb25Gb3JtYXQsIG91dEF1
ZGlvQ29udmVydGVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9U
b29sYm94LCBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVy
dGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3Bl
cnR5SUQsIFVJbnQzMiBpblByb3BlcnR5RGF0YVNpemUsIGNvbnN0IHZvaWQqIGluUHJvcGVydHlE
YXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW5Qcm9wZXJ0eURhdGFTaXpl
LCBpblByb3BlcnR5RGF0YSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1
ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0Nv
bnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Q
cm9wZXJ0eUlELCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlE
YXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW9Qcm9wZXJ0eURhdGFTaXpl
LCBvdXRQcm9wZXJ0eURhdGEpKQorCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNzMxMTg3MTc0YWMxNTU0NDM3MWRlZTAzYjE0MzJlM2U2NTYzMmUwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5o
CkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0Uo
QVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElO
S19GUkFNRVdPUktfRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCkKKworU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJv
cGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVk
aW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0
YVNpemUsIHZvaWQqIG91dFByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3Bl
cnR5SUQsIGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKyNkZWZpbmUgQXVk
aW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0
ZXJHZXRQcm9wZXJ0eQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rv
b2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1ZGlv
Q29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRBdWRp
b0NvbnZlcnRlcikpCisjZGVmaW5lIEF1ZGlvQ29udmVydGVyTmV3IHNvZnRMaW5rX0F1ZGlvVG9v
bGJveF9BdWRpb0NvbnZlcnRlck5ldworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVk
aW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlE
IGluUHJvcGVydHlJRCwgVUludDMyIGluUHJvcGVydHlEYXRhU2l6ZSwgY29uc3Qgdm9pZCogaW5Q
cm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9wZXJ0eUlELCBpblByb3BlcnR5
RGF0YVNpemUsIGluUHJvcGVydHlEYXRhKSkKKyNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJTZXRQcm9w
ZXJ0eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eQorU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvRm9ybWF0
R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Gb3JtYXRQcm9wZXJ0eUlEIGluUHJvcGVydHlJ
RCwgVUludDMyIGluU3BlY2lmaWVyU2l6ZSwgY29uc3Qgdm9pZCogaW5TcGVjaWZpZXIsIFVJbnQz
MiogaW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5Qcm9wZXJ0
eUlELCBpblNwZWNpZmllclNpemUsIGluU3BlY2lmaWVyLCBpb1Byb3BlcnR5RGF0YVNpemUsIG91
dFByb3BlcnR5RGF0YSkpCisjZGVmaW5lIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkgc29mdExpbmtf
QXVkaW9Ub29sYm94X0F1ZGlvRm9ybWF0R2V0UHJvcGVydHkKKworCisjZW5kaWYgLy8gVVNFKEFW
Rk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0
TGluay5jcHAKaW5kZXggMmI4MjMxMzY1Y2I5YWFmOTM1OTdmMTg3ZmEyMmMxNDliZTQyZmIzYS4u
ZGM4YWI0MWNiYzc4YmExOWNlY2RkYTdmY2ZhNzBkOTM1MDkzYzIzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKQEAgLTQ2LDYgKzQ2LDcg
QEAgU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhKQogCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNv
cHlEYXRhQnl0ZXMsIE9TU3RhdHVzLCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVTb3VyY2VCdWZmZXIs
IHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB2b2lkKiBkZXN0aW5hdGlv
biksICh0aGVTb3VyY2VCdWZmZXIsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZGVzdGluYXRp
b24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQmxv
Y2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXplX3QsIChDTUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZl
ciksICh0aGVCdWZmZXIpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzLCBPU1N0YXR1cywgKGNvbnN0IHZv
aWQqIHNvdXJjZUJ5dGVzLCBDTUJsb2NrQnVmZmVyUmVmIGRlc3RpbmF0aW9uQnVmZmVyLCBzaXpl
X3Qgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUxlbmd0aCksIChzb3VyY2VCeXRl
cywgZGVzdGluYXRpb25CdWZmZXIsIG9mZnNldEludG9EZXN0aW5hdGlvbiwgZGF0YUxlbmd0aCkp
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01Gb3JtYXRE
ZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMsIENGRGljdGlvbmFyeVJlZiwgKENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZGVzYyksIChkZXNjKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQsICh2b2lkKSwg
KCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1w
bGVCdWZmZXJHZXREYXRhQnVmZmVyLCBDTUJsb2NrQnVmZmVyUmVmLCAoQ01TYW1wbGVCdWZmZXJS
ZWYgc2J1ZiksIChzYnVmKSkKQEAgLTEzNiw2ICsxMzcsNyBAQCBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEJ1ZmZlckNvdW50LCBD
TUl0ZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVm
ZmVyUXVldWVHZXRGaXJzdFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lLCAoQ01CdWZmZXJR
dWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQ
QUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCwg
Q01UaW1lLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmln
Z2VyV2l0aEludGVnZXJUaHJlc2hvbGQsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1
ZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayB0cmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIHRy
aWdnZXJSZWZjb24sIENNQnVmZmVyUXVldWVUcmlnZ2VyQ29uZGl0aW9uIHRyaWdnZXJDb25kaXRp
b24sIENNSXRlbUNvdW50IHRyaWdnZXJUaHJlc2hvbGQsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9r
ZW4qIHRyaWdnZXJUb2tlbk91dCksIChxdWV1ZSwgdHJpZ2dlckNhbGxiYWNrLCB0cmlnZ2VyUmVm
Y29uLCB0cmlnZ2VyQ29uZGl0aW9uLCB0cmlnZ2VyVGhyZXNob2xkLCB0cmlnZ2VyVG9rZW5PdXQp
KQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVy
UXVldWVNYXJrRW5kT2ZEYXRhLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAo
cXVldWUpKQogCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwg
a0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERpc3BsYXksIENGU3RyaW5nUmVmKQogU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1l
bnRLZXlfTm90U3luYywgQ0ZTdHJpbmdSZWYpCkBAIC0xNjMsNiArMTY1LDkgQEAgU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9TYW1wbGVCdWZmZXJD
cmVhdGVXaXRoUGFja2UKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1l
ZGlhLCBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0LCBPU1N0
YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENGQWxsb2NhdG9yUmVmIGJidWZTdHJ1Y3RB
bGxvY2F0b3IsIENGQWxsb2NhdG9yUmVmIGJidWZNZW1vcnlBbGxvY2F0b3IsIHVpbnQzMl90IGZs
YWdzLCBjb25zdCBBdWRpb0J1ZmZlckxpc3QgKmJ1ZmZlckxpc3QpLCAoc2J1ZiwgYmJ1ZlN0cnVj
dEFsbG9jYXRvciwgYmJ1Zk1lbW9yeUFsbG9jYXRvciwgZmxhZ3MsIGJ1ZmZlckxpc3QpKQogU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVy
U2V0RGF0YVJlYWR5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1Zikp
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uQ3JlYXRlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
ciwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBhc2JkLCBzaXplX3QgbGF5b3V0
U2l6ZSwgY29uc3QgQXVkaW9DaGFubmVsTGF5b3V0KiBsYXlvdXQsIHNpemVfdCBtYWdpY0Nvb2tp
ZVNpemUsIGNvbnN0IHZvaWQqIG1hZ2ljQ29va2llLCBDRkRpY3Rpb25hcnlSZWYgZXh0ZW5zaW9u
cywgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmKiBvdXREZXNjKSwgKGFsbG9jYXRvciwgYXNi
ZCwgbGF5b3V0U2l6ZSwgbGF5b3V0LCBtYWdpY0Nvb2tpZVNpemUsIG1hZ2ljQ29va2llLCBleHRl
bnNpb25zLCBvdXREZXNjKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZSwgY29uc3Qgdm9p
ZCosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYywgc2l6ZV90KiBzaXplT3V0KSwg
KGRlc2MsIHNpemVPdXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQs
IGNvbnN0IEF1ZGlvRm9ybWF0TGlzdEl0ZW0gKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJl
ZiBkZXNjKSwgKGRlc2MpKQorCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSwgQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2ssIENNQ2xvY2tSZWYsICh2b2lkKSwgKCkp
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dl
dFRpbWUsIENNVGltZSwgKENNQ2xvY2tSZWYgY2xvY2spLCAoY2xvY2spKQogU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ2FsbEZvckVh
Y2hTYW1wbGUsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgT1NTdGF0dXMgKCog
Q01TQU1QTEVCVUZGRVJDQUxMX05PRVNDQVBFIGNhbGxiYWNrKSggQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyLCBDTUl0ZW1Db3VudCBpbmRleCwgdm9pZCAqcmVmY29uKSwgdm9pZCAqcmVm
Y29uKSwgKHNidWYsIGNhbGxiYWNrLCByZWZjb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCmluZGV4IDI2OGQxNjdmMjdkNmQzYWJiZmY1OTM1MjY3
ZmMyMjIzOTEwMTBlM2QuLmEwYzczMjkyNjJlMGIwNmNiYjZjMzZkODI4NDJmMmZkNmYxZjg0YTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKQEAg
LTQ5LDYgKzQ5LDggQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXQKICNkZWZpbmUgQ01CbG9ja0J1
ZmZlckNvcHlEYXRhQnl0ZXMgc29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJDb3B5RGF0
YUJ5dGVzCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01C
bG9ja0J1ZmZlckdldERhdGFMZW5ndGgsIHNpemVfdCwgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVm
ZmVyKSwgKHRoZUJ1ZmZlcikpCiAjZGVmaW5lIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoIHNv
ZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aAorU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0
YUJ5dGVzLCBPU1N0YXR1cywgKGNvbnN0IHZvaWQqIHNvdXJjZUJ5dGVzLCBDTUJsb2NrQnVmZmVy
UmVmIGRlc3RpbmF0aW9uQnVmZmVyLCBzaXplX3Qgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBzaXpl
X3QgZGF0YUxlbmd0aCksIChzb3VyY2VCeXRlcywgZGVzdGluYXRpb25CdWZmZXIsIG9mZnNldElu
dG9EZXN0aW5hdGlvbiwgZGF0YUxlbmd0aCkpCisjZGVmaW5lIENNQmxvY2tCdWZmZXJSZXBsYWNl
RGF0YUJ5dGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRl
cwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0
RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRpY3Rpb25hcnlSZWYsIChDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVmaW5lIENNRm9ybWF0RGVzY3JpcHRpb25HZXRF
eHRlbnNpb25zIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5z
aW9ucwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2Ft
cGxlQnVmZmVyR2V0VHlwZUlELCBDRlR5cGVJRCwgKHZvaWQpLCAoKSkKQEAgLTIyNyw2ICsyMjks
OCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CdWZm
ZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbQogI2RlZmluZSBDTUJ1ZmZlclF1ZXVlR2V0RW5k
UHJlc2VudGF0aW9uVGltZVN0YW1wIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlR2V0
RW5kUHJlc2VudGF0aW9uVGltZVN0YW1wCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQ
QUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJl
c2hvbGQsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSwgQ01CdWZmZXJRdWV1ZVRy
aWdnZXJDYWxsYmFjayB0cmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIHRyaWdnZXJSZWZjb24sIENNQnVm
ZmVyUXVldWVUcmlnZ2VyQ29uZGl0aW9uIHRyaWdnZXJDb25kaXRpb24sIENNSXRlbUNvdW50IHRy
aWdnZXJUaHJlc2hvbGQsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4qIHRyaWdnZXJUb2tlbk91
dCksIChxdWV1ZSwgdHJpZ2dlckNhbGxiYWNrLCB0cmlnZ2VyUmVmY29uLCB0cmlnZ2VyQ29uZGl0
aW9uLCB0cmlnZ2VyVGhyZXNob2xkLCB0cmlnZ2VyVG9rZW5PdXQpKQogI2RlZmluZSBDTUJ1ZmZl
clF1ZXVlSW5zdGFsbFRyaWdnZXJXaXRoSW50ZWdlclRocmVzaG9sZCBzb2Z0TGlua19Db3JlTWVk
aWFfQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlTWFy
a0VuZE9mRGF0YSwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkK
KyNkZWZpbmUgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgc29mdExpbmtfQ29yZU1lZGlhX0NN
QnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxheSwgQ0ZT
dHJpbmdSZWYpCiAjZGVmaW5lIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5IGdl
dF9Db3JlTWVkaWFfa0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERpc3BsYXkoKQpAQCAtMjU2
LDYgKzI2MCw5IEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlh
LCBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkCiAjZGVmaW5lIGtDTVRpbWViYXNl
Tm90aWZpY2F0aW9uX1RpbWVKdW1wZWQgZ2V0X0NvcmVNZWRpYV9rQ01UaW1lYmFzZU5vdGlmaWNh
dGlvbl9UaW1lSnVtcGVkKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1l
ZCwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0
aW9uX0J1ZmZlckNvbnN1bWVkIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJO
b3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQoKQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hF
QURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29r
aWUsIGNvbnN0IHZvaWQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MsIHNpemVf
dCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkKKyNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uR2V0TWFnaWNDb29raWUgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvbkdldE1hZ2ljQ29va2llCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUws
IENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uICosIChDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKICNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRp
b0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbgogU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDcmVhdGVXaXRo
TWVtb3J5QmxvY2ssIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxsb2NhdG9y
LCB2b2lkKiBtZW1vcnlCbG9jaywgc2l6ZV90IGJsb2NrTGVuZ3RoLCBDRkFsbG9jYXRvclJlZiBi
bG9ja0FsbG9jYXRvciwgY29uc3QgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlKiBjdXN0
b21CbG9ja1NvdXJjZSwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIENN
QmxvY2tCdWZmZXJGbGFncyBmbGFncywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQp
LCAoc3RydWN0dXJlQWxsb2NhdG9yLCBtZW1vcnlCbG9jaywgYmxvY2tMZW5ndGgsIGJsb2NrQWxs
b2NhdG9yLCBjdXN0b21CbG9ja1NvdXJjZSwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFn
cywgYmxvY2tCdWZmZXJPdXQpKQpAQCAtMjY0LDYgKzI3MSw4IEBAIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVy
TGlzdFdpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFp
bmVkQmxvY2tCdWZmZXIgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0QXVkaW9C
dWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMsIENNSXRl
bUNvdW50LCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKICNkZWZpbmUgQ01TYW1w
bGVCdWZmZXJHZXROdW1TYW1wbGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdl
dE51bVNhbXBsZXMKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlh
LCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0LCBjb25z
dCBBdWRpb0Zvcm1hdExpc3RJdGVtICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVz
YyksIChkZXNjKSkKKyNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERl
Y29kYWJsZUZvcm1hdCBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9u
R2V0UmljaGVzdERlY29kYWJsZUZvcm1hdAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
UEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlLCBP
U1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01TYW1wbGVCdWZmZXJSZWYgc2J1
ZiwgQ0ZSYW5nZSBzYW1wbGVSYW5nZSwgQ01TYW1wbGVCdWZmZXJSZWYqIHNCdWZPdXQpLCAoYWxs
b2NhdG9yLCBzYnVmLCBzYW1wbGVSYW5nZSwgc0J1Zk91dCkpCiAjZGVmaW5lIENNU2FtcGxlQnVm
ZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1
ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlU2l6ZUFycmF5LCBPU1N0
YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUNvdW50IHNpemVBcnJheUVudHJp
ZXMsIHNpemVfdCogc2l6ZUFycmF5T3V0LCBDTUl0ZW1Db3VudCogc2l6ZUFycmF5RW50cmllc05l
ZWRlZE91dCksIChzYnVmLCBzaXplQXJyYXlFbnRyaWVzLCBzaXplQXJyYXlPdXQsIHNpemVBcnJh
eUVudHJpZXNOZWVkZWRPdXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
Zi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1Zp
ZGVvVG9vbGJveFNvZnRMaW5rLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZmU2OTNjYTllNDFmZDg1OTdhODJi
N2M3OTY2MDFiOGE3MGNhYTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorCisj
aW1wb3J0IDxWaWRlb1Rvb2xib3gvVlRDb21wcmVzc2lvblNlc3Npb24uaD4KKworI2luY2x1ZGUg
PHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFM
LCBWaWRlb1Rvb2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlk
ZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVv
Q29kZWNUeXBlIGNvZGVjVHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9u
LCBDRkRpY3Rpb25hcnlSZWYgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRv
clJlZiBjb21wcmVzc2VkRGF0YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNr
IG91dHB1dENhbGxiYWNrLCB2b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lv
blNlc3Npb25SZWYqIGNvbXByZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBo
ZWlnaHQsIGNvZGVjVHlwZSwgZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVy
QXR0cmlidXRlcywgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRw
dXRDYWxsYmFja1JlZkNvbiwgY29tcHJlc3Npb25TZXNzaW9uT3V0KSkKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNv
bXBsZXRlRnJhbWVzLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24s
IENNVGltZSBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSwgKHNlc3Npb24sIGNv
bXBsZXRlVW50aWxQcmVzZW50YXRpb25UaW1lU3RhbXApKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJh
bWUsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1
ZmZlclJlZiBpbWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1l
IGR1cmF0aW9uLCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lkKiBzb3VyY2VG
cmFtZVJlZmNvbiwgVlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChzZXNzaW9uLCBp
bWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJhbWVQcm9wZXJ0
aWVzLCBzb3VyY2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBh
cmVUb0VuY29kZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNz
aW9uKSwgKHNlc3Npb24pKQorCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNTA4MzhhM2FmZGVkMmVkN2Q2ZjhlMzQ4ZmZkZjZkZDExNTFiYzRkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5oCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVZG
T1VOREFUSU9OKQorCisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19G
UkFNRVdPUktfRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCkKKworU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3Jl
YXRlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQsIENNVmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlLCBDRkRpY3Rpb25hcnlS
ZWYgZW5jb2RlclNwZWNpZmljYXRpb24sIENGRGljdGlvbmFyeVJlZiBzb3VyY2VJbWFnZUJ1ZmZl
ckF0dHJpYnV0ZXMsIENGQWxsb2NhdG9yUmVmIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBWVENv
bXByZXNzaW9uT3V0cHV0Q2FsbGJhY2sgb3V0cHV0Q2FsbGJhY2ssIHZvaWQqIG91dHB1dENhbGxi
YWNrUmVmQ29uLCBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiogY29tcHJlc3Npb25TZXNzaW9uT3V0
KSwgKGFsbG9jYXRvciwgd2lkdGgsIGhlaWdodCwgY29kZWNUeXBlLCBlbmNvZGVyU3BlY2lmaWNh
dGlvbiwgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBjb21wcmVzc2VkRGF0YUFsbG9jYXRv
ciwgb3V0cHV0Q2FsbGJhY2ssIG91dHB1dENhbGxiYWNrUmVmQ29uLCBjb21wcmVzc2lvblNlc3Np
b25PdXQpKQorI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSBzb2Z0TGlua19WaWRl
b1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUKK1NPRlRfTElOS19GVU5DVElPTl9G
T1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRl
RnJhbWVzLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENNVGlt
ZSBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSwgKHNlc3Npb24sIGNvbXBsZXRl
VW50aWxQcmVzZW50YXRpb25UaW1lU3RhbXApKQorI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lv
bkNvbXBsZXRlRnJhbWVzIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lv
bkNvbXBsZXRlRnJhbWVzCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVv
VG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSwgT1NTdGF0dXMsIChWVENv
bXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDVkltYWdlQnVmZmVyUmVmIGltYWdlQnVmZmVy
LCBDTVRpbWUgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUgZHVyYXRpb24sIENGRGljdGlv
bmFyeVJlZiBmcmFtZVByb3BlcnRpZXMsIHZvaWQqIHNvdXJjZUZyYW1lUmVmY29uLCBWVEVuY29k
ZUluZm9GbGFncyogaW5mb0ZsYWdzT3V0KSwgKHNlc3Npb24sIGltYWdlQnVmZmVyLCBwcmVzZW50
YXRpb25UaW1lU3RhbXAsIGR1cmF0aW9uLCBmcmFtZVByb3BlcnRpZXMsIHNvdXJjZUZyYW1lUmVm
Y29uLCBpbmZvRmxhZ3NPdXQpKQorI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZy
YW1lIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1l
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21w
cmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVz
c2lvblNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKyNkZWZpbmUgVlRDb21wcmVzc2lv
blNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29t
cHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzCisKKyNlbmRpZiAvLyBVU0UoQVZG
T1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDk4N2E2MzlkNzM4OTAwYjlhOTFkODlhYWFkNGJiM2NmYjEwODBmZGIu
LjJjNDg4M2I0ODYzM2JmZTc5MDc2MjVkZmZjMDgzM2FlMDg1OTIyN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTcsNiAr
MTA5Nyw3IEBACiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUlu
dGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5h
bHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgw
NjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUw
MDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3Jp
dGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTQxNkY3OTkwMjNENzUwQ0YwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tICovOyB9OwogCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250
cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICov
OyB9OwogCQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2lu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2
MTJBQjFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgKi87IH07
CiAJCTQxNzYxMkIwMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQzFF
M0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovOyB9OwpAQCAtMTEz
Nyw2ICsxMTM4LDcgQEAKIAkJNDFCODc3NjIyM0RFMTA0NTAwMzYzOEI4IC8qIFJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUI4Nzc2MDIzREUxMDQyMDAzNjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJj
ZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MUJGMjA0OTIyQkE3QkU4MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjIwNDAy
MkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUM3NjBCMTBFREUwM0QzMDBDMTY1
NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQ0Q2RjhDMjNE
NkU4MjEwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUNENkY4QjIzRDZFODFEMDBC
MTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9OwogCQk0MUQwMTVD
QTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250
ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxRDEyOUNFMUYzRDBFRjYwMEQxNUU0NyAvKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OEQx
RjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmggKi87IH07CiAJCTQx
RDEyOUQwMUYzRDBGMDUwMEQxNUU0NyAvKiBDYWNoZVF1ZXJ5T3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OUIxRjM0Q0VGMDAwNzk1
NDg3IC8qIENhY2hlUXVlcnlPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTczNjAsNiArNzM2Miw5IEBACiAJCTQxNkQ3NTlGMjBDNjQ0
MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaElkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8q
IFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdvcmtlclJlcG9ydGluZ1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
NkY3OThEMjNENzUwQ0EwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkY3OThGMjNENzUwQ0IwMDgy
OUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkY3OTkzMjNEOEI2OUMwMDgyOUZDMSAvKiBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hRmlsZUJhc2VkLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YUZpbGVCYXNlZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MEEyRTkxRDhD
MENDMDAwMzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RPTVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNBOTEzNTRCQkJDMDAz
NjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTc0NjcsNiArNzQ3Miw4IEBACiAJCTQxQzdFMTA1MUU2QTU0MzYwMDI3QjRERSAvKiBD
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdFMTA2MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXND
YXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUM3RTEwODFFNkFBMzdDMDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRDZGODkyM0Q2
RTgxQzAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNv
bnN1bWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNoQm9k
eUNvbnN1bWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhCRTUxRDQ2
MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTg4OTAsOCArMTg4OTcsMTMgQEAKIAkJNEQzQzA1RDQyMUFGNDgwOTAw
RjI4OTBBIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLmggKi8sCisJCQkJNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbSAqLywKIAkJCQk0RDczRjk0QzIxOEM0QTg3MDAzQTNFRDYgLyog
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oICovLAogCQkJCTRENzNGOTREMjE4QzRB
ODcwMDNBM0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tICovLAorCQkJ
CTQxNkY3OTkzMjNEOEI2OUMwMDgyOUZDMSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hRmlsZUJhc2VkLm1tICovLAorCQkJCTQxQ0Q2Rjg5MjNENkU4MUMwMEIxNjQyMSAvKiBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAqLywKKwkJCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0
MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovLAogCQkJKTsKIAkJCXBhdGgg
PSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzUzOCw2ICszMzU1MCw3
IEBACiAJCQkJQTk3ODdDQjQxRjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyog
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVC
Njc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTQxNkY3OTkwMjNENzUwQ0YwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9T
ZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3MzVGRTAwQ0JENjQz
IC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4
OEUwRDgxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zNDI3MCw2ICszNDI4Myw3IEBACiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVz
ZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZCQzRB
RjMxODk4ODE1NjAwNDZFRTM4IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTJENUExOEYxQzU0NTkyMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNj
cmVlbkxheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MUNENkY4QzIzRDZF
ODIxMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkU4OEUwREUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkU4OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMzM2RjY3MTdGQTBBQzYwMERERENEMCAvKiBWaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5tbQppbmRleCBmYThlZTBiMTAwY2YyMTQwODU2NTA1MTZiYzRlMjNhMWRiMTViZjM1Li5m
YzI5MDhjZWJlM2Q3NGU1ZjE1MTA0YTVkNzgyMzBjYmY5ZWQ1MzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJT
ZXNzaW9uVlQubW0KQEAgLTk1LDYgKzk1LDcgQEAgYm9vbCBJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtDVlBpeGVsQnVmZmVySU9TdXJmYWNlUHJvcGVydGllc0tleSA6IEB7IC8qZW1wdHkgZGlj
dGlvbmFyeSovIH0sCiAgICAgfTsKIAorCiAgICAgTlNEaWN0aW9uYXJ5KiBwaXhlbEJ1ZmZlclBv
b2xPcHRpb25zID0gQHsKICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZm
ZXJQb29sTWluaW11bUJ1ZmZlckNvdW50S2V5OiBAKDYpCiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVB
VkZJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAppbmRleCA3M2YxZDBhMTUxOWYyYzAzYjkxZDY5NTEw
NTEzNWE0ZjIwZDFkYTY0Li5kNDc5MzQ4ODM4NjE5MTdmNmIzNjBlZjE0ZGQ4MmMxZTM1M2IyYWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZh
dGUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTY4LDcgKzY5LDE0IEBAIHN0ZDo6
dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbDo6Y3JlYXRlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0K
LSAgICBhdXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYXVk
aW9UcmFjaywgdmlkZW9UcmFjayk7CisKKyAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwor
ICAgIGlmICh2aWRlb1RyYWNrKSB7CisgICAgICAgIGF1dG8mIHNldHRpbmdzID0gdmlkZW9UcmFj
ay0+c2V0dGluZ3MoKTsKKyAgICAgICAgd2lkdGggPSBzZXR0aW5ncy53aWR0aCgpOworICAgICAg
ICBoZWlnaHQgPSBzZXR0aW5ncy5oZWlnaHQoKTsKKyAgICB9CisgICAgYXV0byB3cml0ZXIgPSBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKCEhYXVkaW9UcmFjaywgd2lkdGgsIGhl
aWdodCk7CiAgICAgaWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NDdiZjgxZTFkNDU2YzcwYzJkOTQ0ZjcwNDVhOGUxNmUwNTliY2Y5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikK
KworI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFx
dWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFx
dWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252ZXJ0ZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJh
Y2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKyAgICB+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yKCk7CisKKyAgICB2b2lkIGZpbmlzaCgpOworICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENN
U2FtcGxlQnVmZmVyUmVmKTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVC
dWZmZXIoKTsKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1w
bGVCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Io
KTsKKyAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9p
ZCogY2FsbGJhY2tPYmplY3QpOworCisgICAgc3RhdGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVy
Q29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiosIEF1ZGlvQnVm
ZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKiwgdm9pZCopOworCisgICAg
dm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGlu
aXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYsIEF1ZGlvRm9ybWF0SUQpOworICAgIHNpemVfdCBjb21wdXRlQnVmZmVyU2l6ZUZv
ckF1ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgVUludDMyLCBGbG9hdDMy
KTsKKyAgICB2b2lkIGF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVm
KTsKKyAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IGdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCk7
CisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMy
IG51bVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCk7CisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVm
ZmVyc1VudGlsTG93V2F0ZXJUaW1lKENNVGltZSk7CisgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJj
ZURhdGFOdW1PdXRwdXRQYWNrZXRzKFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3Ry
ZWFtUGFja2V0RGVzY3JpcHRpb24qKik7CisKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJl
Zj4gbV9vdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4g
bV9pbnB1dEJ1ZmZlclF1ZXVlOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRj
aFF1ZXVlOworICAgIENNVGltZSBtX2xvd1dhdGVyVGltZTsKKyAgICBib29sIG1faXNFbmNvZGlu
ZyB7IGZhbHNlIH07CisKKyAgICBSZXRhaW5QdHI8QXVkaW9Db252ZXJ0ZXJSZWY+IG1fY29udmVy
dGVyOworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX3NvdXJjZUZvcm1hdDsKKyAg
ICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbV9kZXN0aW5hdGlvbkZvcm1hdDsKKyAgICBS
ZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9kZXN0aW5hdGlvbkZvcm1hdERlc2Ny
aXB0aW9uOworICAgIFJldGFpblB0cjxOU051bWJlcj4gbV9nZHJDb3VudE51bTsKKyAgICBVSW50
MzIgbV9tYXhPdXRwdXRQYWNrZXRTaXplOworICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERl
c2NyaXB0aW9uPiBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zOworCisgICAgQ01UaW1l
IG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAgICBDTVRpbWUgbV9jdXJy
ZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wOworICAgIENNVGltZSBtX3JlbWFpbmluZ1By
aW1lRHVyYXRpb247CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9zb3VyY2VCdWZmZXI7CisgICAgVmVj
dG9yPGNoYXI+IG1fZGVzdGluYXRpb25CdWZmZXI7CisKKyAgICBSZXRhaW5QdHI8Q01CbG9ja0J1
ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsKKyAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1
ZmZlclNpemU7CisgICAgc2l6ZV90IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXI7
CisgICAgQXVkaW9Gb3JtYXRJRCBtX291dHB1dENvZGVjVHlwZTsKK307CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MzMz
NzQ2YWRmYjAwM2RjNjYyMGEwMmQxMDZjOGQ0MGIxY2ZkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5tbQpAQCAtMCwwICsxLDQ5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvZGVjLmg+CisjaW5j
bHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29s
Ym94L0F1ZGlvRm9ybWF0Lmg+CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisK
KyNpbXBvcnQgPHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oPgorCisjZGVmaW5lIExPV19X
QVRFUl9USU1FX0lOX1NFQ09ORCAwLjEKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShDTUJ1ZmZlclF1ZXVlVHJp
Z2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBhdXRv
IGNvbXByZXNzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
PihuZXcgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkpOworICAgIGlmICghY29tcHJlc3Nv
ci0+aW5pdGlhbGl6ZShjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gY29tcHJlc3NvcjsKK30KKworQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQorICAgIDogbV9zZXJpYWxE
aXNwYXRjaFF1ZXVlIHsgZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSB9CisgICAgLCBtX2xv
d1dhdGVyVGltZSB7IENNVGltZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNP
TkQsIDEwMDApIH0KKyAgICAsIG1fb3V0cHV0Q29kZWNUeXBlIHsga0F1ZGlvRm9ybWF0TVBFRzRB
QUMgfQoreworfQorCitBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IoKQoreworICAgIGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAg
ICAgIGRpc3BhdGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKK30KKworYm9vbCBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdn
ZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgQ01CdWZm
ZXJRdWV1ZVJlZiBpbnB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CdWZm
ZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2Fs
bGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZpbnB1dEJ1ZmZlclF1ZXVlKSkgewor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX2lucHV0QnVmZmVyUXVldWUgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
bV9pbnB1dEJ1ZmZlclF1ZXVlID0gYWRvcHRDRihpbnB1dEJ1ZmZlclF1ZXVlKTsKKworICAgIENN
QnVmZmVyUXVldWVSZWYgb3V0cHV0QnVmZmVyUXVldWU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBD
TUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVH
ZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVl
KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX291dHB1dEJ1ZmZlclF1
ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIG1fb3V0cHV0QnVmZmVyUXVldWUgPSBhZG9wdENGKG91dHB1dEJ1ZmZlclF1ZXVlKTsK
KyAgICBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQo
KSwgY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hlbkRh
dGFCZWNvbWVzUmVhZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKKworICAgIG1faXNFbmNvZGluZyA9
IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpmaW5pc2goKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1
ZXVlLCBeeworICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKGtD
TVRpbWVJbnZhbGlkKTsKKyAgICAgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5k
T2ZEYXRhKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
Q01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgZmFpbGVkICVkIiwgZXJyb3IpOworICAgICAgICBt
X2lzRW5jb2RpbmcgPSBmYWxzZTsKKyAgICB9KTsKK30KKworYm9vbCBBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9u
KENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24sIEF1ZGlvRm9ybWF0SUQg
b3V0cHV0Rm9ybWF0SUQpCit7CisgICAgY29uc3QgYXV0byAqYXVkaW9Gb3JtYXRMaXN0SXRlbSA9
IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQoZm9ybWF0
RGVzY3JpcHRpb24pOworICAgIG1fc291cmNlRm9ybWF0ID0gYXVkaW9Gb3JtYXRMaXN0SXRlbS0+
bUFTQkQ7CisKKyAgICBtZW1zZXQoJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIHNpemVvZihBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pKTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3Jt
YXRJRCA9IG91dHB1dEZvcm1hdElEOworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJh
dGUgPSBtX3NvdXJjZUZvcm1hdC5tU2FtcGxlUmF0ZTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0
Lm1DaGFubmVsc1BlckZyYW1lID0gbV9zb3VyY2VGb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisK
KyAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAo
YXV0byBlcnJvciA9IEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkoa0F1ZGlvRm9ybWF0UHJvcGVydHlf
Rm9ybWF0SW5mbywgMCwgTlVMTCwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBBdWRpb0Zvcm1hdEdldFByb3BlcnR5IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgY29u
dmVydGVyOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJOZXcoJm1fc291cmNl
Rm9ybWF0LCAmbV9kZXN0aW5hdGlvbkZvcm1hdCwgJmNvbnZlcnRlcikpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
QXVkaW9Db252ZXJ0ZXJOZXcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgbV9jb252ZXJ0ZXIgPSBhZG9wdENGKGNvbnZlcnRlcik7CisK
KyAgICBzaXplX3QgY29va2llU2l6ZSA9IDA7CisgICAgY29uc3Qgdm9pZCAqY29va2llID0gQ01B
dWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUoZm9ybWF0RGVzY3JpcHRpb24sICZj
b29raWVTaXplKTsKKyAgICBpZiAoY29va2llU2l6ZSkgeworICAgICAgICBpZiAoYXV0byBlcnJv
ciA9IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0Nv
bnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgKFVJbnQzMiljb29raWVTaXplLCBjb29r
aWUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Np
b25NYWdpY0Nvb2tpZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9zb3VyY2VG
b3JtYXQpOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSht
X2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3Jp
cHRpb24sICZzaXplLCAmbV9zb3VyY2VGb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1
ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fc291
cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIm1CeXRlc1BlclBhY2tldCBzaG91bGQgbm90IGJlIHplcm8iKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlv
bkZvcm1hdCk7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5
KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24sICZzaXplLCAmbV9kZXN0aW5hdGlvbkZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0
dGluZyBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp
ZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TVBFRzRBQUMp
IHsKKyAgICAgICAgLy8gRklYTUU6IFNldCBvdXRwdXRCaXRSYXRlIGFjY29yZGluZyBNZWRpYVJl
Y29yZGVyT3B0aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQuCisgICAgICAgIFVJbnQzMiBvdXRwdXRC
aXRSYXRlID0gNjQwMDA7CisgICAgICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVS
YXRlID49IDQ0MTAwKQorICAgICAgICAgICAgb3V0cHV0Qml0UmF0ZSA9IDE5MjAwMDsKKyAgICAg
ICAgZWxzZSBpZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA8IDIyMDAwKQorICAg
ICAgICAgICAgb3V0cHV0Qml0UmF0ZSA9IDMyMDAwOworCisgICAgICAgIHNpemUgPSBzaXplb2Yo
b3V0cHV0Qml0UmF0ZSk7CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJT
ZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0
ZSwgc2l6ZSwgJm91dHB1dEJpdFJhdGUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRp
b0NvbnZlcnRlckVuY29kZUJpdFJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1fZGVzdGlu
YXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0KSB7CisgICAgICAgIC8vIElmIHRoZSBkZXN0aW5h
dGlvbiBmb3JtYXQgaXMgVkJSLCB3ZSBuZWVkIHRvIGdldCBtYXggc2l6ZSBwZXIgcGFja2V0IGZy
b20gdGhlIGNvbnZlcnRlci4KKyAgICAgICAgc2l6ZSA9IHNpemVvZihtX21heE91dHB1dFBhY2tl
dFNpemUpOworCisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9w
ZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVtT3V0
cHV0UGFja2V0U2l6ZSwgJnNpemUsICZtX21heE91dHB1dFBhY2tldFNpemUpKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlclByb3BlcnR5TWF4aW11bU91dHB1dFBhY2tl
dFNpemUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2Rlc3RpbmF0aW9uQnVmZmVyLnJlc2VydmVDYXBh
Y2l0eShjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KG1fZGVzdGluYXRpb25Gb3JtYXQs
IG1fbWF4T3V0cHV0UGFja2V0U2l6ZSwgTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EKSk7CisgICAg
aWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkKKyAgICAgICAgbV9kZXN0
aW5hdGlvblBhY2tldERlc2NyaXB0aW9ucy5yZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1
ZmZlci5jYXBhY2l0eSgpIC8gbV9tYXhPdXRwdXRQYWNrZXRTaXplKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitzaXplX3QgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVm
ZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBmb3JtYXQs
IFVJbnQzMiBtYXhPdXRwdXRQYWNrZXRTaXplLCBGbG9hdDMyIGR1cmF0aW9uKQoreworICAgIFVJ
bnQzMiBudW1QYWNrZXRzID0gKGZvcm1hdC5tU2FtcGxlUmF0ZSAqIGR1cmF0aW9uKSAvIGZvcm1h
dC5tRnJhbWVzUGVyUGFja2V0OworICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gZm9ybWF0
Lm1CeXRlc1BlclBhY2tldCA/IGZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtYXhPdXRwdXRQYWNr
ZXRTaXplOworICAgIFVJbnQzMiBidWZmZXJTaXplID0gbnVtUGFja2V0cyAqIG91dHB1dFBhY2tl
dFNpemU7CisKKyAgICByZXR1cm4gYnVmZmVyU2l6ZTsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I6OmF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVy
UmVmIGJ1ZmZlcikKK3sKKyAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQobV9yZW1haW5pbmdQcmlt
ZUR1cmF0aW9uKSkgeworICAgICAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8g
eyAwLCAwIH07CisgICAgICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKHByaW1lSW5mbyk7CisKKyAg
ICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVy
dGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8sICZzaXplLCAmcHJpbWVJbmZvKSkg
eworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVNYWtlKHByaW1lSW5mby5sZWFk
aW5nRnJhbWVzLCBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlKTsKKyAgICB9CisKKyAg
ICBpZiAoQ01USU1FX0NPTVBBUkVfSU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1By
aW1lRHVyYXRpb24pKSB7CisgICAgICAgIENNVGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxl
QnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsKKyAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9
IENNVGltZU1pbmltdW0oc2FtcGxlRHVyYXRpb24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7
CisgICAgICAgIENGRGljdGlvbmFyeVJlZiB0cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNE
aWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgICAgIENN
U2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1
cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnREaWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQ
cm9wYWdhdGUpOworICAgICAgICBDRlJlbGVhc2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAg
bV9yZW1haW5pbmdQcmltZUR1cmF0aW9uID0gQ01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQcmlt
ZUR1cmF0aW9uLCB0cmltRHVyYXRpb24pOworICAgIH0KK30KKworUmV0YWluUHRyPE5TTnVtYmVy
PiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50
KCkKK3sKKyAgICBVSW50MzIgZGVsYXlTaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICB1aW50
MzJfdCBvcmlnaW5hbERlbGF5TW9kZSA9IDA7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0Nv
bnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5
RGVsYXlNb2RlLCAmZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IGdldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICB1aW50MzJfdCBvcHRpbWFs
RGVsYXlNb2RlID0ga0F1ZGlvQ29kZWNEZWxheU1vZGVfT3B0aW1hbDsKKyAgICBpZiAoYXV0byBl
cnJvciA9IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRp
b0NvZGVjUHJvcGVydHlEZWxheU1vZGUsIGRlbGF5U2l6ZSwgJm9wdGltYWxEZWxheU1vZGUpKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBVSW50
MzIgcHJpbWVTaXplID0gc2l6ZW9mKEF1ZGlvQ29kZWNQcmltZUluZm8pOworICAgIEF1ZGlvQ29k
ZWNQcmltZUluZm8gcHJpbWVJbmZvIHsgMCwgMCB9OworICAgIGlmIChhdXRvIGVycm9yID0gQXVk
aW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9w
ZXJ0eVByaW1lSW5mbywgJnByaW1lU2l6ZSwgJnByaW1lSW5mbykpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0
dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZvIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIGlmIChhdXRvIGVycm9yID0gQXVk
aW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9w
ZXJ0eURlbGF5TW9kZSwgZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIHNldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0TlMo
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6KHByaW1lSW5mby5sZWFkaW5nRnJhbWVzIC8gbV9kZXN0
aW5hdGlvbkZvcm1hdC5tRnJhbWVzUGVyUGFja2V0KV0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJl
ZiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRz
KFVJbnQzMiBudW1QYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3QpCit7Cisg
ICAgVmVjdG9yPGNoYXI+IGNvb2tpZTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXREZXNj
cmlwdGlvbikgeworICAgICAgICBVSW50MzIgY29va2llU2l6ZSA9IDA7CisKKyAgICAgICAgYXV0
byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHlJbmZvKG1fY29udmVydGVyLmdldCgp
LCBrQXVkaW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgTlVM
TCk7CisgICAgICAgIGlmICgoZXJyb3IgPT0gbm9FcnIpICYmICEhY29va2llU2l6ZSkgeworICAg
ICAgICAgICAgY29va2llLnJlc2VydmVDYXBhY2l0eShjb29raWVTaXplKTsKKworICAgICAgICAg
ICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVy
LmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6
ZSwgY29va2llLmRhdGEoKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0Nv
bnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29raWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlv
bjsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIE5VTEwsIGNv
b2tpZVNpemUsIGNvb2tpZS5kYXRhKCksIE5VTEwsICZkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0
aW9uKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZh
aWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAg
fQorICAgICAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24gPSBhZG9wdENGKGRlc3Rp
bmF0aW9uRm9ybWF0RGVzY3JpcHRpb24pOworICAgICAgICBtX2dkckNvdW50TnVtID0gZ3JhZHVh
bERlY29kZXJSZWZyZXNoQ291bnQoKTsKKyAgICB9CisKKyAgICBjaGFyICpkYXRhID0gc3RhdGlj
X2Nhc3Q8Y2hhcio+KGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhKTsKKyAgICBzaXpl
X3QgZGF0YVNpemUgPSBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplOwor
CisgICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja0J1ZmZlcjsKKyAgICBpZiAoYXV0byBlcnJvciA9
IENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwg
TlVMTCwgZGF0YVNpemUsIGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIDAsIGRhdGFTaXplLCBr
Q01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5vd0ZsYWcsICZibG9ja0J1ZmZlcikpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgYXV0byBidWZmZXIgPSBh
ZG9wdENGKGJsb2NrQnVmZmVyKTsKKworICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZl
clJlcGxhY2VEYXRhQnl0ZXMoZGF0YSwgYnVmZmVyLmdldCgpLCAwLCBkYXRhU2l6ZSkpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgQ01TYW1wbGVCdWZmZXJS
ZWYgc2FtcGxlQnVmZmVyOworICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3Jl
YXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIuZ2V0
KCksIHRydWUsIE5VTEwsIE5VTEwsIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbi5nZXQo
KSwgbnVtUGFja2V0cywgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wLCBtX2Rl
c3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnNhbXBsZUJ1ZmZlcik7CisgICAg
aWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFj
a2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4g
bmlsOworICAgIH0KKworICAgIGlmIChbbV9nZHJDb3VudE51bSBpbnRWYWx1ZV0pCisgICAgICAg
IENNU2V0QXR0YWNobWVudChzYW1wbGVCdWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRL
ZXlfR3JhZHVhbERlY29kZXJSZWZyZXNoLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKW1fZ2RyQ291bnRO
dW0uZ2V0KCksIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisKKyAgICByZXR1
cm4gc2FtcGxlQnVmZmVyOworfQorCitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYs
IFVJbnQzMiAqbnVtT3V0cHV0UGFja2V0c1B0ciwgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0
LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uICoqcGFja2V0RGVzY3JpcHRpb25PdXQsIHZv
aWQgKmF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcikKK3sKKyAgICBhdXRvICpjb21wcmVzc29y
ID0gc3RhdGljX2Nhc3Q8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4oYXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yKTsKKyAgICByZXR1cm4gY29tcHJlc3Nvci0+cHJvdmlkZVNvdXJjZURh
dGFOdW1PdXRwdXRQYWNrZXRzKG51bU91dHB1dFBhY2tldHNQdHIsIGJ1ZmZlckxpc3QsIHBhY2tl
dERlc2NyaXB0aW9uT3V0KTsKK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKiBudW1PdXRwdXRQ
YWNrZXRzUHRyLCBBdWRpb0J1ZmZlckxpc3QqIGF1ZGlvQnVmZmVyTGlzdCwgQXVkaW9TdHJlYW1Q
YWNrZXREZXNjcmlwdGlvbioqIHBhY2tldERlc2NyaXB0aW9uT3V0KQoreworICAgIGlmIChwYWNr
ZXREZXNjcmlwdGlvbk91dCkKKyAgICAgICAgKnBhY2tldERlc2NyaXB0aW9uT3V0ID0gTlVMTDsK
KworICAgIGNvbnN0IFVJbnQzMiBudW1QYWNrZXRzVG9Db3B5ID0gKm51bU91dHB1dFBhY2tldHNQ
dHI7CisgICAgc2l6ZV90IG51bUJ5dGVzVG9Db3B5ID0gKG51bVBhY2tldHNUb0NvcHkgKiBtX3Nv
dXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpOworCisgICAgaWYgKGF1ZGlvQnVmZmVyTGlzdC0+
bU51bWJlckJ1ZmZlcnMgPT0gMSkgeworICAgICAgICBzaXplX3QgY3VycmVudE9mZnNldEluU291
cmNlQnVmZmVyID0gMDsKKworICAgICAgICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHko
bnVtQnl0ZXNUb0NvcHkpOworCisgICAgICAgIHdoaWxlIChudW1CeXRlc1RvQ29weSkgeworICAg
ICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9IG1fY3VycmVudE9mZnNldElu
U2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1
ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gbnVsbHB0
cjsKKyAgICAgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0
eShtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVC
dWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWlu
KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVC
bG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+
KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkp
KSkpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOwor
ICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOworICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0
aChtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRP
ZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbnVt
Qnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9z
YW1wbGVCbG9ja0J1ZmZlclNpemUgLSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVy
KSk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURh
dGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBs
ZUJsb2NrQnVmZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAobV9zb3VyY2VCdWZm
ZXIuZGF0YSgpICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9t
U2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIg
Kz0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgICAgICBtX2N1cnJl
bnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJi
dWY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5t
QnVmZmVyc1swXS5tRGF0YSA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXVkaW9C
dWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291
cmNlQnVmZmVyOworICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJD
aGFubmVscyA9IG1fc291cmNlRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lOworCisgICAgICAgICpu
dW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFC
eXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisgICAgICAgIHJldHVy
biBub0VycjsKKyAgICB9CisKKyAgICBBU1NFUlQoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVm
ZmVycyA9PSAyKTsKKworICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVybGVhdmVkIGRhdGEgYnkg
dW5pbnRlcmxlYXZpbmcgbV9zb3VyY2VCdWZmZXIgaWYgbmVlZGVkLgorICAgIEFTU0VSVChtX3Nv
dXJjZUZvcm1hdC5tRm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZl
ZCk7CisKKyAgICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkoMiAqIG51bUJ5dGVzVG9D
b3B5KTsKKyAgICBhdXRvKiBmaXJzdENoYW5uZWwgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7Cisg
ICAgYXV0byogc2Vjb25kQ2hhbm5lbCA9IG1fc291cmNlQnVmZmVyLmRhdGEoKSArIG51bUJ5dGVz
VG9Db3B5OworCisgICAgc2l6ZV90IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciA9IDA7Cisg
ICAgd2hpbGUgKG51bUJ5dGVzVG9Db3B5KSB7CisgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVm
ZmVyU2l6ZSA8PSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAg
ICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgIG1fc2FtcGxl
QmxvY2tCdWZmZXIgPSBudWxscHRyOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZm
ZXJTaXplID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVl
dWVJc0VtcHR5KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVC
dWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWlu
KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICBtX3NhbXBsZUJsb2Nr
QnVmZmVyID0gYWRvcHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZS
ZXRhaW4oQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkp
OworICAgICAgICAgICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAg
ICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICBtX2N1cnJl
bnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0g
Q01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSkgLyAy
OworICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAg
ICAgc2l6ZV90IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1CeXRl
c1RvQ29weSwgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIC0gbV9jdXJyZW50T2Zmc2V0SW5TYW1w
bGVCbG9ja0J1ZmZlcikpOworICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVm
ZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZz
ZXRJblNhbXBsZUJsb2NrQnVmZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoZmly
c3RDaGFubmVsICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBmaXJzdCBjaGFubmVsIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRh
Qnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVC
bG9ja0J1ZmZlciArIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplLCBudW1CeXRlc1RvQ29weUZyb21T
YW1wbGVCYnVmLCAoc2Vjb25kQ2hhbm5lbCArIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcikp
KSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc2Vjb25k
IGNoYW5uZWwgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVt
Qnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJblNv
dXJjZUJ1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAg
bV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21T
YW1wbGVCYnVmOworICAgICAgICB9CisgICAgfQorCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVm
ZmVyc1swXS5tRGF0YSA9IGZpcnN0Q2hhbm5lbDsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZm
ZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7CisgICAg
YXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAg
YXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YSA9IHNlY29uZENoYW5uZWw7CisgICAg
YXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNl
dEluU291cmNlQnVmZmVyOworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJl
ckNoYW5uZWxzID0gMTsKKworICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVy
TGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1Bl
clBhY2tldCk7CisgICAgcmV0dXJuIG5vRXJyOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUg
bG93V2F0ZXJUaW1lKQoreworICAgIGlmICghbV9jb252ZXJ0ZXIpIHsKKyAgICAgICAgYXV0byBi
dWZmZXIgPSAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVl
dWVHZXRIZWFkKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKKyAgICAgICAgQVNTRVJUKGJ1
ZmZlcik7CisKKyAgICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0g
Q01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICAgICAg
bV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRP
dXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKworICAgICAgICBhdXRvIGZvcm1h
dERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIp
OworICAgICAgICBpZiAoIWluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0
aW9uKGZvcm1hdERlc2NyaXB0aW9uLCBtX291dHB1dENvZGVjVHlwZSkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgd2hpbGUgKENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVyVGlt
ZSkgfHwgQ01USU1FX0NPTVBBUkVfSU5MSU5FKGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJRdWV1
ZUdldER1cmF0aW9uKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSB7CisgICAgICAgIEF1ZGlv
QnVmZmVyTGlzdCBmaWxsQnVmZmVyTGlzdDsKKworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tTnVt
YmVyQnVmZmVycyA9IDE7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1i
ZXJDaGFubmVscyA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisgICAg
ICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSAoVUludDMyKW1f
ZGVzdGluYXRpb25CdWZmZXIuY2FwYWNpdHkoKTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1
ZmZlcnNbMF0ubURhdGEgPSBtX2Rlc3RpbmF0aW9uQnVmZmVyLmRhdGEoKTsKKworICAgICAgICBV
SW50MzIgb3V0cHV0UGFja2V0U2l6ZSA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFj
a2V0ID8gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtX21heE91dHB1dFBh
Y2tldFNpemU7CisgICAgICAgIFVJbnQzMiBudW1PdXRwdXRQYWNrZXRzID0gKFVJbnQzMiltX2Rl
c3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5KCkgLyBvdXRwdXRQYWNrZXRTaXplOworCisgICAgICAg
IGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyKG1fY29udmVydGVy
LmdldCgpLCBhdWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jLCB0aGlzLCAmbnVtT3V0
cHV0UGFja2V0cywgJmZpbGxCdWZmZXJMaXN0LCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRp
b25zLmRhdGEoKSk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9D
b252ZXJ0ZXJGaWxsQ29tcGxleEJ1ZmZlciBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbnVtT3V0cHV0UGFja2V0
cykKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gYnVmZmVyID0gc2FtcGxlQnVm
ZmVyV2l0aE51bVBhY2tldHMobnVtT3V0cHV0UGFja2V0cywgZmlsbEJ1ZmZlckxpc3QpOworCisg
ICAgICAgIGF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKGJ1ZmZlcik7CisKKyAgICAgICAgZXJy
b3IgPSBDTVNhbXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIs
IG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCk7CisgICAgICAgIGlmIChlcnJv
cikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25U
aW1lU3RhbXAgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBDTVRpbWUgbmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZl
ckdldER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlv
blRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3Rh
bXAsIG5hdGl2ZUR1cmF0aW9uKTsKKworICAgICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24gPSBD
TVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVu
dE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRwdXRQ
cmVzZW50YXRpb25UaW1lU3RhbXAsIG91dHB1dER1cmF0aW9uKTsKKworICAgICAgICBlcnJvciA9
IENNQnVmZmVyUXVldWVFbnF1ZXVlKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7
CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVl
dWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNz
U2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGVycm9y
ID0gQ01CdWZmZXJRdWV1ZUVucXVldWUobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIp
OworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKworICAgIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUobV9s
b3dXYXRlclRpbWUpOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRk
U2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9z
eW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykK
KyAgICAgICAgICAgIHByb2Nlc3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKwor
Q01TYW1wbGVCdWZmZXJSZWYgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRT
YW1wbGVCdWZmZXIoKQoreworICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nh
c3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkp
KSk7Cit9CisKK1JldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRD
RigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1
ZXVlQW5kUmV0YWluKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworfQorCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCBi
MTQ3Y2EyODgyOWIwZjEwMzBiZGE3NGEwODQyNmM0NTY1ZTk4NzFlLi5mYjAyYjEyMWY3OTk1NDBj
OWVhYmE4NTM3ZTYyMmNiMTk4YmI1NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMjUsNiArMjUsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uaCIKIAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgpAQCAtMzQsMTEgKzM1LDE2IEBACiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KKyNpbmNsdWRlIDxDb3JlQXVkaW8vQ29y
ZUF1ZGlvVHlwZXMuaD4KKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ01UaW1lLmg+CiAKIHR5cGVkZWYg
c3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYg
Y29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRp
b25SZWY7Cit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuICpD
TUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuOwogCiBPQkpDX0NMQVNTIEFWQXNzZXRXcml0ZXI7CiBP
QkpDX0NMQVNTIEFWQXNzZXRXcml0ZXJJbnB1dDsKK09CSkNfQ0xBU1MgV2ViQVZBc3NldFdyaXRl
ckRlbGVnYXRlOwogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1lZGlhVGltZTsKQEAgLTQ2LDI5
ICs1Miw4MyBAQCBjbGFzcyBNZWRpYVRpbWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOwogY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbjsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRp
b0RhdGE7CitjbGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiAKLWNsYXNzIFdFQkNP
UkVfRVhQT1JUIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXVEY6OkRlc3RydWN0aW9uVGhy
ZWFkOjpNYWluPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyPiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwg
V1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFn
ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNv
bnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKTsKICAgICBzdGF0aWMgUmVm
UHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKTsK
LSAgICAKLSAgICBib29sIHNldHVwV3JpdGVyKCk7Ci0gICAgYm9vbCBzZXRWaWRlb0lucHV0KGlu
dCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgYm9vbCBzZXRBdWRpb0lucHV0KCk7CisKICAgICB2
b2lkIGFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKICAgICB2b2lk
IGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3Qg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsK
ICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmKTsKIAorI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCisgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqLCBzaXplX3Qp
OworICAgIHZvaWQgYXBwZW5kRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyNlbmRpZgorCiBw
cml2YXRlOgorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbyk7CisgICAgdm9pZCBjbGVh
cigpOworCisgICAgYm9vbCBpbml0aWFsaXplKCk7CisKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVz
c2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJU
b2tlbik7CisgICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJh
Y2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOworCisgICAgdm9pZCBzdGFydEFz
c2V0V3JpdGVyKCk7CisgICAgdm9pZCBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOwor
CisgICAgYm9vbCBhcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKTsKKyAgICBib29s
IGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpOworCisgICAgdm9pZCBwcm9jZXNz
TmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOworICAgIHZvaWQgcHJvY2Vzc05ld0Nv
bXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKKworICAgIHZvaWQgZmx1c2hDb21wcmVzc2Vk
U2FtcGxlQnVmZmVycyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYXBw
ZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyNlbHNlCiAgICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRy
PEFWQXNzZXRXcml0ZXI+JiYsIFN0cmluZyYmIHBhdGgpOwogICAgIHZvaWQgY2xlYXIoKTsKIAor
ICAgIGJvb2wgc2V0dXBXcml0ZXIoKTsKKyAgICBib29sIHNldFZpZGVvSW5wdXQoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKKyAgICBib29sIHNldEF1ZGlvSW5wdXQoKTsKKyNlbmRpZgorCisgICAg
Ym9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdG9wcGVk
IHsgZmFsc2UgfTsKKwogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKKwor
ICAgIGJvb2wgbV9pc1N0b3BwaW5nIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKKworI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCisgICAgYm9vbCBtX2hhc0F1ZGlvOworICAgIGJvb2wgbV9oYXNWaWRlbzsKKwor
ICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3Jp
cHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4g
bV9hdWRpb0NvbXByZXNzb3I7CisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV9h
dWRpb0Fzc2V0V3JpdGVySW5wdXQ7CisKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlv
blJlZj4gbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fdmlkZW9Db21wcmVzc29yOworICAgIFJldGFpblB0
cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9Bc3NldFdyaXRlcklucHV0OworICAgIENNVGlt
ZSBtX2xhc3RWaWRlb1ByZXNlbnRhdGlvblRpbWU7CisgICAgQ01UaW1lIG1fbGFzdFZpZGVvRGVj
b2RpbmdUaW1lOworICAgIGJvb2wgbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzIHsgZmFsc2UgfTsK
KworICAgIFJldGFpblB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+IG1fd3JpdGVyRGVsZWdh
dGU7CisjZWxzZQogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9JbnB1
dDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX2F1ZGlvSW5wdXQ7CiAKQEAg
LTc4LDE3ICsxMzgsMTMgQEAgcHJpdmF0ZToKICAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5pc2hX
cml0aW5nU2VtYXBob3JlOwogICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdBdWRp
b1NlbWFwaG9yZTsKICAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1h
cGhvcmU7Ci0gICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsgZmFsc2UgfTsKLSAgICBib29s
IG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNGaXJzdEF1ZGlvU2FtcGxlIHsg
dHJ1ZSB9OwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9hdWRpb1B1bGxRdWV1ZTsKICAgICBkaXNw
YXRjaF9xdWV1ZV90IG1fdmlkZW9QdWxsUXVldWU7CiAgICAgRGVxdWU8UmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPj4gbV92aWRlb0J1ZmZlclBvb2w7CiAgICAgRGVxdWU8UmV0YWluUHRyPENN
U2FtcGxlQnVmZmVyUmVmPj4gbV9hdWRpb0J1ZmZlclBvb2w7CiAKLSAgICBib29sIG1faXNTdG9w
cGluZyB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwotICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+IG1fZmV0Y2hEYXRh
Q29tcGxldGlvbkhhbmRsZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bQppbmRleCAyMzM1NGY0Nzg0ZGUwOTJmMDQ4N2MxODU0ZmM1YjI2YTVlMjIxMWFjLi43M2MwNTIw
Y2YxODRiMzI1ZWVkZjA1YmViZTBkM2FiYzBiOTY3MzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0yNiwxMTEgKzI2LDEz
MiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaCIKIAorI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUg
Ik1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW0iCisjZWxzZQorCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAorI2luY2x1ZGUg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIK
ICNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24v
QVZBc3NldFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5w
dXQuaD4KKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcl9Qcml2YXRlLmg+Cisj
aW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbmNs
dWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDx3dGYvQmxvY2tQdHIu
aD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiAjaW1wb3J0IDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAotI3VuZGVmIEFWRW5jb2RlckJpdFJh
dGVLZXkKLSNkZWZpbmUgQVZFbmNvZGVyQml0UmF0ZUtleSBnZXRBVkVuY29kZXJCaXRSYXRlS2V5
V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBBVkZvcm1hdElES2V5Ci0jZGVmaW5lIEFWRm9ybWF0SURL
ZXkgZ2V0QVZGb3JtYXRJREtleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZOdW1iZXJPZkNoYW5u
ZWxzS2V5Ci0jZGVmaW5lIEFWTnVtYmVyT2ZDaGFubmVsc0tleSBnZXRBVk51bWJlck9mQ2hhbm5l
bHNLZXlXaXRoRmFsbGJhY2soKQotI3VuZGVmIEFWU2FtcGxlUmF0ZUtleQotI2RlZmluZSBBVlNh
bXBsZVJhdGVLZXkgZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKK0BpbnRlcmZhY2Ug
V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIDogTlNPYmplY3QgPEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZT4geworICAgIFdlYWtQdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IG1f
d3JpdGVyOworfQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhXcml0ZXI6KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKil3cml0ZXI7Cist
ICh2b2lkKWNsb3NlOworLSAodm9pZClmaW5pc2g7CiAKLXVzaW5nIG5hbWVzcGFjZSBQQUw7CitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgeworfTsKIAot
c3RhdGljIE5TU3RyaW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXIqKXdyaXRlcgogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0
SURLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkZvcm1hdElE
S2V5KCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOworICAgIGlmIChzZWxmKQorICAgICAgICBzZWxmLT5tX3dyaXRlciA9IG1ha2VXZWFrUHRy
KHdyaXRlcik7CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2Fk
IEFWRm9ybWF0SURLZXkiKTsKLSAgICByZXR1cm4gQCJBVkZvcm1hdElES2V5IjsKKyAgICByZXR1
cm4gc2VsZjsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlX
aXRoRmFsbGJhY2soKQorLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9B
VkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6
OmdldF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCk7Ci0KLSAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWTnVtYmVyT2ZDaGFubmVsc0tleSIp
OwotICAgIHJldHVybiBAIkFWTnVtYmVyT2ZDaGFubmVsc0tleSI7CisgICAgW3N1cGVyIGRlYWxs
b2NdOwogfQogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFj
aygpCistICh2b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlk
UHJvZHVjZUZyYWdtZW50ZWRIZWFkZXJEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkSGVhZGVyRGF0
YQogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgp
KQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgp
OworICAgIFVOVVNFRF9QQVJBTShhc3NldFdyaXRlcik7CisgICAgaWYgKCFpc01haW5UaHJlYWQo
KSkgeworICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0
aF0pIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRh
aW5QdHI8V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVk
SGVhZGVyRGF0YSBieXRlc10pLCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBp
ZiAocHJvdGVjdGVkU2VsZi0+bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAgIHByb3RlY3Rl
ZFNlbGYtPm1fd3JpdGVyLT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVlNhbXBsZVJhdGVLZXkiKTsKLSAgICBy
ZXR1cm4gQCJBVlNhbXBsZVJhdGVLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93
cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVh
ZGVyRGF0YSBieXRlc10pLCBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3RoXSk7CiB9CiAKLXN0
YXRpYyBOU1N0cmluZyAqZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCistICh2
b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZy
YWdtZW50ZWRNZWRpYURhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRNZWRpYURhdGEgZnJhZ21lbnRl
ZE1lZGlhRGF0YVJlcG9ydDooQVZGcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0ICopZnJhZ21lbnRl
ZE1lZGlhRGF0YVJlcG9ydAogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FW
RW5jb2RlckJpdFJhdGVLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlv
bl9BVkVuY29kZXJCaXRSYXRlS2V5KCk7CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsK
KyAgICBVTlVTRURfUEFSQU0oZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCk7CisgICAgaWYgKCFp
c01haW5UaHJlYWQoKSkgeworICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRNZWRp
YURhdGEgbGVuZ3RoXSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
U2VsZiA9IFJldGFpblB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIg
PSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
W2ZyYWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyKQorICAgICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZFbmNvZGVyQml0UmF0
ZUtleSIpOwotICAgIHJldHVybiBAIkFWRW5jb2RlckJpdFJhdGVLZXkiOworICAgIGlmIChtX3dy
aXRlcikKKyAgICAgICAgbV93cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KFtmcmFnbWVudGVkTWVkaWFEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkTWVkaWFEYXRhIGxl
bmd0aF0pOwogfQogCi1SZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUq
IGF1ZGlvVHJhY2ssIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKQor
LSAodm9pZCljbG9zZQogewotICAgIGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7Ci0gICAgaWYg
KHZpZGVvVHJhY2spIHsKLSAgICAgICAgYXV0byYgc2V0dGluZ3MgPSB2aWRlb1RyYWNrLT5zZXR0
aW5ncygpOwotICAgICAgICB3aWR0aCA9IHNldHRpbmdzLndpZHRoKCk7Ci0gICAgICAgIGhlaWdo
dCA9IHNldHRpbmdzLmhlaWdodCgpOwotICAgIH0KLSAgICByZXR1cm4gY3JlYXRlKCEhYXVkaW9U
cmFjaywgd2lkdGgsIGhlaWdodCk7CisgICAgbV93cml0ZXIgPSBudWxscHRyOwogfQogCi1SZWZQ
dHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorLSAodm9pZClm
aW5pc2gKIHsKLSAgICBOU1N0cmluZyAqZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVt
cG9yYXJ5RGlyZWN0b3J5KEAidmlkZW9zIik7Ci0gICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIvJWxsZC5tcDQiLCBDTUNsb2NrR2V0VGltZShDTUNs
b2NrR2V0SG9zdFRpbWVDbG9jaygpKS52YWx1ZV07Ci0gICAgTlNTdHJpbmcgKnBhdGggPSBbZGly
ZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1lXTsKKyAgICBtX3dyaXRlciA9
IG51bGxwdHI7Cit9CiAKLSAgICBOU1VSTCAqb3V0cHV0VVJMID0gW05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpwYXRoXTsKLSAgICBTdHJpbmcgZmlsZVBhdGggPSBbcGF0aCBVVEY4U3RyaW5nXTsKLSAg
ICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBhdXRvIGF2QXNzZXRXcml0ZXIgPSBhZG9wdE5T
KFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhVUkw6b3V0cHV0VVJM
IGZpbGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKLSAgICBpZiAoZXJyb3Ip
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3Nl
dFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKWVycm9y
LmNvZGUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CitAZW5kCiAKLSAgICBhdXRv
IHdyaXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoV1RGTW92
ZShhdkFzc2V0V3JpdGVyKSwgV1RGTW92ZShmaWxlUGF0aCkpKTsKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotICAgIGlmIChoYXNBdWRpbyAmJiAhd3JpdGVyLT5zZXRBdWRpb0lucHV0KCkpCit1c2lu
ZyBuYW1lc3BhY2UgUEFMOworCitSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KQoreworICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcihoYXNBdWRpbywgd2lkdGggJiYgaGVpZ2h0KSk7CisgICAgaWYg
KCF3cml0ZXItPmluaXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIHdyaXRlcjsKK30KIAotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKLSAgICAgICAgaWYg
KCF3cml0ZXItPnNldFZpZGVvSW5wdXQod2lkdGgsIGhlaWdodCkpCi0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21w
cmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkICptZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlciwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbikKK3sKKyAgICBhdXRvICp3cml0ZXIg
PSBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcio+KG1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyKTsKKyAgICB3cml0ZXItPnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1w
bGVCdWZmZXJzKCk7Cit9CiAKLSAgICByZXR1cm4gV1RGTW92ZSh3cml0ZXIpOwordm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJh
Y2sodm9pZCAqbWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVldWVUcmlnZ2Vy
VG9rZW4pCit7CisgICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7CisgICAgd3JpdGVyLT5w
cm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOwogfQogCi1NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFW
QXNzZXRXcml0ZXI+JiYgYXZBc3NldFdyaXRlciwgU3RyaW5nJiYgZmlsZVBhdGgpCi0gICAgOiBt
X3dyaXRlcihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpKQotICAgICwgbV9wYXRoKFdURk1vdmUoZmls
ZVBhdGgpKQorTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pCisgICAgOiBtX2hhc0F1ZGlvKGhh
c0F1ZGlvKQorICAgICwgbV9oYXNWaWRlbyhoYXNWaWRlbykKIHsKIH0KIApAQCAtMTM5LDE0MCAr
MTYwLDIyOSBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpjbGVhcigpCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFs
aXplKCkKIHsKLSAgICBpZiAobV92aWRlb0lucHV0KSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1dC5j
bGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fdmlkZW9QdWxsUXVldWUpOworICAg
IE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIG1fd3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxv
Y0FWQXNzZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRXaXRoRmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0
IGVycm9yOiZlcnJvcl0pOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3
aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29kZSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBtX3dyaXRlckRlbGVnYXRlID0gYWRvcHROUyhbW1dlYkFWQXNz
ZXRXcml0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhXcml0ZXI6IHRoaXNdKTsKKyAgICBbbV93
cml0ZXIuZ2V0KCkgc2V0RGVsZWdhdGU6bV93cml0ZXJEZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBp
ZiAobV9oYXNBdWRpbykgeworICAgICAgICBtX2F1ZGlvQ29tcHJlc3NvciA9IEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKGNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxi
YWNrLCB0aGlzKTsKKyAgICAgICAgaWYgKCFtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKG1fYXVkaW9JbnB1dCkgewotICAgICAgICBt
X2F1ZGlvSW5wdXQuY2xlYXIoKTsKLSAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2F1ZGlvUHVs
bFF1ZXVlKTsKKyAgICBpZiAobV9oYXNWaWRlbykgeworICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nv
ciA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKGtDTVZpZGVvQ29kZWNUeXBl
X0gyNjQsIGNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsKKyAgICAg
ICAgaWYgKCFtX3ZpZGVvQ29tcHJlc3NvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgaWYgKG1fd3JpdGVyKQotICAgICAgICBtX3dyaXRlci5jbGVhcigpOworICAgIHJl
dHVybiB0cnVlOworfQogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKLSAgICBpZiAoYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCi0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwordm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKQorewor
ICAgIEFTU0VSVChtX2hhc1ZpZGVvKTsKKyAgICBpZiAoIW1fdmlkZW9Gb3JtYXREZXNjcmlwdGlv
bikgeworICAgICAgICBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdl
dEZvcm1hdERlc2NyaXB0aW9uKG1fdmlkZW9Db21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVCdWZm
ZXIoKSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyksIHRoaXNdIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobV9oYXNBdWRpbyAmJiAh
bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgc3RhcnRBc3NldFdyaXRlcigpOworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYg
KCFtX2hhc1N0YXJ0ZWRXcml0aW5nKQorICAgICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJl
c3NlZFNhbXBsZUJ1ZmZlcnMoKTsKIH0KIAotYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6c2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpCit2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygp
CiB7Ci0gICAgQVNTRVJUKCFtX3ZpZGVvSW5wdXQpOwotICAgIAotICAgIE5TRGljdGlvbmFyeSAq
Y29tcHJlc3Npb25Qcm9wZXJ0aWVzID0gQHsKLSAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRl
S2V5IDogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAxMl0sCi0gICAg
ICAgIEFWVmlkZW9FeHBlY3RlZFNvdXJjZUZyYW1lUmF0ZUtleSA6IEAoMzApLAotICAgICAgICBB
VlZpZGVvTWF4S2V5RnJhbWVJbnRlcnZhbEtleSA6IEAoMTIwKSwKLSAgICAgICAgQVZWaWRlb1By
b2ZpbGVMZXZlbEtleSA6IEFWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbAotICAg
IH07Ci0KLSAgICBOU0RpY3Rpb25hcnkgKnZpZGVvU2V0dGluZ3MgPSBAewotICAgICAgICBBVlZp
ZGVvQ29kZWNLZXk6IEFWVmlkZW9Db2RlY0gyNjQsCi0gICAgICAgIEFWVmlkZW9XaWR0aEtleTog
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6d2lkdGhdLAotICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5
OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpoZWlnaHRdLAotICAgICAgICBBVlZpZGVvQ29tcHJl
c3Npb25Qcm9wZXJ0aWVzS2V5OiBjb21wcmVzc2lvblByb3BlcnRpZXMKLSAgICB9OworICAgIEFT
U0VSVChtX2hhc0F1ZGlvKTsKKyAgICBpZiAoIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikgewor
ICAgICAgICBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1h
dERlc2NyaXB0aW9uKG1fYXVkaW9Db21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVCdWZmZXIoKSk7
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyks
IHRoaXNdIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobV9oYXNWaWRlbyAmJiAhbV92aWRl
b0Zvcm1hdERlc2NyaXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgc3RhcnRBc3NldFdyaXRlcigpOworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFtX2hh
c1N0YXJ0ZWRXcml0aW5nKQorICAgICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3NlZFNh
bXBsZUJ1ZmZlcnMoKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3Rh
cnRBc3NldFdyaXRlcigpCit7CisgICAgaWYgKG1faGFzVmlkZW8pIHsKKyAgICAgICAgbV92aWRl
b0Fzc2V0V3JpdGVySW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0
SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRp
bmdzOm5pbCBzb3VyY2VGb3JtYXRIaW50Om1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKV0p
OworICAgICAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUlu
UmVhbFRpbWU6dHJ1ZV07CisgICAgICAgIGlmICghW21fd3JpdGVyLmdldCgpIGNhbkFkZElucHV0
Om1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpXSkgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRB
c3NldFdyaXRlciBmYWlsZWQgY2FuQWRkSW5wdXQgZm9yIHZpZGVvIik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgW21fd3JpdGVyLmdldCgpIGFkZElucHV0Om1fdmlk
ZW9Bc3NldFdyaXRlcklucHV0LmdldCgpXTsKKyAgICB9CiAgICAgCi0gICAgbV92aWRlb0lucHV0
ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdp
dGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBvdXRwdXRTZXR0aW5nczp2aWRlb1NldHRpbmdz
IHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7Ci0gICAgW21fdmlkZW9JbnB1dCBzZXRFeHBlY3RzTWVk
aWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICBpZiAobV9oYXNBdWRpbykgeworICAgICAgICBt
X2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVy
SW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0
U2V0dGluZ3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uLmdl
dCgpXSk7CisgICAgICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVkaWFE
YXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRk
SW5wdXQ6bV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpz
dGFydEFzc2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgYXVkaW8iKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6
bV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBpZiAoIVtt
X3dyaXRlciBjYW5BZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fdmlk
ZW9JbnB1dCA9IG51bGxwdHI7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAidGhlIHZpZGVvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdy
aXRlciIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkg
c3RhcnRXcml0aW5nXSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
Ik1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBzdGFy
dFdyaXRpbmciKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBbbV93cml0ZXIgYWRkSW5w
dXQ6bV92aWRlb0lucHV0LmdldCgpXTsKLSAgICBtX3ZpZGVvUHVsbFF1ZXVlID0gZGlzcGF0Y2hf
cXVldWVfY3JlYXRlKCJXZWJDb3JlVmlkZW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQ
QVRDSF9RVUVVRV9TRVJJQUwpOworCisgICAgW21fd3JpdGVyLmdldCgpIHN0YXJ0U2Vzc2lvbkF0
U291cmNlVGltZTprQ01UaW1lWmVyb107CisKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVm
ZmVycygpOworCisgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7Cit9CisKK2Jvb2wgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZl
cigpCit7CisgICAgaWYgKCFtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRp
YURhdGFdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYXVk
aW9Db21wcmVzc29yLT50YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5n
ZXQoKSBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0QXVkaW9JbnB1dCgpCiti
b29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1w
bGVCdWZmZXIoKQogewotICAgIEFTU0VSVCghbV9hdWRpb0lucHV0KTsKKyAgICBpZiAoIW1fdmlk
ZW9Db21wcmVzc29yKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBOU0RpY3Rpb25hcnkg
KmF1ZGlvU2V0dGluZ3MgPSBAewotICAgICAgICBBVkVuY29kZXJCaXRSYXRlS2V5IDogQCgyODAw
MCksCi0gICAgICAgIEFWRm9ybWF0SURLZXkgOiBAKGtBdWRpb0Zvcm1hdE1QRUc0QUFDKSwKLSAg
ICAgICAgQVZOdW1iZXJPZkNoYW5uZWxzS2V5IDogQCgxKSwKLSAgICAgICAgQVZTYW1wbGVSYXRl
S2V5IDogQCgyMjA1MCkKLSAgICB9OworICAgIGlmICghW21fdmlkZW9Bc3NldFdyaXRlcklucHV0
IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
bV9hdWRpb0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3Rh
bmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczph
dWRpb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7Ci0gICAgW21fYXVkaW9JbnB1dCBz
ZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKLSAgICAKLSAgICBpZiAoIVttX3dy
aXRlciBjYW5BZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fYXVkaW9J
bnB1dCA9IG51bGxwdHI7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
dGhlIGF1ZGlvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRl
ciIpOworICAgIGF1dG8gYnVmZmVyID0gbV92aWRlb0NvbXByZXNzb3ItPnRha2VPdXRwdXRTYW1w
bGVCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV9hdWRpb0lucHV0LmdldCgpXTsKLSAgICBtX2F1
ZGlvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3JlQXVkaW9SZWNvcmRp
bmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworCisgICAgbV9sYXN0
VmlkZW9QcmVzZW50YXRpb25UaW1lID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1l
U3RhbXAoYnVmZmVyLmdldCgpKTsKKyAgICBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSA9IENNU2Ft
cGxlQnVmZmVyR2V0RGVjb2RlVGltZVN0YW1wKGJ1ZmZlci5nZXQoKSk7CisgICAgbV9oYXNFbmNv
ZGVkVmlkZW9TYW1wbGVzID0gdHJ1ZTsKKworICAgIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5n
ZXQoKSBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFNh
bXBsZUJ1ZmZlcnMoKQoreworICAgIHdoaWxlIChhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVC
dWZmZXIoKSB8fCBhcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKSkgeyB9OworfQor
CitzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJr
ZXIoQVZBc3NldFdyaXRlcklucHV0ICphc3NldFdyaXRlcklucHV0LCBDTVRpbWUgcHJlc2VudGF0
aW9uVGltZVN0YW1wLCBDTVRpbWUgZGVjb2RpbmdUaW1lU3RhbXApCit7CisgICAgQ01TYW1wbGVU
aW1pbmdJbmZvIHRpbWluZ0luZm8gPSB7IGtDTVRpbWVJbnZhbGlkLCBwcmVzZW50YXRpb25UaW1l
U3RhbXAsIGRlY29kaW5nVGltZVN0YW1wfTsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZl
ciA9IE5VTEw7CisgICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIE5VTEwsIHRydWUsIE5VTEwsIE5VTEwsIE5VTEwsIDAsIDEsICZ0aW1pbmdJ
bmZvLCAwLCBOVUxMLCAmYnVmZmVyKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBl
bmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlciBmYWlsZWQgQ01TYW1wbGVCdWZmZXJD
cmVhdGUgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRv
IHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0YoYnVmZmVyKTsKKworICAgIENNU2V0QXR0YWNobWVudChz
YW1wbGVCdWZmZXIuZ2V0KCksIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZp
b3VzU2FtcGxlRHVyYXRpb24sIGtDRkJvb2xlYW5UcnVlLCBrQ01BdHRhY2htZW50TW9kZV9TaG91
bGRQcm9wYWdhdGUpOworICAgIGlmICghW2Fzc2V0V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxlQnVm
ZmVyOnNhbXBsZUJ1ZmZlci5nZXQoKV0pCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgYXBwZW5kU2FtcGxlQnVmZmVyIHRv
IHdyaXRlciBpbnB1dCBmYWlsZWQiKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6YXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9oYXNFbmNv
ZGVkVmlkZW9TYW1wbGVzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5
Rm9yTW9yZU1lZGlhRGF0YV0pIHsKKyAgICAgICAgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVy
YXRpb25NYXJrZXIobV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCksIG1fbGFzdFZpZGVvUHJl
c2VudGF0aW9uVGltZSwgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBibG9jayA9
IG1ha2VCbG9ja1B0cihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKHdlYWtUaGlzKSB7CisgICAgICAgICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1w
bGVEdXJhdGlvbk1hcmtlcihtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0Vmlk
ZW9QcmVzZW50YXRpb25UaW1lLCBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSk7CisgICAgICAgICAg
ICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgbWFya0FzRmluaXNoZWRdOworICAgICAgICB9Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7CisgICAgW21fdmlkZW9Bc3NldFdy
aXRlcklucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkgdXNpbmdCbG9jazpibG9jay5nZXQoKV07Cit9CisKK3ZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGFwcGVuZENvbXBy
ZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisgICAgYXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9u
SWZOZWVkZWQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpjbGVhcigpCit7CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAg
ICBtX3dyaXRlci5jbGVhcigpOworCisgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxl
cikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworfQorCisKIHN0YXRpYyBp
bmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1
cnJlbnRUaW1lU3RhbXAoQ01TYW1wbGVCdWZmZXJSZWYgb3JpZ2luYWxCdWZmZXIpCiB7CiAgICAg
Q01UaW1lIHN0YXJ0VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2Nr
KCkpOwogICAgIENNSXRlbUNvdW50IGNvdW50ID0gMDsKICAgICBDTVNhbXBsZUJ1ZmZlckdldFNh
bXBsZVRpbWluZ0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgMCwgbmlsLCAmY291bnQpOwotICAg
IAorCiAgICAgVmVjdG9yPENNU2FtcGxlVGltaW5nSW5mbz4gdGltZUluZm8oY291bnQpOwogICAg
IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCBj
b3VudCwgdGltZUluZm8uZGF0YSgpLCAmY291bnQpOwotICAgIAotICAgIGZvciAoQ01JdGVtQ291
bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisKKyAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7CiAgICAgICAgIHRpbWVJbmZvW2ldLmRlY29kZVRpbWVTdGFtcCA9IGtDTVRp
bWVJbnZhbGlkOwogICAgICAgICB0aW1lSW5mb1tpXS5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBz
dGFydFRpbWU7CiAgICAgfQotICAgIAorCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3QnVmZmVy
ID0gbnVsbHB0cjsKLSAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0
aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRp
bWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcik7Ci0gICAgaWYgKGVycm9yKQorICAgIGlmIChhdXRv
IGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1
ZmZlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlciBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5n
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CiAgICAgcmV0dXJuIGFkb3B0Q0YobmV3QnVmZmVyKTsKIH0KLQorICAgIAogdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZm
ZXJSZWYgc2FtcGxlQnVmZmVyKQogewotICAgIEFTU0VSVChtX3ZpZGVvSW5wdXQpOwotICAgIGlm
IChtX2lzU3RvcHBlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2hhc1N0YXJ0ZWRX
cml0aW5nKSB7Ci0gICAgICAgIGlmICghW21fd3JpdGVyIHN0YXJ0V3JpdGluZ10pIHsKLSAgICAg
ICAgICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGgg
ZXJyb3IgY29kZSAlbGQiLCAobG9uZylbbV93cml0ZXIgZXJyb3JdKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VU
aW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKLSAgICAgICAg
bV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7Ci0gICAgICAgIFJlZlB0cjxNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7Ci0gICAgICAgIFttX3ZpZGVvSW5w
dXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6bV92aWRlb1B1bGxRdWV1ZSB1c2lu
Z0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewot
ICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBpc1Jl
YWR5Rm9yTW9yZU1lZGlhRGF0YV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOwotICAgICAgICAg
ICAgICAgIGlmIChtX3ZpZGVvQnVmZmVyUG9vbC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gbV92aWRlb0J1ZmZlclBv
b2wudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZm
ZXIuZ2V0KCldKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0gd2hp
bGUgKHRydWUpOwotICAgICAgICAgICAgaWYgKG1faXNTdG9wcGVkICYmIG1fdmlkZW9CdWZmZXJQ
b29sLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIFttX3ZpZGVvSW5wdXQgbWFya0FzRmlu
aXNoZWRdOwotICAgICAgICAgICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLnNp
Z25hbCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9XTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBhdXRvIGJ1ZmZlcldpdGhDdXJyZW50VGltZSA9IGNvcHlTYW1wbGVCdWZmZXJXaXRo
Q3VycmVudFRpbWVTdGFtcChzYW1wbGVCdWZmZXIpOwotICAgIGlmICghYnVmZmVyV2l0aEN1cnJl
bnRUaW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
dmlkZW9Mb2NrKTsKLSAgICBtX3ZpZGVvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShidWZmZXJX
aXRoQ3VycmVudFRpbWUpKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBzZXQgdGhlIHRp
bWVzdGFtcHMgaWYgdGhleSBhcmUgYWxyZWFkeSBzZXQuCisgICAgaWYgKGF1dG8gYnVmZmVyV2l0
aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBs
ZUJ1ZmZlcikpCisgICAgICAgIG1fdmlkZW9Db21wcmVzc29yLT5hZGRTYW1wbGVCdWZmZXIoYnVm
ZmVyV2l0aEN1cnJlbnRUaW1lLmdldCgpKTsKIH0KIAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8
Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25z
dCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKQEAgLTI4MCw2OCArMzkwLDM5
IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0
ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29uCiAgICAgYXV0byBiYXNpY0Rlc2NyaXB0aW9uID0g
V1RGOjpnZXQ8Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRpb24u
cGxhdGZvcm1EZXNjcmlwdGlvbigpLmRlc2NyaXB0aW9uKTsKICAgICBDTUZvcm1hdERlc2NyaXB0
aW9uUmVmIGZvcm1hdCA9IG51bGxwdHI7CiAgICAgYXV0byBlcnJvciA9IENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBiYXNpY0Rlc2NyaXB0aW9uLCAw
LCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0KTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYg
KGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAg
cmV0dXJuIGFkb3B0Q0YoZm9ybWF0KTsKIH0KIAotc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01T
YW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0
aW9ucyhDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdCwgc2l6ZV90IHNhbXBsZUNvdW50KQot
ewotICAgIENNVGltZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRp
bWVDbG9jaygpKTsKLSAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBudWxscHRy
OwotICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERl
c2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwg
Zm9ybWF0LCBzYW1wbGVDb3VudCwgc3RhcnRUaW1lLCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsKLSAg
ICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBhZG9wdENG
KHNhbXBsZUJ1ZmZlcik7Ci19Ci0KLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFw
cGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25z
dCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgV1RGOjpNZWRpYVRp
bWUmLCBzaXplX3Qgc2FtcGxlQ291bnQpCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBs
ZUJ1ZmZlclJlZj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0Rh
dGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25z
dCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgc2l6ZV90IHNhbXBsZUNvdW50KQogewotICAgIEFTU0VS
VChtX2F1ZGlvSW5wdXQpOwotICAgIGlmICgoIW1faGFzU3RhcnRlZFdyaXRpbmcgJiYgbV92aWRl
b0lucHV0KSB8fCBtX2lzU3RvcHBlZCkKLSAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gZm9ybWF0
ID0gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7CiAgICAgaWYgKCFm
b3JtYXQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAobV9pc0ZpcnN0QXVkaW9TYW1wbGUpIHsK
LSAgICAgICAgaWYgKCFtX3ZpZGVvSW5wdXQpIHsKLSAgICAgICAgICAgIC8vIGF1ZGlvLW9ubHkg
cmVjb3JkaW5nLgotICAgICAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewot
ICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRT
b3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKLSAg
ICAgICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IG1faXNGaXJzdEF1ZGlvU2FtcGxlID0gZmFsc2U7Ci0gICAgICAgIFJlZlB0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7Ci0gICAgICAgIFttX2F1ZGlv
SW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6bV9hdWRpb1B1bGxRdWV1ZSB1
c2luZ0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0g
ewotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIGlmICghW21fYXVkaW9JbnB1dCBp
c1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb0xvY2spOwotICAgICAg
ICAgICAgICAgIGlmIChtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9hdWRpb0J1ZmZl
clBvb2wudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7
Ci0gICAgICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVy
LmdldCgpXTsKLSAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpOwotICAgICAgICAgICAgaWYgKG1f
aXNTdG9wcGVkICYmIG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
ICAgIFttX2F1ZGlvSW5wdXQgbWFya0FzRmluaXNoZWRdOwotICAgICAgICAgICAgICAgIG1fZmlu
aXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLnNpZ25hbCgpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9XTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBz
YW1wbGVCdWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVm
ZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxM
LCBmYWxzZSwgTlVMTCwgTlVMTCwgZm9ybWF0LmdldCgpLCBzYW1wbGVDb3VudCwgdG9DTVRpbWUo
dGltZSksIE5VTEwsICZzYW1wbGVCdWZmZXIpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIGF1dG8g
YnVmZmVyID0gYWRvcHRDRihzYW1wbGVCdWZmZXIpOwogCi0gICAgYXV0byBzYW1wbGVCdWZmZXIg
PSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMoZm9ybWF0Lmdl
dCgpLCBzYW1wbGVDb3VudCk7Ci0gICAgaWYgKCFzYW1wbGVCdWZmZXIpCi0gICAgICAgIHJldHVy
bjsKLSAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlv
QnVmZmVyTGlzdChzYW1wbGVCdWZmZXIuZ2V0KCksIGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkubGlz
dCgpKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybjsKKyAgICBlcnJvciA9IENNU2Ft
cGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3QoYnVmZmVyLmdldCgpLCBr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBkb3duY2FzdDxXZWJB
dWRpb0J1ZmZlckxpc3Q+KGRhdGEpLmxpc3QoKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXIgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdCBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJl
dHVybiBidWZmZXI7Cit9CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2Nr
KTsKLSAgICBtX2F1ZGlvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShzYW1wbGVCdWZmZXIpKTsK
K3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVy
KGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmIHRpbWUsIHNpemVfdCBzYW1w
bGVDb3VudCkKK3sKKyAgICBpZiAoYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVhdGVBdWRpb1NhbXBs
ZUJ1ZmZlcihkYXRhLCBkZXNjcmlwdGlvbiwgdGltZSwgc2FtcGxlQ291bnQpKQorICAgICAgICBt
X2F1ZGlvQ29tcHJlc3Nvci0+YWRkU2FtcGxlQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSk7CiB9
CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcoKQpAQCAt
MzUwLDM1ICs0MzEsNDAgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJl
Y29yZGluZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKwor
ICAgIGlmIChtX3ZpZGVvQ29tcHJlc3NvcikKKyAgICAgICAgbV92aWRlb0NvbXByZXNzb3ItPmZp
bmlzaCgpOworICAgIGlmIChtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgbV9hdWRpb0NvbXBy
ZXNzb3ItPmZpbmlzaCgpOworCiAgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKQogICAgICAg
ICByZXR1cm47CiAgICAgQVNTRVJUKFttX3dyaXRlciBzdGF0dXNdID09IEFWQXNzZXRXcml0ZXJT
dGF0dXNXcml0aW5nKTsKLSAgICBpZiAobV92aWRlb0lucHV0KQotICAgICAgICBtX2ZpbmlzaFdy
aXRpbmdWaWRlb1NlbWFwaG9yZS53YWl0KCk7Ci0KLSAgICBpZiAobV9hdWRpb0lucHV0KQotICAg
ICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS53YWl0KCk7CiAKICAgICBtX2lzU3Rv
cHBpbmcgPSB0cnVlOwotICAgIFttX3dyaXRlciBmaW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25I
YW5kbGVyOlt0aGlzLCB3ZWFrUHRyID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgewot
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrUHRyID0gV1RGTW92ZSh3ZWFrUHRy
KSwgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRo
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICghd2Vha1B0cikKLSAgICAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgIG1faXNTdG9wcGluZyA9IGZhbHNlOwotICAgICAgICAg
ICAgaWYgKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgICAgICAgICAgbV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICBmbHVz
aENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgICAgICBtX2lzU3RvcHBlZCA9IGZhbHNlOwotICAgICAgICAgICAgbV9o
YXNTdGFydGVkV3JpdGluZyA9IGZhbHNlOwotICAgICAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1w
bGUgPSB0cnVlOwotICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG1f
ZmluaXNoV3JpdGluZ1NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICB9XTsKLSAgICBtX2ZpbmlzaFdy
aXRpbmdTZW1hcGhvcmUud2FpdCgpOworICAgICAgICBbbV93cml0ZXIgZmx1c2hdOworICAgICAg
ICBbbV93cml0ZXIgZmluaXNoV3JpdGluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgaWYgKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBXVEZNb3ZlKG1fZGF0YSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBjbGVhcigpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH1dOworICAgIH0pOwogfQogCiB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTM5Miw2ICs0NzgsMjUgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEIKICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAg
IGlmICghbV9kYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIHNpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZGF0YS0+YXBwZW5kKGRh
dGEsIHNpemUpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRE
YXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghbV9kYXRhKSB7Cisg
ICAgICAgIG1fZGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBtX2RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzNmYjFlZWFl
N2Q0YTQ1NWUzNTRhMTZlYjZhNjg0NjhlZDQxMmU0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbQpAQCAtMCwwICsxLDM4MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVk
ZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVy
TGlzdC5oIgorI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyLmg+CisjaW5jbHVk
ZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJJbnB1dC5oPgorI2luY2x1ZGUgPHBhbC9jZi9D
b3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5k
YXRpb25Tb2Z0TGluay5oPgorCisjdW5kZWYgQVZFbmNvZGVyQml0UmF0ZUtleQorI2RlZmluZSBB
VkVuY29kZXJCaXRSYXRlS2V5IGdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2soKQor
I3VuZGVmIEFWRm9ybWF0SURLZXkKKyNkZWZpbmUgQVZGb3JtYXRJREtleSBnZXRBVkZvcm1hdElE
S2V5V2l0aEZhbGxiYWNrKCkKKyN1bmRlZiBBVk51bWJlck9mQ2hhbm5lbHNLZXkKKyNkZWZpbmUg
QVZOdW1iZXJPZkNoYW5uZWxzS2V5IGdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFj
aygpCisjdW5kZWYgQVZTYW1wbGVSYXRlS2V5CisjZGVmaW5lIEFWU2FtcGxlUmF0ZUtleSBnZXRB
VlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJhY2soKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBQQUw7CisKK3N0YXRpYyBOU1N0cmluZyAqZ2V0QVZGb3JtYXRJREtleVdp
dGhGYWxsYmFjaygpCit7CisgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZGb3Jt
YXRJREtleSgpKQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0
SURLZXkoKTsKKworICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQg
QVZGb3JtYXRJREtleSIpOworICAgIHJldHVybiBAIkFWRm9ybWF0SURLZXkiOworfQorCitzdGF0
aWMgTlNTdHJpbmcgKmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCit7Cisg
ICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCkp
CisgICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxz
S2V5KCk7CisKKyAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFW
TnVtYmVyT2ZDaGFubmVsc0tleSIpOworICAgIHJldHVybiBAIkFWTnVtYmVyT2ZDaGFubmVsc0tl
eSI7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNr
KCkKK3sKKyAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXko
KSkKKyAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXko
KTsKKworICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZTYW1w
bGVSYXRlS2V5Iik7CisgICAgcmV0dXJuIEAiQVZTYW1wbGVSYXRlS2V5IjsKK30KKworc3RhdGlj
IE5TU3RyaW5nICpnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKK3sKKyAgICBp
ZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCkpCisgICAg
ICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgpOwor
CisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkVuY29kZXJC
aXRSYXRlS2V5Iik7CisgICAgcmV0dXJuIEAiQVZFbmNvZGVyQml0UmF0ZUtleSI7Cit9CisKK1Jl
ZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAg
TlNTdHJpbmcgKmRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9y
eShAInZpZGVvcyIpOworICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiLyVsbGQubXA0IiwgQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1l
Q2xvY2soKSkudmFsdWVdOworICAgIE5TU3RyaW5nICpwYXRoID0gW2RpcmVjdG9yeSBzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzpmaWxlbmFtZV07CisKKyAgICBOU1VSTCAqb3V0cHV0VVJMID0gW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXTsKKyAgICBTdHJpbmcgZmlsZVBhdGggPSBbcGF0aCBV
VEY4U3RyaW5nXTsKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBhdXRvIGF2QXNzZXRX
cml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdp
dGhVUkw6b3V0cHV0VVJMIGZpbGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsK
KyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVs
ZCIsIChsb25nKWVycm9yLmNvZGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBhdXRvIHdyaXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXIoV1RGTW92ZShhdkFzc2V0V3JpdGVyKSwgV1RGTW92ZShmaWxlUGF0aCkpKTsKKworICAgIGlm
IChoYXNBdWRpbyAmJiAhd3JpdGVyLT5zZXRBdWRpb0lucHV0KCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgeworICAgICAgICBpZiAoIXdyaXRl
ci0+c2V0VmlkZW9JbnB1dCh3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIHJldHVybiBXVEZNb3ZlKHdyaXRlcik7Cit9CisKK01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRhaW5QdHI8
QVZBc3NldFdyaXRlcj4mJiBhdkFzc2V0V3JpdGVyLCBTdHJpbmcmJiBmaWxlUGF0aCkKKyAgICA6
IG1fd3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRlcikpCisgICAgLCBtX3BhdGgoV1RGTW92ZShm
aWxlUGF0aCkpCit7Cit9CisKK01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXIoKQoreworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKCkKK3sKKyAgICBpZiAobV92aWRlb0lucHV0KSB7Cisg
ICAgICAgIG1fdmlkZW9JbnB1dC5jbGVhcigpOworICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1f
dmlkZW9QdWxsUXVldWUpOworICAgIH0KKyAgICBpZiAobV9hdWRpb0lucHV0KSB7CisgICAgICAg
IG1fYXVkaW9JbnB1dC5jbGVhcigpOworICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fYXVkaW9Q
dWxsUXVldWUpOworICAgIH0KKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLmNs
ZWFyKCk7CisKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIEFT
U0VSVCghbV92aWRlb0lucHV0KTsKKyAgICAKKyAgICBOU0RpY3Rpb25hcnkgKmNvbXByZXNzaW9u
UHJvcGVydGllcyA9IEB7CisgICAgICAgIEFWVmlkZW9BdmVyYWdlQml0UmF0ZUtleSA6IFtOU051
bWJlciBudW1iZXJXaXRoSW50OndpZHRoICogaGVpZ2h0ICogMTJdLAorICAgICAgICBBVlZpZGVv
RXhwZWN0ZWRTb3VyY2VGcmFtZVJhdGVLZXkgOiBAKDMwKSwKKyAgICAgICAgQVZWaWRlb01heEtl
eUZyYW1lSW50ZXJ2YWxLZXkgOiBAKDEyMCksCisgICAgICAgIEFWVmlkZW9Qcm9maWxlTGV2ZWxL
ZXkgOiBBVlZpZGVvUHJvZmlsZUxldmVsSDI2NE1haW5BdXRvTGV2ZWwKKyAgICB9OworCisgICAg
TlNEaWN0aW9uYXJ5ICp2aWRlb1NldHRpbmdzID0gQHsKKyAgICAgICAgQVZWaWRlb0NvZGVjS2V5
OiBBVlZpZGVvQ29kZWNIMjY0LAorICAgICAgICBBVlZpZGVvV2lkdGhLZXk6IFtOU051bWJlciBu
dW1iZXJXaXRoSW50OndpZHRoXSwKKyAgICAgICAgQVZWaWRlb0hlaWdodEtleTogW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6aGVpZ2h0XSwKKyAgICAgICAgQVZWaWRlb0NvbXByZXNzaW9uUHJvcGVy
dGllc0tleTogY29tcHJlc3Npb25Qcm9wZXJ0aWVzCisgICAgfTsKKyAgICAKKyAgICBtX3ZpZGVv
SW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBp
bml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOnZpZGVvU2V0
dGluZ3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsKKyAgICBbbV92aWRlb0lucHV0IHNldEV4cGVj
dHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOworICAgIAorICAgIGlmICghW21fd3JpdGVyIGNh
bkFkZElucHV0Om1fdmlkZW9JbnB1dC5nZXQoKV0pIHsKKyAgICAgICAgbV92aWRlb0lucHV0ID0g
bnVsbHB0cjsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgdmlk
ZW8gaW5wdXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgW21fd3JpdGVyIGFkZElucHV0Om1fdmlk
ZW9JbnB1dC5nZXQoKV07CisgICAgbV92aWRlb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2Ny
ZWF0ZSgiV2ViQ29yZVZpZGVvUmVjb3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFUQ0hfUVVF
VUVfU0VSSUFMKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6c2V0QXVkaW9JbnB1dCgpCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvSW5wdXQp
OworCisgICAgTlNEaWN0aW9uYXJ5ICphdWRpb1NldHRpbmdzID0gQHsKKyAgICAgICAgQVZFbmNv
ZGVyQml0UmF0ZUtleSA6IEAoMjgwMDApLAorICAgICAgICBBVkZvcm1hdElES2V5IDogQChrQXVk
aW9Gb3JtYXRNUEVHNEFBQyksCisgICAgICAgIEFWTnVtYmVyT2ZDaGFubmVsc0tleSA6IEAoMSks
CisgICAgICAgIEFWU2FtcGxlUmF0ZUtleSA6IEAoMjIwNTApCisgICAgfTsKKworICAgIG1fYXVk
aW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgp
IGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6YXVkaW9T
ZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5pbF0pOworICAgIFttX2F1ZGlvSW5wdXQgc2V0RXhw
ZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07CisgICAgCisgICAgaWYgKCFbbV93cml0ZXIg
Y2FuQWRkSW5wdXQ6bV9hdWRpb0lucHV0LmdldCgpXSkgeworICAgICAgICBtX2F1ZGlvSW5wdXQg
PSBudWxscHRyOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgInRoZSBh
dWRpbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0ZXIiKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV9h
dWRpb0lucHV0LmdldCgpXTsKKyAgICBtX2F1ZGlvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVf
Y3JlYXRlKCJXZWJDb3JlQXVkaW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9R
VUVVRV9TRVJJQUwpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5lIFJldGFp
blB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0
YW1wKENNU2FtcGxlQnVmZmVyUmVmIG9yaWdpbmFsQnVmZmVyKQoreworICAgIENNVGltZSBzdGFy
dFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsKKyAgICBD
TUl0ZW1Db3VudCBjb3VudCA9IDA7CisgICAgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJ
bmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIDAsIG5pbCwgJmNvdW50KTsKKyAgICAKKyAgICBWZWN0
b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3VudCk7CisgICAgQ01TYW1wbGVCdWZm
ZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5m
by5kYXRhKCksICZjb3VudCk7CisgICAgCisgICAgZm9yIChDTUl0ZW1Db3VudCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKKyAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1wID0ga0NN
VGltZUludmFsaWQ7CisgICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9
IHN0YXJ0VGltZTsKKyAgICB9CisgICAgCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3QnVmZmVy
ID0gbnVsbHB0cjsKKyAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0
aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRp
bWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRDRihuZXdCdWZmZXIpOworfQorCit2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIpCit7CisgICAgQVNTRVJUKG1fdmlkZW9JbnB1dCk7Cisg
ICAgaWYgKG1faXNTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1faGFzU3Rh
cnRlZFdyaXRpbmcpIHsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewor
ICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQg
d2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKVttX3dyaXRlciBlcnJvcl0pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNv
dXJjZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOworICAg
ICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKKyAgICAgICAgUmVmUHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKKyAgICAgICAgW21fdmlk
ZW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX3ZpZGVvUHVsbFF1ZXVl
IHVzaW5nQmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
XSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0
IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7CisgICAg
ICAgICAgICAgICAgaWYgKG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX3ZpZGVvQnVm
ZmVyUG9vbC50YWtlRmlyc3QoKTsKKyAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHko
KTsKKyAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVy
OmJ1ZmZlci5nZXQoKV0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fSB3aGlsZSAodHJ1ZSk7CisgICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV92aWRlb0J1
ZmZlclBvb2wuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgW21fdmlkZW9JbnB1dCBtYXJr
QXNGaW5pc2hlZF07CisgICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhv
cmUuc2lnbmFsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZl
cldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKCFidWZmZXJXaXRo
Q3VycmVudFRpbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV92aWRlb0xvY2spOworICAgIG1fdmlkZW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcldpdGhDdXJyZW50VGltZSkpOworfQorCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTUZv
cm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQoreworICAgIGF1dG8gYmFzaWNEZXNj
cmlwdGlvbiA9IFdURjo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRl
c2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CisgICAgQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZiBmb3JtYXQgPSBudWxscHRyOworICAgIGF1dG8gZXJyb3IgPSBDTUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzaWNEZXNj
cmlwdGlvbiwgMCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdCk7CisgICAgaWYgKGVycm9y
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRDRihmb3JtYXQpOwor
fQorCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQXVk
aW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYgZm9ybWF0LCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgQ01UaW1lIHN0YXJ0VGltZSA9
IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOworICAgIENNU2FtcGxl
QnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENNQXVk
aW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQsIHNhbXBsZUNvdW50LCBzdGFy
dFRpbWUsIE5VTEwsICZzYW1wbGVCdWZmZXIpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKK30KKwordm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVDb3VudCkK
K3sKKyAgICBBU1NFUlQobV9hdWRpb0lucHV0KTsKKyAgICBpZiAoKCFtX2hhc1N0YXJ0ZWRXcml0
aW5nICYmIG1fdmlkZW9JbnB1dCkgfHwgbV9pc1N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIGZvcm1hdCA9IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oZGVzY3JpcHRpb24p
OworICAgIGlmICghZm9ybWF0KQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1faXNGaXJzdEF1
ZGlvU2FtcGxlKSB7CisgICAgICAgIGlmICghbV92aWRlb0lucHV0KSB7CisgICAgICAgICAgICAv
LyBhdWRpby1vbmx5IHJlY29yZGluZy4KKyAgICAgICAgICAgIGlmICghW21fd3JpdGVyIHN0YXJ0
V3JpdGluZ10pIHsKKyAgICAgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgW21fd3JpdGVyIHN0
YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVD
bG9jaygpKV07CisgICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IGZhbHNlOworICAgICAgICBSZWZQ
dHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOworICAg
ICAgICBbbV9hdWRpb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fYXVk
aW9QdWxsUXVldWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyldIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpZiAoIVtt
X2F1ZGlvSW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9M
b2NrKTsKKyAgICAgICAgICAgICAgICBpZiAobV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IG1fYXVkaW9CdWZmZXJQb29sLnRha2VGaXJzdCgpOworICAgICAgICAgICAgICAgIGxvY2tlci51
bmxvY2tFYXJseSgpOworICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgYXBwZW5kU2FtcGxl
QnVmZmVyOmJ1ZmZlci5nZXQoKV07CisgICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsKKyAgICAg
ICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IG1hcmtBc0ZpbmlzaGVkXTsKKyAgICAgICAg
ICAgICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS5zaWduYWwoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfV07CisgICAgfQorCisgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVh
dGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMoZm9ybWF0LmdldCgpLCBz
YW1wbGVDb3VudCk7CisgICAgaWYgKCFzYW1wbGVCdWZmZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVy
TGlzdChzYW1wbGVCdWZmZXIuZ2V0KCksIGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkubGlzdCgpKTsK
KyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9hdWRpb0xvY2spOworICAgIG1fYXVkaW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3Zl
KHNhbXBsZUJ1ZmZlcikpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpz
dG9wUmVjb3JkaW5nKCkKK3sKKyAgICBpZiAobV9pc1N0b3BwZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKyAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcp
CisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZBc3Nl
dFdyaXRlclN0YXR1c1dyaXRpbmcpOworICAgIGlmIChtX3ZpZGVvSW5wdXQpCisgICAgICAgIG1f
ZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLndhaXQoKTsKKworICAgIGlmIChtX2F1ZGlvSW5w
dXQpCisgICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKKworICAg
IG1faXNTdG9wcGluZyA9IHRydWU7CisgICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29t
cGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0
YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3Zl
KHdlYWtQdHIpLCBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShtX3BhdGgpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7Cisg
ICAgICAgICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAg
ICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOwor
CisgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IGZhbHNlOworICAgICAgICAgICAgbV9oYXNTdGFy
dGVkV3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSB0
cnVlOworICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fZmluaXNo
V3JpdGluZ1NlbWFwaG9yZS5zaWduYWwoKTsKKyAgICB9XTsKKyAgICBtX2ZpbmlzaFdyaXRpbmdT
ZW1hcGhvcmUud2FpdCgpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpm
ZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAobV9pc1N0b3BwaW5nKSB7CisgICAgICAg
IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gYnVmZmVyID0gV1RGTW92ZSht
X2RhdGEpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDE0ZGJiNTQ5Y2Y1YTJlNTE1N2U5MjBjNmM1YWU0YmEw
NjBlNjgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCwwICsxLDcx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEu
aD4KKyNpbmNsdWRlIDxWaWRlb1Rvb2xib3gvVlRFcnJvcnMuaD4KKwordHlwZWRlZiBzdHJ1Y3Qg
b3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3Qg
T3BhcXVlVlRDb21wcmVzc2lvblNlc3Npb24qICBWVENvbXByZXNzaW9uU2Vzc2lvblJlZjsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBjcmVhdGUoQ01WaWRlb0Nv
ZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmpl
Y3QpOworICAgIH5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKworICAgIHZvaWQgZmlu
aXNoKCk7CisgICAgdm9pZCBhZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOworICAg
IENNU2FtcGxlQnVmZmVyUmVmIGdldE91dHB1dFNhbXBsZUJ1ZmZlcigpOworICAgIFJldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4gdGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOworCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVvQ29kZWNU
eXBlKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNr
LCB2b2lkKiBjYWxsYmFja09iamVjdCk7CisKKyAgICB2b2lkIHByb2Nlc3NTYW1wbGVCdWZmZXIo
Q01TYW1wbGVCdWZmZXJSZWYpOworICAgIGJvb2wgaW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVZp
ZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYpOworCisgICAgc3RhdGljIHZvaWQgdmlkZW9Db21wcmVz
c2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9TU3RhdHVzLCBWVEVuY29kZUluZm9G
bGFncywgQ01TYW1wbGVCdWZmZXJSZWYpOworCisgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3Nlcmlh
bERpc3BhdGNoUXVldWU7CisgICAgUmV0YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0
QnVmZmVyUXVldWU7CisgICAgUmV0YWluUHRyPFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmPiBtX3Z0
U2Vzc2lvbjsKKworICAgIGJvb2wgbV9pc0VuY29kaW5nIHsgZmFsc2UgfTsKKworICAgIENNVmlk
ZW9Db2RlY1R5cGUgbV9vdXRwdXRDb2RlY1R5cGU7CisgICAgZmxvYXQgbV9tYXhLZXlGcmFtZUlu
dGVydmFsRHVyYXRpb24geyAyLjAgfTsKKyAgICB1bnNpZ25lZCBtX2V4cGVjdGVkRnJhbWVSYXRl
IHsgMzAgfTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwOGZlNDMyOTVlZjUyYTY3OTBmZjFk
ZWNhY2E2ZjMwZDliYmJhZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpA
QCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9y
dCA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisjaW1wb3J0IDxWaWRlb1Rvb2xib3gvVlRDb21wcmVzc2lvblNlc3Npb24uaD4KKyNpbXBv
cnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaW1wb3J0IDxwYWwvY2YvVmlkZW9Ub29sYm94U29m
dExpbmsuaD4KKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlw
ZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tP
YmplY3QpCit7CisgICAgYXV0byBjb21wcmVzc29yID0gc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcj4obmV3IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihvdXRw
dXRDb2RlY1R5cGUpKTsKKyAgICBpZiAoIWNvbXByZXNzb3ItPmluaXRpYWxpemUoY2FsbGJhY2ss
IGNhbGxiYWNrT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNv
bXByZXNzb3I7Cit9CisKK1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yKENNVmlkZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlKQorICAgIDog
bV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUu
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSB9Cisg
ICAgLCBtX291dHB1dENvZGVjVHlwZSB7IG91dHB1dENvZGVjVHlwZSB9Cit7Cit9CisKK1ZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6flZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCit7
CisgICAgaWYgKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFz
ZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOworfQorCitib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNr
LCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIG91dHB1dEJ1
ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRT
YW1wbGVCdWZmZXJzKCksICZvdXRwdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdW5hYmxl
IHRvIGNyZWF0ZSBidWZmZXIgcXVldWUgJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgbV9vdXRwdXRCdWZmZXJRdWV1ZSA9IG91dHB1dEJ1ZmZlclF1ZXVlOwor
ICAgIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcihtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgp
LCBjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QsIGtDTUJ1ZmZlclF1ZXVlVHJpZ2dlcl9XaGVuRGF0
YUJlY29tZXNSZWFkeSwga0NNVGltZVplcm8sIE5VTEwpOworCisgICAgbV9pc0VuY29kaW5nID0g
dHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmZpbmlzaCgpCit7CisgICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVl
dWUsIF57CisgICAgICAgIGF1dG8gZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRl
RnJhbWVzKG1fdnRTZXNzaW9uLmdldCgpLCBrQ01UaW1lSW52YWxpZCk7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworCisgICAgICAgIGVycm9yID0gQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEo
bV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
KGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZl
clF1ZXVlTWFya0VuZE9mRGF0YSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgICAgICBt
X2lzRW5jb2RpbmcgPSBmYWxzZTsKKyAgICB9KTsKK30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OnZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQq
LCBPU1N0YXR1cyBzdGF0dXMsIFZURW5jb2RlSW5mb0ZsYWdzLCBDTVNhbXBsZUJ1ZmZlclJlZiBi
dWZmZXIpCit7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoc3RhdHVzLCBNZWRpYVN0cmVhbSwg
IlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sgc3Rh
dHVzIGlzICVkIiwgc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzICE9IG5vRXJyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgKmNvbXByZXNzb3IgPSBz
dGF0aWNfY2FzdDxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IqPihyZWZDb24pOworCisgICAg
YXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVFbnF1ZXVlKGNvbXByZXNzb3ItPm1fb3V0cHV0QnVm
ZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3Is
IE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVF
bnF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworfQorCitib29sIFZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCit7CisgICAgQ01WaWRlb0RpbWVuc2lvbnMgZGlt
ZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVz
Y3JpcHRpb24pOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJT
cGVjaWZpY2F0aW9ucyA9IG5pbDsKKyNlbHNlCisgICAgTlNEaWN0aW9uYXJ5ICplbmNvZGVyU3Bl
Y2lmaWNhdGlvbnMgPSBAeyhfX2JyaWRnZSBOU1N0cmluZyAqKWtWVFZpZGVvRW5jb2RlclNwZWNp
ZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRW5jb2RlcjpAWUVTfTsKKyNl
bmRpZgorCisgICAgVlRDb21wcmVzc2lvblNlc3Npb25SZWYgdnRTZXNzaW9uOworICAgIGF1dG8g
ZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBk
aW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmhlaWdodCwgbV9vdXRwdXRDb2RlY1R5cGUsIChf
X2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZW5jb2RlclNwZWNpZmljYXRpb25zLCBOVUxMLCBOVUxM
LCB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2ssIHRoaXMsICZ2dFNlc3Npb24pOworICAgIGlmIChl
cnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKyAgICBtX3Z0U2Vzc2lv
biA9IGFkb3B0Q0YodnRTZXNzaW9uKTsKKworICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVy
dHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUs
IGtDRkJvb2xlYW5UcnVlKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFT
dHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkg
a1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBr
VlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgKF9f
YnJpZGdlIENGVHlwZVJlZilAKG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uKSk7CisgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENvbXByZXNzaW9uUHJvcGVydHlL
ZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
ICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENv
bXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0ZWRGcmFtZVJhdGUsIChfX2JyaWRnZSBDRlR5cGVS
ZWYpQChtX2V4cGVjdGVkRnJhbWVSYXRlKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJy
b3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNl
dFByb3BlcnR5IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0ZWRGcmFtZVJhdGUgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICAvLyBGSVhNRTogU2V0IHZpZGVvIGNvbXByZXNz
aW9uIHJhdGUuCisgICAgZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29k
ZUZyYW1lcyhtX3Z0U2Vzc2lvbi5nZXQoKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJy
b3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Np
b25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
CisgICAgcmV0dXJuIFlFUzsKK30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OnByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGlm
ICghbV92dFNlc3Npb24pIHsKKyAgICAgICAgaWYgKCFpbml0Q29tcHJlc3Npb25TZXNzaW9uKENN
U2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24oYnVmZmVyKSkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IENNU2FtcGxlQnVmZmVyR2V0
SW1hZ2VCdWZmZXIoYnVmZmVyKTsKKyAgICBhdXRvIHByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENN
U2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlcik7CisgICAgYXV0byBk
dXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsKKyAgICBhdXRvIGVy
cm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZShtX3Z0U2Vzc2lvbi5nZXQoKSwg
aW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZHVyYXRpb24sIE5VTEwsIHRoaXMs
IE5VTEwpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1l
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAg
ICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKCFt
X2lzRW5jb2RpbmcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcHJvY2Vzc1NhbXBs
ZUJ1ZmZlcihidWZmZXIpOworICAgIH0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpCit7CisgICAgcmV0
dXJuIChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZUdl
dEhlYWQobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKK30KKworUmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1w
bGVCdWZmZXIoKQoreworICAgIHJldHVybiBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29u
c3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9vdXRwdXRCdWZm
ZXJRdWV1ZS5nZXQoKSkpKSk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgyZWNkYzVlNWU1ZmVj
NmNjYTIxYjJhMTYxNjEwYmQwNzc2ZWJiOGQuLjU5ZGM3ZWE0OGVmMzY5ZmU3Mzg3Yjg5NDVjYTFi
YTA5ZmJmOWFmOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMS0yOSAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdy
aXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWw6
CisgICAgICAgIFJlbW92ZSB3ZWIgYXVkaW8gZ2VuZXJhdGlvbiBzaW5jZSB0aGVyZSBzZWVtcyB0
byBiZSBzb21lIHVuc3RhYmlsaXR5IGluIHdlYiBhdWRpbyAtPiBzdHJlYW0gLT4gbWVkaWEgcmVj
b3JkZXIuCisgICAgICAgIHdoaWNoIHNob3VsZCBiZSBmaXhlZCBhcyBmb2xsb3ctdXAgc3BlY2lm
aWMgcGF0Y2hlcy4KKwogMjAyMC0wMS0yOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSRUdSRVNTSU9OOiBbTWFjIHdrMV0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uLW1hcmt1cC9zY3JpcHRzL3VuZGVyb3Zlci1w
YXJhbWV0ZXJzLTMuaHRtbCBpcyBhIGZsYWtleSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8t
ZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVw
cm9jZXNzLmh0bWwKaW5kZXggMzMzMDZkZTc5NDdiYmI5MjU3Mzk0YzNiYTE5NjIwMWIwNTg0Nzg4
Yi4uODgwMTQ4NjU3ZTI1ZGRlMzNjYjEwOTM0NmQ2Y2JlYWFiN2Y5Y2VmYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlv
LXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZh
aWxhYmxlLWdwdXByb2Nlc3MuaHRtbApAQCAtNTYsMTcgKzU2LDcgQEAKICAgICB9CiAKICAgICBh
c3luY190ZXN0KHQgPT4gewotICAgICAgICBjb25zdCBhYyA9IG5ldyBBdWRpb0NvbnRleHQoKTsK
LSAgICAgICAgY29uc3Qgb3NjID0gYWMuY3JlYXRlT3NjaWxsYXRvcigpOwotICAgICAgICBjb25z
dCBkZXN0ID0gYWMuY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOwotICAgICAgICBjb25z
dCBhdWRpbyA9IGRlc3Quc3RyZWFtOwotICAgICAgICBvc2MuY29ubmVjdChkZXN0KTsKLQogICAg
ICAgICBjb25zdCB2aWRlbyA9IGNyZWF0ZVZpZGVvU3RyZWFtKCk7Ci0gICAgICAgIGFzc2VydF9l
cXVhbHModmlkZW8uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgsIDAsICJ2aWRlbyBtZWRpYXN0cmVh
bSBzdGFydHMgd2l0aCBubyBhdWRpbyB0cmFjayIpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGF1
ZGlvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAxLCAiYXVkaW8gbWVkaWFzdHJlYW0gc3RhcnRz
IHdpdGggb25lIGF1ZGlvIHRyYWNrIik7Ci0gICAgICAgIHZpZGVvLmFkZFRyYWNrKGF1ZGlvLmdl
dEF1ZGlvVHJhY2tzKClbMF0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHZpZGVvLmdldEF1ZGlv
VHJhY2tzKCkubGVuZ3RoLCAxLCAidmlkZW8gbWVkaWFzdHJlYW0gc3RhcnRzIHdpdGggb25lIGF1
ZGlvIHRyYWNrIik7CiAgICAgICAgIGNvbnN0IHJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIo
dmlkZW8pOwogICAgICAgICBsZXQgbW9kZSA9IDA7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389501</attachid>
            <date>2020-02-03 05:32:39 -0800</date>
            <delta_ts>2020-02-03 09:38:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206582-20200203143237.patch</filename>
            <type>text/plain</type>
            <size>138276</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc5ZGI5ZWQ2YzIwNGVkNWYxNTEzOWI3
N2FiZTI3ZDEyZWY0Y2YyODQuLmY5NDA2N2FhOTgzMTQxMWJkYjkzZTcwMTg2NjJlZDJkMTI0NTYw
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDItMDMgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTAxLTMxICBE
b24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBB
ZGQgX1BSSVZBVEVfTElCUkFSSUVTIHRvIGZyYW1ld29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI5NzY4Mjc1
YjEzZGU5OGMyMTdhOTA3YzQ5ZDU0M2FkOTg1NjkwZTAuLjQ3OWM5YmNiZGI0MjFjNmU4ZDE3OWRh
NzM5YWRiM2Q1MjgyYjI0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAyMC0wMi0w
MyAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBV
c2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQVZBc3NldFdyaXRlckRl
bGVnYXRlIGFsbG93cyB0byBncmFiIHJlY29yZGVkIGRhdGEgd2hlbmV2ZXIgd2FudGVkLgorICAg
ICAgICBUaGlzIGRlbGVnYXRlIHJlcXVpcmVzIHBhc3NpbmcgY29tcHJlc3NlZCBzYW1wbGVzIHRv
IEFWQXNzZXRXcml0ZXIuCisgICAgICAgIEltcGxlbWVudCB2aWRlbyBlbmNvZGluZyBhbmQgYXVk
aW8gZW5jb2RpbmcgaW4gZGVkaWNhdGVkIGNsYXNzZXMgYW5kIHVzZSB0aGVzZSBjbGFzc2VzIGJl
Zm9yZSBhZGRpbmcgYnVmZmVycyB0byBBVkFzc2V0V3JpdGVyLgorICAgICAgICBTaW5jZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgaXMgQXBwbGUgU0RLIG9ubHksIGtlZXAgdGhlIGV4aXN0aW5nIGZp
bGUgYmFzZWQgaW1wbGVtZW50YXRpb24gYXMgYSBmYWxsYmFjay4KKworICAgICAgICBJbnN0YW50
aWF0ZSByZWFsIHdyaXRlciBvbmx5IGZvciBwbGF0Zm9ybXMgc3VwcG9ydGluZyBBVkFzc2V0V3Jp
dGVyRGVsZWdhdGUuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29y
ZGVyUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6fkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjphdWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9j
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdEF1
ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlv
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldpdGhO
dW1QYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZSk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0
cHV0UGFja2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9T
YW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjphcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBs
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OnZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcik6CisKIDIwMjAtMDItMDMgIEpv
bmF0aGFuIEtpbmdzdG9uICA8am9uYXRoYW5Aam9vcGVkLmNvLnVrPgogCiAgICAgICAgIENyYXNo
IGluIFdlYktpdEFjY2Vzc2libGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGU5N2UyOGMzMDc2M2Q0
ZWEzNmQzYWI2NzY3YTkyZDIxMzc4ZmJmZDQuLjI4NmI4Y2FkYjE2NjY5OTk3NzM2OGQxMDAxNmY1
MjFmNzA1ZjBkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAy
LTAzICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2Fd
IFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBZGQgc29mdCBsaW5r
IG1hY3JvcyBmb3IgVmlkZW9Ub29sYm94IGFuZCBBdWRpb1Rvb2xib3guCisKKyAgICAgICAgKiBQ
QUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvY2YvQXVkaW9Ub29s
Ym94U29mdExpbmsuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwYWwvY2YvQXVkaW9Ub29sYm94U29m
dExpbmsuaDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcDoK
KyAgICAgICAgKiBwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvY2Yv
VmlkZW9Ub29sYm94U29mdExpbmsuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwYWwvY2YvVmlkZW9U
b29sYm94U29mdExpbmsuaDogQWRkZWQuCisKIDIwMjAtMDEtMzEgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNwZWNpZnlp
bmcgYmFja2dyb3VuZCBjb2xvcnMgd2hlbiBzZXR0aW5nIG1hcmtlZCB0ZXh0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDQwNmIzMWRmMDdmMjMyZGIzZmViMDg3ZTNhM2UxOTUxZjMwZGNjMGYuLmFmMjU1MDc5MGYyNTBi
YjRjMDYxOGEwZTcxNDE4MTIyZTczYzk2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjAtMDItMDMgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtD
b2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUmVjb3JkZXI6OmNyZWF0ZSk6CisgICAgICAgIFVzZSBuZXcgY29uc3RydWN0b3Iu
CisKIDIwMjAtMDItMDEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+
CiAKICAgICAgICAgU2lsZW5jZSBjb21waWxlciB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApp
bmRleCAxNzViNmY1ZWE4ZWRjN2FkMWZkMmMxZjJlN2Y4OGYwZWU3YjI2ZjY4Li4wYzFhZDU3NWNh
ZTc1MTUxNDg3OGIwYTU0NDUxMzNhYzhiYTk5ZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAt
NTY2LDYgKzU2NiwxMCBAQAogI2RlZmluZSBIQVZFX09TX1NJR05QT1NUIDEKICNlbmRpZgogCisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE1MDApIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCisjZGVmaW5lIEhBVkVfQVZBU1NFVFdSSVRF
UkRFTEVHQVRFIDEKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRG
T1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX1NZU1RFTV9G
T05UX1NUWUxFX1RJVExFXzAgMQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxFX1RJVExF
XzQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCBmY2IwOTdlZTc1OWZmNWRmYjc2
NDk4ZDUwOTBlNGNjY2MwYzlkNWE2Li5mNTRkZjcxYTRmNDNiM2U2ZjlkNDhiYzFjZDc0NDM3Njg3
MWU5YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzQsNyArMzQsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZh
dGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoY29u
c3QgTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCiB7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCiAgICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRl
KHN0cmVhbSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOworICAgIHJldHVybiBu
dWxscHRyOworI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Q
QUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNDE5YWM5OGI0ZDE5MmM5ZjM2MWRiMTk3NzNm
MmI2ZmI4ZTBjOWNhLi4zZjgxNDZhZDE1NWFmY2MwODU4ZDY4YjNkMjc0ZTM5MmUwZmY0N2U4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMTUsNiArMTE1LDEwIEBACiAJCTJFMTM0MkNDMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtp
dFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRTEzNDJDQTIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5oICovOyB9OwogCQky
RTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNCMjE1QUExMEEwMDcxOTlE
MiAvKiBVSUtpdFNvZnRMaW5rLm1tICovOyB9OwogCQkzMTMwOEIxNDIwQTIxNzA1MDAzRkI5Mjkg
LyogU3lzdGVtUHJldmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEzMDhCMTMyMEEyMTcwNTAwM0ZCOTI5IC8qIFN5c3RlbVByZXZpZXdTUEku
aCAqLzsgfTsKKwkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRM
aW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi87IH07
CisJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTIyM0RB
RTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi87IH07CisJCTQxNkU5OTU3
MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1NTIzREFFRkY3MDBFODcx
Q0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovOyB9OworCQk0MTZFOTk1ODIzREFFRkY4
MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRl
b1Rvb2xib3hTb2Z0TGluay5oICovOyB9OwogCQk0NDI5NTZDRDIxOEE3MkRGMDA4MERCNTQgLyog
UmV2ZWFsU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2ZWFsU1BJLmggKi87IH07CiAJCTQ0NTBG
QzlGMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlEMjFGNUY2MDIwMDRERkE1
NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLzsgfTsKIAkJNDQ1MEZDQTAyMUY1RjYwMjAwNERG
QTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29m
dExpbmsuaCAqLzsgfTsKQEAgLTI5MSw2ICsyOTUsMTAgQEAKIAkJMkUxMzQyQ0IyMTVBQTEwQTAw
NzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBVSUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTMwOEIxMzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTeXN0ZW1QcmV2aWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3MTE5QTc4MjBDQ0I1RkYwMDJDNkRDOSAvKiBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViS2l0VGFyZ2V0Q29uZGl0aW9uYWxzLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyog
QXVkaW9Ub29sYm94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNCIC8q
IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5rLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Mjk1NkNDMjE4QTcyREUwMDgwREI1NCAv
KiBSZXZlYWxTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV2ZWFsU1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlEMjFGNUY2MDIwMDRERkE1
NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFF1aWNrTG9va1NvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tMb29rU29mdExpbmsuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNCw4ICs1MzIsMTIgQEAKIAkJMENGOTlDQTUxRjcz
ODQxQzAwN0VFNzkzIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExp
bmsuY3BwICovLAorCQkJCTQxNkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hT
b2Z0TGluay5oICovLAogCQkJCTBDRjk5Q0E2MUY3Mzg0MzYwMDdFRTc5MyAvKiBDb3JlTWVkaWFT
b2Z0TGluay5jcHAgKi8sCiAJCQkJMENGOTlDQTcxRjczODQzNzAwN0VFNzkzIC8qIENvcmVNZWRp
YVNvZnRMaW5rLmggKi8sCisJCQkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9v
bGJveFNvZnRMaW5rLmNwcCAqLywKKwkJCQk0MTZFOTk1NjIzREFFRkY3MDBFODcxQ0IgLyogVmlk
ZW9Ub29sYm94U29mdExpbmsuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtNzE1LDYgKzcyNyw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk1
N0ZEMzE4QjIyQjM1OTg5MDA4RDBFOEIgLyogQXBwU1NPU29mdExpbmsuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3NkNBOUQ2MjJCODU0QUIwMDMwMTQzQyAvKiBBcHBTU09TUEkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwMkU5M0MyMDU2RkFBNzAwQTEzNzk3IC8qIEF1ZGlv
VG9vbGJveFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTEwNzgyMkI0NTZGNTAwRjQxMEM4
IC8qIEF1dGhLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3N0U4N0IyMjI2QTQ2MDMwMEEy
QUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzgsNiAr
ODUxLDcgQEAKIAkJCQkyRTEzNDJDQzIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MjIxRjQzQTRDNzAwMkVBQzAyIC8qIFVJS2l0U1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE0NzFGM0JFQjQ5MDBEQkMzMTcgLyogVVJMRm9y
bWF0dGluZ1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTk5NTgyM0RBRUZGODAwRTg3MUNC
IC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1OTFG
M0JFQjQ5MDBEQkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTA4MjZGOTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKQEAgLTkzMCw2ICs5NDQsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThBMjJCMzU5M0UwMDhEMEU4QiAvKiBBcHBT
U09Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNkU5OTUzMjNEQUU2QkUwMEU4NzFD
QiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzdFODdC
MTIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsubW0gaW4gU291cmNlcyAq
LywKIAkJCQkwQzVGRkYwRjFGNzhEOURBMDA5RUZGMUEgLyogQ2xvY2tDTS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBDRjk5Q0E4MUY3Mzg0MzcwMDdFRTc5MyAvKiBDb3JlTWVkaWFTb2Z0TGluay5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTk1Niw2ICs5NzEsNyBAQAogCQkJCUEzQUI2RTU3MUYzRDFE
REIwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkUxMzQyQ0QyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExp
bmsubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTZFOTk1NzIzREFFRkY4MDBFODcxQ0IgLyogVmlk
ZW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwODI2RkExRjU3NjI5
MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjZjU1MDU2
YWNkYTZmNTY1M2FkYzdlMTdlYzAyYTJkODI2ZTQ0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcApAQCAtMCwwICsx
LDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBVkZP
VU5EQVRJT04pCisKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KKyNp
bmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQuaD4KKworI2luY2x1ZGUgPHd0Zi9Tb2Z0
TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rv
b2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94
LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVydHlJ
RCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGluU3Bl
Y2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRh
KSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9wZXJ0
eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0
ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9u
Rm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RShQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSwgT1NTdGF0dXMs
IChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3Bl
cnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5Qcm9wZXJ0eURhdGFTaXplLCBjb25zdCB2b2lk
KiBpblByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGluUHJv
cGVydHlEYXRhU2l6ZSwgaW5Qcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHksIE9TU3Rh
dHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQ
cm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQq
IG91dFByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlvUHJv
cGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKworI2VuZGlmIC8vIFVTRShBVkZPVU5E
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJv
eFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRM
aW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDczMTE4NzE3NGFjMTU1NDQzNzFkZWUwM2IxNDMyZTNlNjU2MzJl
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29s
Ym94U29mdExpbmsuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5o
PgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gpCisK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0Nv
bnZlcnRlckdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9D
b252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiog
aW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZl
cnRlciwgaW5Qcm9wZXJ0eUlELCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkp
CisjZGVmaW5lIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94
X0F1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NTdGF0dXMsIChjb25zdCBB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0LCBjb25zdCBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQsIEF1ZGlvQ29udmVydGVy
UmVmKiBvdXRBdWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwgaW5EZXN0aW5hdGlvbkZv
cm1hdCwgb3V0QXVkaW9Db252ZXJ0ZXIpKQorI2RlZmluZSBBdWRpb0NvbnZlcnRlck5ldyBzb2Z0
TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJOZXcKK1NPRlRfTElOS19GVU5DVElPTl9G
T1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5LCBP
U1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVy
dGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblByb3BlcnR5RGF0YVNpemUsIGNv
bnN0IHZvaWQqIGluUHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJ
RCwgaW5Qcm9wZXJ0eURhdGFTaXplLCBpblByb3BlcnR5RGF0YSkpCisjZGVmaW5lIEF1ZGlvQ29u
dmVydGVyU2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29udmVydGVyU2V0
UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94
LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVydHlJ
RCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGluU3Bl
Y2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRh
KSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9wZXJ0
eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorI2RlZmluZSBBdWRpb0Zvcm1hdEdldFByb3Bl
cnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0Zvcm1hdEdldFByb3BlcnR5CisKKworI2Vu
ZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuY3BwCmluZGV4IDJiODIzMTM2NWNiOWFhZjkzNTk3ZjE4N2ZhMjJj
MTQ5YmU0MmZiM2EuLmRjOGFiNDFjYmM3OGJhMTljZWNkZGE3ZmNmYTcwZDkzNTA5M2MyM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCkBA
IC00Niw2ICs0Niw3IEBAIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIENvcmVN
ZWRpYSkKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENN
QmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYgdGhl
U291cmNlQnVmZmVyLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgdm9p
ZCogZGVzdGluYXRpb24pLCAodGhlU291cmNlQnVmZmVyLCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5n
dGgsIGRlc3RpbmF0aW9uKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aCwgc2l6ZV90LCAoQ01CbG9ja0J1ZmZl
clJlZiB0aGVCdWZmZXIpLCAodGhlQnVmZmVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcywgT1NTdGF0
dXMsIChjb25zdCB2b2lkKiBzb3VyY2VCeXRlcywgQ01CbG9ja0J1ZmZlclJlZiBkZXN0aW5hdGlv
bkJ1ZmZlciwgc2l6ZV90IG9mZnNldEludG9EZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5ndGgp
LCAoc291cmNlQnl0ZXMsIGRlc3RpbmF0aW9uQnVmZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRpb24s
IGRhdGFMZW5ndGgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVk
aWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRpY3Rpb25hcnlSZWYsIChD
TUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRUeXBlSUQsIENGVHlw
ZUlELCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciwgQ01CbG9ja0J1ZmZlclJlZiwgKENN
U2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCkBAIC0xMzYsNiArMTM3LDcgQEAgU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRC
dWZmZXJDb3VudCwgQ01JdGUKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGlt
ZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRFbmRQcmVzZW50YXRp
b25UaW1lU3RhbXAsIENNVGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVl
dWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVy
UXVldWVSZWYgcXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxi
YWNrLCB2b2lkKiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0
cmlnZ2VyQ29uZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1
ZXVlVHJpZ2dlclRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFj
aywgdHJpZ2dlclJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJp
Z2dlclRva2VuT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1l
ZGlhLCBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVl
UmVmIHF1ZXVlKSwgKHF1ZXVlKSkKIAogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5LCBDRlN0cmlu
Z1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01T
YW1wbGVBdHRhY2htZW50S2V5X05vdFN5bmMsIENGU3RyaW5nUmVmKQpAQCAtMTYzLDYgKzE2NSw5
IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlv
U2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tlCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVm
ZmVyTGlzdCwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDRkFsbG9jYXRvclJl
ZiBiYnVmU3RydWN0QWxsb2NhdG9yLCBDRkFsbG9jYXRvclJlZiBiYnVmTWVtb3J5QWxsb2NhdG9y
LCB1aW50MzJfdCBmbGFncywgY29uc3QgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0KSwgKHNi
dWYsIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIGJidWZNZW1vcnlBbGxvY2F0b3IsIGZsYWdzLCBidWZm
ZXJMaXN0KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBD
TVNhbXBsZUJ1ZmZlclNldERhdGFSZWFkeSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBz
YnVmKSwgKHNidWYpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVk
aWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRv
clJlZiBhbGxvY2F0b3IsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogYXNiZCwg
c2l6ZV90IGxheW91dFNpemUsIGNvbnN0IEF1ZGlvQ2hhbm5lbExheW91dCogbGF5b3V0LCBzaXpl
X3QgbWFnaWNDb29raWVTaXplLCBjb25zdCB2b2lkKiBtYWdpY0Nvb2tpZSwgQ0ZEaWN0aW9uYXJ5
UmVmIGV4dGVuc2lvbnMsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiogb3V0RGVzYyksIChh
bGxvY2F0b3IsIGFzYmQsIGxheW91dFNpemUsIGxheW91dCwgbWFnaWNDb29raWVTaXplLCBtYWdp
Y0Nvb2tpZSwgZXh0ZW5zaW9ucywgb3V0RGVzYykpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29r
aWUsIGNvbnN0IHZvaWQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MsIHNpemVf
dCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVj
b2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICosIChDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKKwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrLCBDTUNsb2NrUmVm
LCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVk
aWEsIENNQ2xvY2tHZXRUaW1lLCBDTVRpbWUsIChDTUNsb2NrUmVmIGNsb2NrKSwgKGNsb2NrKSkK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1
ZmZlckNhbGxGb3JFYWNoU2FtcGxlLCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYs
IE9TU3RhdHVzICgqIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBjYWxsYmFjaykoIENNU2Ft
cGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgQ01JdGVtQ291bnQgaW5kZXgsIHZvaWQgKnJlZmNv
biksIHZvaWQgKnJlZmNvbiksIChzYnVmLCBjYWxsYmFjaywgcmVmY29uKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRleCAyNjhkMTY3ZjI3ZDZk
M2FiYmZmNTkzNTI2N2ZjMjIyMzkxMDEwZTNkLi5hMGM3MzI5MjYyZTBiMDZjYmI2YzM2ZDgyODQy
ZjJmZDZmMWY4NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVN
ZWRpYVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5oCkBAIC00OSw2ICs0OSw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcywgT1NTdGF0CiAjZGVm
aW5lIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2Nr
QnVmZmVyQ29weURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBD
b3JlTWVkaWEsIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXplX3QsIChDTUJsb2NrQnVm
ZmVyUmVmIHRoZUJ1ZmZlciksICh0aGVCdWZmZXIpKQogI2RlZmluZSBDTUJsb2NrQnVmZmVyR2V0
RGF0YUxlbmd0aCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVm
ZmVyUmVwbGFjZURhdGFCeXRlcywgT1NTdGF0dXMsIChjb25zdCB2b2lkKiBzb3VyY2VCeXRlcywg
Q01CbG9ja0J1ZmZlclJlZiBkZXN0aW5hdGlvbkJ1ZmZlciwgc2l6ZV90IG9mZnNldEludG9EZXN0
aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5ndGgpLCAoc291cmNlQnl0ZXMsIGRlc3RpbmF0aW9uQnVm
ZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRpb24sIGRhdGFMZW5ndGgpKQorI2RlZmluZSBDTUJsb2Nr
QnVmZmVyUmVwbGFjZURhdGFCeXRlcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlclJl
cGxhY2VEYXRhQnl0ZXMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1l
ZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9uYXJ5UmVmLCAo
Q01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQogI2RlZmluZSBDTUZvcm1hdERl
c2NyaXB0aW9uR2V0RXh0ZW5zaW9ucyBzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3JtYXREZXNjcmlw
dGlvbkdldEV4dGVuc2lvbnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQsICh2b2lkKSwgKCkpCkBA
IC0yMjcsNiArMjI5LDggQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3Jl
TWVkaWEsIENNQnVmZmVyUXVldWVHZXRFbmRQcmVzZW50YXRpb25UaW0KICNkZWZpbmUgQ01CdWZm
ZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3JlTWVkaWFfQ01C
dWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcAogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldp
dGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUsIENN
QnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNrLCB2b2lkKiB0cmlnZ2Vy
UmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmlnZ2VyQ29uZGl0aW9uLCBD
TUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKiB0
cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywgdHJpZ2dlclJlZmNvbiwg
dHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dlclRva2VuT3V0KSkKICNk
ZWZpbmUgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQgc29m
dExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhy
ZXNob2xkCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01C
dWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1
ZSksIChxdWV1ZSkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YQogCiBTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05v
dERpc3BsYXksIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0Rv
Tm90RGlzcGxheSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNw
bGF5KCkKQEAgLTI1Niw2ICsyNjAsOSBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQ
QUwsIENvcmVNZWRpYSwga0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZAogI2RlZmlu
ZSBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkIGdldF9Db3JlTWVkaWFfa0NNVGlt
ZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25f
QnVmZmVyQ29uc3VtZWQsIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVCdWZmZXJDb25z
dW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1
ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkKCkKKworU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlv
bkdldE1hZ2ljQ29va2llLCBjb25zdCB2b2lkKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJl
ZiBkZXNjLCBzaXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCkpCisjZGVmaW5lIENNQXVk
aW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVh
bUJhc2ljRGVzY3JpcHRpb24sIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiAqLCAo
Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVmaW5lIENNQXVk
aW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24gc29mdExpbmtfQ29y
ZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24K
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVm
ZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIHN0cnVj
dHVyZUFsbG9jYXRvciwgdm9pZCogbWVtb3J5QmxvY2ssIHNpemVfdCBibG9ja0xlbmd0aCwgQ0ZB
bGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tCdWZmZXJDdXN0b21CbG9j
a1NvdXJjZSogY3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZmZXJSZWYqIGJs
b2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgbWVtb3J5QmxvY2ssIGJsb2NrTGVu
Z3RoLCBibG9ja0FsbG9jYXRvciwgY3VzdG9tQmxvY2tTb3VyY2UsIG9mZnNldFRvRGF0YSwgZGF0
YUxlbmd0aCwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSkKQEAgLTI2NCw2ICsyNzEsOCBAQCBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJH
ZXRBdWRpb0J1ZmZlckxpc3RXaQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVy
TGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1
ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXROdW1T
YW1wbGVzLCBDTUl0ZW1Db3VudCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCiAj
ZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01T
YW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQ
QUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJs
ZUZvcm1hdCwgY29uc3QgQXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCisjZGVmaW5lIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlv
bkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZm
ZXJGb3JSYW5nZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNU2FtcGxl
QnVmZmVyUmVmIHNidWYsIENGUmFuZ2Ugc2FtcGxlUmFuZ2UsIENNU2FtcGxlQnVmZmVyUmVmKiBz
QnVmT3V0KSwgKGFsbG9jYXRvciwgc2J1Ziwgc2FtcGxlUmFuZ2UsIHNCdWZPdXQpKQogI2RlZmlu
ZSBDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZSBzb2Z0TGlua19Db3JlTWVk
aWFfQ01TYW1wbGVCdWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2UKIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVNp
emVBcnJheSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDTUl0ZW1Db3VudCBz
aXplQXJyYXlFbnRyaWVzLCBzaXplX3QqIHNpemVBcnJheU91dCwgQ01JdGVtQ291bnQqIHNpemVB
cnJheUVudHJpZXNOZWVkZWRPdXQpLCAoc2J1Ziwgc2l6ZUFycmF5RW50cmllcywgc2l6ZUFycmF5
T3V0LCBzaXplQXJyYXlFbnRyaWVzTmVlZGVkT3V0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZlNjkzY2E5
ZTQxZmQ4NTk3YTgyYjdjNzk2NjAxYjhhNzBjYWE0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFWRk9V
TkRBVElPTikKKworI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25TZXNzaW9uLmg+
CisKKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94KQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUsIE9TU3Rh
dHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl
aWdodCwgQ01WaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUsIENGRGljdGlvbmFyeVJlZiBlbmNvZGVy
U3BlY2lmaWNhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRl
cywgQ0ZBbGxvY2F0b3JSZWYgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIFZUQ29tcHJlc3Npb25P
dXRwdXRDYWxsYmFjayBvdXRwdXRDYWxsYmFjaywgdm9pZCogb3V0cHV0Q2FsbGJhY2tSZWZDb24s
IFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmKiBjb21wcmVzc2lvblNlc3Npb25PdXQpLCAoYWxsb2Nh
dG9yLCB3aWR0aCwgaGVpZ2h0LCBjb2RlY1R5cGUsIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBzb3Vy
Y2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMsIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBvdXRwdXRD
YWxsYmFjaywgb3V0cHV0Q2FsbGJhY2tSZWZDb24sIGNvbXByZXNzaW9uU2Vzc2lvbk91dCkpCitT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVz
c2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lv
blJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCks
IChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vz
c2lvbkVuY29kZUZyYW1lLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Np
b24sIENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGltZSBwcmVzZW50YXRpb25UaW1l
U3RhbXAsIENNVGltZSBkdXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIGZyYW1lUHJvcGVydGllcywg
dm9pZCogc291cmNlRnJhbWVSZWZjb24sIFZURW5jb2RlSW5mb0ZsYWdzKiBpbmZvRmxhZ3NPdXQp
LCAoc2Vzc2lvbiwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZHVyYXRpb24s
IGZyYW1lUHJvcGVydGllcywgc291cmNlRnJhbWVSZWZjb24sIGluZm9GbGFnc091dCkpCitTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lv
blNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNl
c3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKworI2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJ
T04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNv
ZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5r
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjUwODM4YTNhZmRlZDJlZDdkNmY4ZTM0OGZmZGY2ZGQxMTUxYmM0ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94
U29mdExpbmsuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgor
CitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gpCisKK1NP
RlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNz
aW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVvQ29kZWNUeXBlIGNvZGVjVHlwZSwg
Q0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBDRkRpY3Rpb25hcnlSZWYgc291
cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRvclJlZiBjb21wcmVzc2VkRGF0YUFs
bG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNrIG91dHB1dENhbGxiYWNrLCB2b2lk
KiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lvblNlc3Npb25SZWYqIGNvbXByZXNz
aW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBoZWlnaHQsIGNvZGVjVHlwZSwgZW5j
b2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgY29tcHJlc3Nl
ZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRwdXRDYWxsYmFja1JlZkNvbiwgY29t
cHJlc3Npb25TZXNzaW9uT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUg
c29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNl
c3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBz
ZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCksIChzZXNz
aW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKKyNkZWZpbmUgVlRDb21w
cmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21w
cmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUsIE9T
U3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1ZmZlclJl
ZiBpbWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lIGR1cmF0
aW9uLCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lkKiBzb3VyY2VGcmFtZVJl
ZmNvbiwgVlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChzZXNzaW9uLCBpbWFnZUJ1
ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJhbWVQcm9wZXJ0aWVzLCBz
b3VyY2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNl
c3Npb25FbmNvZGVGcmFtZSBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Np
b25FbmNvZGVGcmFtZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rv
b2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzLCBPU1N0YXR1
cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikpCisjZGVmaW5l
IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzIHNvZnRMaW5rX1ZpZGVv
VG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcworCisjZW5k
aWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZjA0NDEyNDE4ZTZkYmIwZjBiM2IxN2E2ZDlh
OGNhNmJhODExNmI0Li4zNmVmNTgxOGYzMmIyZjg2YTU5YzcwYzhhNzdmZGM1YTYyNTVkNTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04MzMsMTcgKzgzMywxNyBAQAogCQkyREFDQjlFOTIzNzU1RDAwMDBCNEMxODUgLyogR3Jh
cGhpY3NDb250ZXh0SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwMDEyM0YxRkFEODdENjAwNTMxRDc2IC8qIEdyYXBoaWNzQ29udGV4dEltcGwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyREFG
MzQzRDFFQTdFMEYxMDAzODJDRDMgLyogQ29uc3RhbnRQcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjM0M0IxRUE3RTBGMTAwMzgy
Q0QzIC8qIENvbnN0YW50UHJvcGVydHlNYXAuaCAqLzsgfTsKIAkJMkRENUE3MjcxRUJFRTQ3RDAw
OUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ1QTcyNjFFQkVFNDdEMDA5QkE1OTcgLyogQ29tcG9z
aXRpb25VbmRlcmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQkyRERFMUNFMzFGNTc0QUU1MDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZWaWV3Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNFMDFG
NTc0QUQxMDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZWaWV3LmggKi87IH07Ci0JCTJEREUxQ0U0MUY1
NzRBRTkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDREUxRjU3NEFBQjAwRDFBMzY1IC8qIEpTVlJEaXNw
bGF5LmggKi87IH07Ci0JCTJEREUxQ0Y4MUY1NzRDMzkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUNh
cGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRERTFDRTYxRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmgg
Ki87IH07Ci0JCTJEREUxQ0ZBMUY1NzRDM0UwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNFODFG
NTc0QkZGMDBEMUEzNjUgLyogSlNWUkRpc3BsYXlFdmVudC5oICovOyB9OwotCQkyRERFMUNGQzFG
NTc0Q0VFMDBEMUEzNjUgLyogSlNWUkRpc3BsYXlFdmVudFJlYXNvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRUExRjU3NEJGRjAwRDFBMzY1
IC8qIEpTVlJEaXNwbGF5RXZlbnRSZWFzb24uaCAqLzsgfTsKLQkJMkRERTFDRkUxRjU3NENGMzAw
RDFBMzY1IC8qIEpTVlJFeWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEREUxQ0VDMUY1NzRCRkYwMEQxQTM2NSAvKiBKU1ZSRXllLmggKi87IH07Ci0J
CTJEREUxRDAwMUY1NzRDRjcwMEQxQTM2NSAvKiBKU1ZSRXllUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRUUxRjU3NEJGRjAw
RDFBMzY1IC8qIEpTVlJFeWVQYXJhbWV0ZXJzLmggKi87IH07Ci0JCTJEREUxRDAyMUY1NzREMDAw
MEQxQTM2NSAvKiBKU1ZSRnJhbWVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNGMDFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUkZyYW1lRGF0
YS5oICovOyB9OwotCQkyRERFMUQwNDFGNTc0RDA1MDBEMUEzNjUgLyogSlNWUkxheWVySW5pdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRjIx
RjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJMYXllckluaXQuaCAqLzsgfTsKLQkJMkRERTFEMDYxRjU3
NEQwQTAwRDFBMzY1IC8qIEpTVlJQb3NlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNGNDFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUlBvc2UuaCAq
LzsgfTsKLQkJMkRERTFEMDgxRjU3NEQwRTAwRDFBMzY1IC8qIEpTVlJTdGFnZVBhcmFtZXRlcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUxQ0Y2
MUY1NzRCRkYwMEQxQTM2NSAvKiBKU1ZSU3RhZ2VQYXJhbWV0ZXJzLmggKi87IH07CisJCTJEREUx
Q0UzMUY1NzRBRTUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IH07CisJCTJEREUxQ0U0MUY1NzRBRTkwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0Y4MUY1NzRDMzkwMEQx
QTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJ
CTJEREUxQ0ZBMUY1NzRDM0UwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0ZDMUY1NzRDRUUwMEQxQTM2NSAvKiAobnVsbCkg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0ZFMUY1NzRD
RjMwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IH07CisJCTJEREUxRDAwMUY1NzRDRjcwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDAyMUY1NzREMDAwMEQxQTM2NSAvKiAo
bnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDA0
MUY1NzREMDUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IH07CisJCTJEREUxRDA2MUY1NzREMEEwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDA4MUY1NzREMEUwMEQxQTM2
NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CiAJCTJE
RTcwMDIzMTkyRkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTcwMDIyMTkyRkU4
MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCAqLzsgfTsKIAkJMkRGNTEy
Q0UxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGNTEyQ0MxRDg3M0U0
NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oICovOyB9OwogCQkyREZB
NDg4RjFEQjU0MUQwMDAzNjJCOTkgLyogQnVmZmVyU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREZBNDg4RTFEQjU0MUMyMDAzNjJCOTkgLyog
QnVmZmVyU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEwOTcsNiArMTA5Nyw3IEBACiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAv
KiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyogV3Jp
dGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFk
YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWls
dGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMx
MTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxNkY3OTkwMjNENzUwQ0YwMDgyOUZD
MSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9OwogCQk0MTcyNTNBQjEzNTRCQkJDMDAz
NjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNv
bnRyb2xFbGVtZW50cy5oICovOyB9OwogCQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyogTGli
V2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTc2MTJBQjFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5jcHAgKi87IH07CiAJCTQxNzYxMkIwMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJS
VENNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2lu
dC5oICovOyB9OwpAQCAtMTEzNyw2ICsxMTM4LDcgQEAKIAkJNDFCODc3NjIyM0RFMTA0NTAwMzYz
OEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI4Nzc2MDIzREUxMDQyMDAzNjM4QjggLyog
UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUJGMjA0OTIyQkE3QkU4MDAwNEY4MTIgLyogUmVh
bHRpbWVWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUM3
NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBT
Y3JpcHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQxQ0Q2RjhDMjNENkU4MjEwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1t
ICovOyB9OwogCQk0MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVD
NzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxRDEyOUNFMUYzRDBFRjYwMEQxNUU0NyAvKiBXb3JrZXJH
bG9iYWxTY29wZUNhY2hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQjI3OEQxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2Fj
aGVzLmggKi87IH07CiAJCTQxRDEyOUQwMUYzRDBGMDUwMEQxNUU0NyAvKiBDYWNoZVF1ZXJ5T3B0
aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFG
QjI3OUIxRjM0Q0VGMDAwNzk1NDg3IC8qIENhY2hlUXVlcnlPcHRpb25zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI1ODAsNyArMjU4Miw2IEBA
CiAJCThBRjRFNTVDMTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1NTkxMURDNUE2
MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmggKi87IH07CiAJCThCRDM3QTY4MjAxQkIz
OUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNodW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkQzN0E2NzIwMUJCMzlDMDAxMTczNEEgLyogUmVh
ZGFibGVTdHJlYW1DaHVuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCThFNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhFNEM5NkQ5
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCAqLzsgfTsKLQkJOEU2MjBFODEy
MEVFNjAyNDAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RTYyMEU4MDIwRUU1RkZDMDA3QkM1
RUYgLyogVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4RUM2Qzk2MzIwMUEyNTE2MDBGQkZBNTMgLyogR2Fw
TGVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
RUM2Qzk2MTIwMUEyNTAxMDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEY2NzU2MUIxMjg4QjE3QjAwNDdBQ0Ez
IC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTAwMTc3NDExMkUwMzQ3
ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMDE3NzNFMTJFMDM0NzgwMDY0ODQ2MiAvKiBP
RVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi87IH07CkBAIC03MzYxLDYgKzczNjIsOCBAQAogCQk0
MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBG
ZXRjaElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAyRkE5
NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZGNzk4
RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcwQTJFOTFEOEMwQ0Mw
MDAzMTg0NTIgLyogSlNET01XcmFwcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRE9NV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNzI1M0E4MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E5MTM1NEJCQkMwMDM2MEYy
QSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzQ2OCw2ICs3NDcxLDggQEAKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxQzdFMTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFt
VHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4OTIzRDZFODFD
MDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUNGOEJFNTFENDYyMjIw
MDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMDU0NCw4ICsxMDU0OSw2IEBACiAJCThFMzNDRDkzMjAxQTI5QzEwMEUzOTA5
MyAvKiBHYXBMZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R2FwTGVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDgxQUQ0
NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4RTRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmV0Y2hSZXNwb25zZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4RTYyMEU3RTIwRUU1RkUyMDA3QkM1RUYgLyogVlJQ
bGF0Zm9ybURpc3BsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VlJQbGF0Zm9ybURpc3BsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4RTYy
MEU4MDIwRUU1RkZDMDA3QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEVDNkM5NjEyMDFBMjUwMTAwRkJGQTUzIC8qIEdh
cExlbmd0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHYXBMZW5ndGguaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0EzIC8q
IEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRRdWV1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RjkzNEQ4MzExODlGMUVFMDA1MDhE
NUQgLyogSlNFeGVjU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNF
eGVjU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODkyLDggKzE4ODk1
LDEyIEBACiAJCTREM0MwNUQ0MjFBRjQ4MDkwMEYyODkwQSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDE2Rjc5OEQyM0Q3NTBDQTAwODI5
RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovLAorCQkJCTQxNkY3OThGMjNE
NzUwQ0IwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8sCiAJCQkJ
NEQ3M0Y5NEMyMThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaCAqLywKIAkJCQk0RDczRjk0RDIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbSAqLywKKwkJCQk0MUNENkY4OTIzRDZFODFDMDBCMTY0MjEgLyog
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8sCisJCQkJNDFDRDZGOEIyM0Q2RTgxRDAw
QjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLywKIAkJCSk7CiAJCQlw
YXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjU4MjMsNyArMjU4
MzAsNiBAQAogCQkJCTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3b3JrICovLAogCQkJ
CTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAwNkMx
RDAwRUY2RjI2IC8qIHRleHQgKi8sCi0JCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8qIHZy
ICovLAogCQkJCURGREI5MTJDRjhFODhBNkRBMUFEMjY0RiAvKiBBYm9ydGFibGVUYXNrUXVldWUu
aCAqLywKIAkJCQk0OUFFMkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5j
cHAgKi8sCiAJCQkJNDlBRTJEOTUxMzRFRTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUu
aCAqLywKQEAgLTMxMTY1LDE3ICszMTE3MSwxNyBAQAogCQkJCUJFOEVGMDREMTcxQzkwMTQwMDlC
NDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkU3OTE0OTFG
OTdFMDFBMDAxOTk3MzkgLyogSlNWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTc3NzlCRDk2MUYzMjI0NkEwMEMyMTQxNyAvKiBKU1Zpc3VhbFZpZXdwb3J0LmggaW4gSGVhZGVy
cyAqLywKLQkJCQkyRERFMUNFNDFGNTc0QUU5MDBEMUEzNjUgLyogSlNWUkRpc3BsYXkuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTJEREUxQ0Y4MUY1NzRDMzkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUNh
cGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFDRkExRjU3NEMzRTAwRDFBMzY1
IC8qIEpTVlJEaXNwbGF5RXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUxQ0ZDMUY1NzRD
RUUwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUV2ZW50UmVhc29uLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkyRERFMUNGRTFGNTc0Q0YzMDBEMUEzNjUgLyogSlNWUkV5ZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMkRERTFEMDAxRjU3NENGNzAwRDFBMzY1IC8qIEpTVlJFeWVQYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkyRERFMUNFMzFGNTc0QUU1MDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZWaWV3
LmggaW4gSGVhZGVycyAqLywKLQkJCQkyRERFMUQwMjFGNTc0RDAwMDBEMUEzNjUgLyogSlNWUkZy
YW1lRGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFEMDQxRjU3NEQwNTAwRDFBMzY1IC8q
IEpTVlJMYXllckluaXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUxRDA2MUY1NzREMEEwMEQx
QTM2NSAvKiBKU1ZSUG9zZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFEMDgxRjU3NEQwRTAw
RDFBMzY1IC8qIEpTVlJTdGFnZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEREUx
Q0U0MUY1NzRBRTkwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUNG
ODFGNTc0QzM5MDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFDRkEx
RjU3NEMzRTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxQ0ZDMUY1
NzRDRUUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUNGRTFGNTc0
Q0YzMDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFEMDAxRjU3NENG
NzAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxQ0UzMUY1NzRBRTUw
MEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUQwMjFGNTc0RDAwMDBE
MUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFEMDQxRjU3NEQwNTAwRDFB
MzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxRDA2MUY1NzREMEEwMEQxQTM2
NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUQwODFGNTc0RDBFMDBEMUEzNjUg
LyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJQkUyMDUwODIxOEE0NjBDMzAwODA2NDdFIC8q
IEpTVlRUQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUY5QjIwRDE4Q0ZCNUY0MDBDNjRCRUYg
LyogSlNWVFRSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRjlCMjBGMThDRkI1RjQwMEM2
NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1NDIsNiArMzM1
NDgsNyBAQAogCQkJCUE5Nzg3Q0I0MUY1RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5TWVk
aWFPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEy
IC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1NTk2OTEx
NDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0MTZGNzk5MDIzRDc1MENGMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1
ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEOEE3QkJCMTk3NzM1RkUwMENC
RDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzQyNzQsNiArMzQyODEsNyBAQAogCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2MSAv
KiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNG
QkM0QUYzMTg5ODgxNTYwMDQ2RUUzOCAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBWaWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDFDRDZGOEMy
M0Q2RTgyMTAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNr
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2NzE3RkEwQUM2MDBERERDRDAgLyog
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJT
ZXNzaW9uVlQubW0KaW5kZXggZmE4ZWUwYjEwMGNmMjE0MDg1NjUwNTE2YmM0ZTIzYTFkYjE1YmYz
NS4uZmMyOTA4Y2ViZTNkNzRlNWYxNTEwNGE1ZDc4MjMwY2JmOWVkNTMzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5z
ZmVyU2Vzc2lvblZULm1tCkBAIC05NSw2ICs5NSw3IEBAIGJvb2wgSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVDo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAoX19icmlkZ2UgTlNT
dHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXkgOiBAeyAvKmVtcHR5
IGRpY3Rpb25hcnkqLyB9LAogICAgIH07CiAKKwogICAgIE5TRGljdGlvbmFyeSogcGl4ZWxCdWZm
ZXJQb29sT3B0aW9ucyA9IEB7CiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVs
QnVmZmVyUG9vbE1pbmltdW1CdWZmZXJDb3VudEtleTogQCg2KQogICAgIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggNzNmMWQwYTE1MTlmMmMwM2I5MWQ2
OTUxMDUxMzVhNGYyMGQxZGE2NC4uZjFmNjgwNDUyMjkzNjVkOGZjM2IwNzk2NzJkMmMyMDMzZmJl
YTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAtMjYs
OSArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaCIKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRl
ICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiTWVk
aWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC02OCw3ICs2
OSwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6Y3JlYXRlKGF1ZGlvVHJhY2ssIHZpZGVvVHJhY2spOworCisgICAgaW50IHdpZHRoID0gMCwg
aGVpZ2h0ID0gMDsKKyAgICBpZiAodmlkZW9UcmFjaykgeworICAgICAgICBhdXRvJiBzZXR0aW5n
cyA9IHZpZGVvVHJhY2stPnNldHRpbmdzKCk7CisgICAgICAgIHdpZHRoID0gc2V0dGluZ3Mud2lk
dGgoKTsKKyAgICAgICAgaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7CisgICAgfQorICAgIGF1
dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSghIWF1ZGlvVHJh
Y2ssIHdpZHRoLCBoZWlnaHQpOwogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtMTE5LDQgKzEyNyw0IEBAIGNvbnN0IFN0cmluZyYgTWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsOjptaW1lVHlwZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGwuaAppbmRleCAwY2YwZGYzYzY0Y2M5NzEzZTMwNTliZTM2Y2FjYzlmYzdjY2Mw
YjM2Li4zNGUyYTk2Yzc5NDE4ZDRlODY2YzFhYzIxMDQwOThjYzkzOGY0NGI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTI0LDcgKzI0LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNv
cmRlclByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmgiCkBAIC01Niw0ICs1Niw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDdiZjgxZTFkNDU2
YzcwYzJkOTQ0ZjcwNDVhOGUxNmUwNTliY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8
Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1
ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZl
cnRlciogQXVkaW9Db252ZXJ0ZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcj4gY3JlYXRlKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrT2JqZWN0KTsKKyAgICB+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAg
ICB2b2lkIGZpbmlzaCgpOworICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVy
UmVmKTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAg
ICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsK
KworcHJpdmF0ZToKKyAgICBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKyAgICBib29s
IGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tP
YmplY3QpOworCisgICAgc3RhdGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0
RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1
ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKiwgdm9pZCopOworCisgICAgdm9pZCBwcm9jZXNz
U2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRBdWRpb0NvbnZl
cnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIEF1
ZGlvRm9ybWF0SUQpOworICAgIHNpemVfdCBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0
KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgVUludDMyLCBGbG9hdDMyKTsKKyAgICB2b2lk
IGF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBSZXRh
aW5QdHI8TlNOdW1iZXI+IGdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCk7CisgICAgQ01TYW1w
bGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMs
IEF1ZGlvQnVmZmVyTGlzdCk7CisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93
V2F0ZXJUaW1lKENNVGltZSk7CisgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRw
dXRQYWNrZXRzKFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVz
Y3JpcHRpb24qKik7CisKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRC
dWZmZXJRdWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9pbnB1dEJ1ZmZl
clF1ZXVlOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAg
IENNVGltZSBtX2xvd1dhdGVyVGltZTsKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07
CisKKyAgICBSZXRhaW5QdHI8QXVkaW9Db252ZXJ0ZXJSZWY+IG1fY29udmVydGVyOworICAgIEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX3NvdXJjZUZvcm1hdDsKKyAgICBBdWRpb1N0cmVh
bUJhc2ljRGVzY3JpcHRpb24gbV9kZXN0aW5hdGlvbkZvcm1hdDsKKyAgICBSZXRhaW5QdHI8Q01G
b3JtYXREZXNjcmlwdGlvblJlZj4gbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAg
IFJldGFpblB0cjxOU051bWJlcj4gbV9nZHJDb3VudE51bTsKKyAgICBVSW50MzIgbV9tYXhPdXRw
dXRQYWNrZXRTaXplOworICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBt
X2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zOworCisgICAgQ01UaW1lIG1fY3VycmVudE5h
dGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAgICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0UHJl
c2VudGF0aW9uVGltZVN0YW1wOworICAgIENNVGltZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb247
CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9zb3VyY2VCdWZmZXI7CisgICAgVmVjdG9yPGNoYXI+IG1f
ZGVzdGluYXRpb25CdWZmZXI7CisKKyAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9z
YW1wbGVCbG9ja0J1ZmZlcjsKKyAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7Cisg
ICAgc2l6ZV90IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXI7CisgICAgQXVkaW9G
b3JtYXRJRCBtX291dHB1dENvZGVjVHlwZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MzMzNzQ2YWRmYjAwM2Rj
NjYyMGEwMmQxMDZjOGQ0MGIxY2ZkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5tbQpAQCAtMCwwICsxLDQ5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvZGVjLmg+CisjaW5jbHVkZSA8QXVkaW9U
b29sYm94L0F1ZGlvQ29udmVydGVyLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9y
bWF0Lmg+CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgPHBh
bC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oPgorCisjZGVmaW5lIExPV19XQVRFUl9USU1FX0lO
X1NFQ09ORCAwLjEKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNr
IGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBhdXRvIGNvbXByZXNzb3Ig
PSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcgQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yKCkpOworICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6
ZShjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gY29tcHJlc3NvcjsKK30KKworQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVl
IHsgZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSB9CisgICAgLCBtX2xvd1dhdGVyVGltZSB7
IENNVGltZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQsIDEwMDApIH0K
KyAgICAsIG1fb3V0cHV0Q29kZWNUeXBlIHsga0F1ZGlvRm9ybWF0TVBFRzRBQUMgfQoreworfQor
CitBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IoKQoreworICAgIGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAgICAgIGRpc3BhdGNo
X3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKK30KKworYm9vbCBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBj
YWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgQ01CdWZmZXJRdWV1ZVJlZiBp
bnB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5z
b3J0ZWRTYW1wbGVCdWZmZXJzKCksICZpbnB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBD
TUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX2lucHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9pbnB1dEJ1ZmZl
clF1ZXVlID0gYWRvcHRDRihpbnB1dEJ1ZmZlclF1ZXVlKTsKKworICAgIENNQnVmZmVyUXVldWVS
ZWYgb3V0cHV0QnVmZmVyUXVldWU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVl
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NG
b3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBDTUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX291dHB1dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fb3V0
cHV0QnVmZmVyUXVldWUgPSBhZG9wdENGKG91dHB1dEJ1ZmZlclF1ZXVlKTsKKyAgICBDTUJ1ZmZl
clF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgY2FsbGJhY2ss
IGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hlbkRhdGFCZWNvbWVzUmVh
ZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKKworICAgIG1faXNFbmNvZGluZyA9IHRydWU7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5p
c2goKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAg
ICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKGtDTVRpbWVJbnZhbGlk
KTsKKyAgICAgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0
cHV0QnVmZmVyUXVldWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJv
ciwgTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1
ZU1hcmtFbmRPZkRhdGEgZmFpbGVkICVkIiwgZXJyb3IpOworICAgICAgICBtX2lzRW5jb2Rpbmcg
PSBmYWxzZTsKKyAgICB9KTsKK30KKworYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVz
Y3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24sIEF1ZGlvRm9ybWF0SUQgb3V0cHV0Rm9ybWF0
SUQpCit7CisgICAgY29uc3QgYXV0byAqYXVkaW9Gb3JtYXRMaXN0SXRlbSA9IENNQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQoZm9ybWF0RGVzY3JpcHRpb24p
OworICAgIG1fc291cmNlRm9ybWF0ID0gYXVkaW9Gb3JtYXRMaXN0SXRlbS0+bUFTQkQ7CisKKyAg
ICBtZW1zZXQoJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIHNpemVvZihBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24pKTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9IG91dHB1
dEZvcm1hdElEOworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPSBtX3NvdXJj
ZUZvcm1hdC5tU2FtcGxlUmF0ZTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1DaGFubmVsc1Bl
ckZyYW1lID0gbV9zb3VyY2VGb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisKKyAgICBVSW50MzIg
c2l6ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9
IEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkoa0F1ZGlvRm9ybWF0UHJvcGVydHlfRm9ybWF0SW5mbywg
MCwgTlVMTCwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRp
b0Zvcm1hdEdldFByb3BlcnR5IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgY29udmVydGVyOworICAg
IGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJOZXcoJm1fc291cmNlRm9ybWF0LCAmbV9k
ZXN0aW5hdGlvbkZvcm1hdCwgJmNvbnZlcnRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0
ZXJOZXcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgbV9jb252ZXJ0ZXIgPSBhZG9wdENGKGNvbnZlcnRlcik7CisKKyAgICBzaXplX3Qg
Y29va2llU2l6ZSA9IDA7CisgICAgY29uc3Qgdm9pZCAqY29va2llID0gQ01BdWRpb0Zvcm1hdERl
c2NyaXB0aW9uR2V0TWFnaWNDb29raWUoZm9ybWF0RGVzY3JpcHRpb24sICZjb29raWVTaXplKTsK
KyAgICBpZiAoY29va2llU2l6ZSkgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29u
dmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckRlY29t
cHJlc3Npb25NYWdpY0Nvb2tpZSwgKFVJbnQzMiljb29raWVTaXplLCBjb29raWUpKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tp
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9zb3VyY2VGb3JtYXQpOworICAg
IGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5n
ZXQoKSwga0F1ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXpl
LCAmbV9zb3VyY2VGb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3Ry
ZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVy
Q3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fc291cmNlRm9ybWF0Lm1C
eXRlc1BlclBhY2tldCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
Im1CeXRlc1BlclBhY2tldCBzaG91bGQgbm90IGJlIHplcm8iKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlvbkZvcm1hdCk7Cisg
ICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVy
LmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24sICZz
aXplLCAmbV9kZXN0aW5hdGlvbkZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9D
b252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobV9kZXN0aW5h
dGlvbkZvcm1hdC5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TVBFRzRBQUMpIHsKKyAgICAgICAg
Ly8gRklYTUU6IFNldCBvdXRwdXRCaXRSYXRlIGFjY29yZGluZyBNZWRpYVJlY29yZGVyT3B0aW9u
cy5hdWRpb0JpdHNQZXJTZWNvbmQuCisgICAgICAgIFVJbnQzMiBvdXRwdXRCaXRSYXRlID0gNjQw
MDA7CisgICAgICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlID49IDQ0MTAw
KQorICAgICAgICAgICAgb3V0cHV0Qml0UmF0ZSA9IDE5MjAwMDsKKyAgICAgICAgZWxzZSBpZiAo
bV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA8IDIyMDAwKQorICAgICAgICAgICAgb3V0
cHV0Qml0UmF0ZSA9IDMyMDAwOworCisgICAgICAgIHNpemUgPSBzaXplb2Yob3V0cHV0Qml0UmF0
ZSk7CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSht
X2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSwgc2l6ZSwgJm91
dHB1dEJpdFJhdGUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckVu
Y29kZUJpdFJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQu
bUJ5dGVzUGVyUGFja2V0KSB7CisgICAgICAgIC8vIElmIHRoZSBkZXN0aW5hdGlvbiBmb3JtYXQg
aXMgVkJSLCB3ZSBuZWVkIHRvIGdldCBtYXggc2l6ZSBwZXIgcGFja2V0IGZyb20gdGhlIGNvbnZl
cnRlci4KKyAgICAgICAgc2l6ZSA9IHNpemVvZihtX21heE91dHB1dFBhY2tldFNpemUpOworCisg
ICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZl
cnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVtT3V0cHV0UGFja2V0U2l6
ZSwgJnNpemUsICZtX21heE91dHB1dFBhY2tldFNpemUpKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0
aW5nIGtBdWRpb0NvbnZlcnRlclByb3BlcnR5TWF4aW11bU91dHB1dFBhY2tldFNpemUgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBtX2Rlc3RpbmF0aW9uQnVmZmVyLnJlc2VydmVDYXBhY2l0eShjb21wdXRl
QnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KG1fZGVzdGluYXRpb25Gb3JtYXQsIG1fbWF4T3V0cHV0
UGFja2V0U2l6ZSwgTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EKSk7CisgICAgaWYgKCFtX2Rlc3Rp
bmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkKKyAgICAgICAgbV9kZXN0aW5hdGlvblBhY2tl
dERlc2NyaXB0aW9ucy5yZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0
eSgpIC8gbV9tYXhPdXRwdXRQYWNrZXRTaXplKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitz
aXplX3QgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZvckF1
ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBmb3JtYXQsIFVJbnQzMiBtYXhP
dXRwdXRQYWNrZXRTaXplLCBGbG9hdDMyIGR1cmF0aW9uKQoreworICAgIFVJbnQzMiBudW1QYWNr
ZXRzID0gKGZvcm1hdC5tU2FtcGxlUmF0ZSAqIGR1cmF0aW9uKSAvIGZvcm1hdC5tRnJhbWVzUGVy
UGFja2V0OworICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gZm9ybWF0Lm1CeXRlc1BlclBh
Y2tldCA/IGZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtYXhPdXRwdXRQYWNrZXRTaXplOworICAg
IFVJbnQzMiBidWZmZXJTaXplID0gbnVtUGFja2V0cyAqIG91dHB1dFBhY2tldFNpemU7CisKKyAg
ICByZXR1cm4gYnVmZmVyU2l6ZTsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikK
K3sKKyAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uKSkg
eworICAgICAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07Cisg
ICAgICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKHByaW1lSW5mbyk7CisKKyAgICAgICAgaWYgKGF1
dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBr
QXVkaW9Db252ZXJ0ZXJQcmltZUluZm8sICZzaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3JlbWFp
bmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVNYWtlKHByaW1lSW5mby5sZWFkaW5nRnJhbWVzLCBt
X2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlKTsKKyAgICB9CisKKyAgICBpZiAoQ01USU1F
X0NPTVBBUkVfSU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24p
KSB7CisgICAgICAgIENNVGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVy
YXRpb24oYnVmZmVyKTsKKyAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1pbmlt
dW0oc2FtcGxlRHVyYXRpb24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7CisgICAgICAgIENG
RGljdGlvbmFyeVJlZiB0cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRy
aW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgICAgIENNU2V0QXR0YWNobWVu
dChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFy
dCwgdHJpbUF0U3RhcnREaWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOwor
ICAgICAgICBDRlJlbGVhc2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAgbV9yZW1haW5pbmdQ
cmltZUR1cmF0aW9uID0gQ01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uLCB0
cmltRHVyYXRpb24pOworICAgIH0KK30KKworUmV0YWluUHRyPE5TTnVtYmVyPiBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCkKK3sKKyAgICBV
SW50MzIgZGVsYXlTaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICB1aW50MzJfdCBvcmlnaW5h
bERlbGF5TW9kZSA9IDA7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFBy
b3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCAm
ZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1
ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICB1aW50MzJfdCBvcHRpbWFsRGVsYXlNb2RlID0g
a0F1ZGlvQ29kZWNEZWxheU1vZGVfT3B0aW1hbDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlv
Q29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJvcGVy
dHlEZWxheU1vZGUsIGRlbGF5U2l6ZSwgJm9wdGltYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IHNldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBVSW50MzIgcHJpbWVTaXpl
ID0gc2l6ZW9mKEF1ZGlvQ29kZWNQcmltZUluZm8pOworICAgIEF1ZGlvQ29kZWNQcmltZUluZm8g
cHJpbWVJbmZvIHsgMCwgMCB9OworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJH
ZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1lSW5m
bywgJnByaW1lU2l6ZSwgJnByaW1lSW5mbykpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9D
b2RlY1Byb3BlcnR5UHJpbWVJbmZvIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICBy
ZXR1cm4gbmlsOworICAgIH0KKworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJT
ZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9k
ZSwgZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcg
a0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0TlMoW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6KHByaW1lSW5mby5sZWFkaW5nRnJhbWVzIC8gbV9kZXN0aW5hdGlvbkZvcm1h
dC5tRnJhbWVzUGVyUGFja2V0KV0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKFVJbnQzMiBudW1Q
YWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3QpCit7CisgICAgVmVjdG9yPGNo
YXI+IGNvb2tpZTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbikgewor
ICAgICAgICBVSW50MzIgY29va2llU2l6ZSA9IDA7CisKKyAgICAgICAgYXV0byBlcnJvciA9IEF1
ZGlvQ29udmVydGVyR2V0UHJvcGVydHlJbmZvKG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252
ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgTlVMTCk7CisgICAgICAg
IGlmICgoZXJyb3IgPT0gbm9FcnIpICYmICEhY29va2llU2l6ZSkgeworICAgICAgICAgICAgY29v
a2llLnJlc2VydmVDYXBhY2l0eShjb29raWVTaXplKTsKKworICAgICAgICAgICAgaWYgKGF1dG8g
ZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVk
aW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgY29va2llLmRh
dGEoKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckNvbXBy
ZXNzaW9uTWFnaWNDb29raWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIENNRm9y
bWF0RGVzY3JpcHRpb25SZWYgZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICAgICAg
aWYgKGF1dG8gZXJyb3IgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIE5VTEwsIGNvb2tpZVNpemUsIGNv
b2tpZS5kYXRhKCksIE5VTEwsICZkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAgICAgICBt
X2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24gPSBhZG9wdENGKGRlc3RpbmF0aW9uRm9ybWF0
RGVzY3JpcHRpb24pOworICAgICAgICBtX2dkckNvdW50TnVtID0gZ3JhZHVhbERlY29kZXJSZWZy
ZXNoQ291bnQoKTsKKyAgICB9CisKKyAgICBjaGFyICpkYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhKTsKKyAgICBzaXplX3QgZGF0YVNpemUg
PSBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplOworCisgICAgQ01CbG9j
a0J1ZmZlclJlZiBibG9ja0J1ZmZlcjsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZm
ZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZGF0YVNp
emUsIGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIDAsIGRhdGFTaXplLCBrQ01CbG9ja0J1ZmZl
ckFzc3VyZU1lbW9yeU5vd0ZsYWcsICZibG9ja0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9j
a0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKGJsb2Nr
QnVmZmVyKTsKKworICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRh
Qnl0ZXMoZGF0YSwgYnVmZmVyLmdldCgpLCAwLCBkYXRhU2l6ZSkpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01C
bG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVm
ZmVyOworICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tl
dERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIuZ2V0KCksIHRydWUsIE5V
TEwsIE5VTEwsIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgbnVtUGFja2V0
cywgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wLCBtX2Rlc3RpbmF0aW9uUGFj
a2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRp
b25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0K
KworICAgIGlmIChbbV9nZHJDb3VudE51bSBpbnRWYWx1ZV0pCisgICAgICAgIENNU2V0QXR0YWNo
bWVudChzYW1wbGVCdWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERl
Y29kZXJSZWZyZXNoLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKW1fZ2RyQ291bnROdW0uZ2V0KCksIGtD
TUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisKKyAgICByZXR1cm4gc2FtcGxlQnVm
ZmVyOworfQorCitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlvQ29u
dmVydGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiAqbnVt
T3V0cHV0UGFja2V0c1B0ciwgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0LCBBdWRpb1N0cmVh
bVBhY2tldERlc2NyaXB0aW9uICoqcGFja2V0RGVzY3JpcHRpb25PdXQsIHZvaWQgKmF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvcikKK3sKKyAgICBhdXRvICpjb21wcmVzc29yID0gc3RhdGljX2Nh
c3Q8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4oYXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yKTsKKyAgICByZXR1cm4gY29tcHJlc3Nvci0+cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQ
YWNrZXRzKG51bU91dHB1dFBhY2tldHNQdHIsIGJ1ZmZlckxpc3QsIHBhY2tldERlc2NyaXB0aW9u
T3V0KTsKK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm92aWRl
U291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKiBudW1PdXRwdXRQYWNrZXRzUHRyLCBB
dWRpb0J1ZmZlckxpc3QqIGF1ZGlvQnVmZmVyTGlzdCwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlw
dGlvbioqIHBhY2tldERlc2NyaXB0aW9uT3V0KQoreworICAgIGlmIChwYWNrZXREZXNjcmlwdGlv
bk91dCkKKyAgICAgICAgKnBhY2tldERlc2NyaXB0aW9uT3V0ID0gTlVMTDsKKworICAgIGNvbnN0
IFVJbnQzMiBudW1QYWNrZXRzVG9Db3B5ID0gKm51bU91dHB1dFBhY2tldHNQdHI7CisgICAgc2l6
ZV90IG51bUJ5dGVzVG9Db3B5ID0gKG51bVBhY2tldHNUb0NvcHkgKiBtX3NvdXJjZUZvcm1hdC5t
Qnl0ZXNQZXJQYWNrZXQpOworCisgICAgaWYgKGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZl
cnMgPT0gMSkgeworICAgICAgICBzaXplX3QgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyID0g
MDsKKworICAgICAgICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobnVtQnl0ZXNUb0Nv
cHkpOworCisgICAgICAgIHdoaWxlIChudW1CeXRlc1RvQ29weSkgeworICAgICAgICAgICAgaWYg
KG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tC
dWZmZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAg
ICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVm
ZmVyUXVldWUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNv
bnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZm
ZXJRdWV1ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9
IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENN
U2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAg
ICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9zYW1w
bGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX3NhbXBsZUJs
b2NrQnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBs
ZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1fc2Ft
cGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHlG
cm9tU2FtcGxlQmJ1ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVCbG9ja0J1
ZmZlclNpemUgLSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSk7CisgICAgICAg
ICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3Nh
bXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVy
LCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAobV9zb3VyY2VCdWZmZXIuZGF0YSgpICsg
Y3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
Q01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsK
KyAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgKz0gbnVtQnl0ZXNU
b0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNh
bXBsZUJsb2NrQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5t
RGF0YSA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5t
QnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOwor
ICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1f
c291cmNlRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lOworCisgICAgICAgICpudW1PdXRwdXRQYWNr
ZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1f
c291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisgICAgICAgIHJldHVybiBub0VycjsKKyAg
ICB9CisKKyAgICBBU1NFUlQoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAyKTsK
KworICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVybGVhdmVkIGRhdGEgYnkgdW5pbnRlcmxlYXZp
bmcgbV9zb3VyY2VCdWZmZXIgaWYgbmVlZGVkLgorICAgIEFTU0VSVChtX3NvdXJjZUZvcm1hdC5t
Rm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZCk7CisKKyAgICBt
X3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkoMiAqIG51bUJ5dGVzVG9Db3B5KTsKKyAgICBh
dXRvKiBmaXJzdENoYW5uZWwgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7CisgICAgYXV0byogc2Vj
b25kQ2hhbm5lbCA9IG1fc291cmNlQnVmZmVyLmRhdGEoKSArIG51bUJ5dGVzVG9Db3B5OworCisg
ICAgc2l6ZV90IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciA9IDA7CisgICAgd2hpbGUgKG51
bUJ5dGVzVG9Db3B5KSB7CisgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA8PSBt
X2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICBpZiAobV9z
YW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIg
PSBudWxscHRyOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5KG1f
aW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNv
bnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZm
ZXJRdWV1ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRv
cHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1w
bGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAgICAg
ICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1w
bGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIG1fc2FtcGxl
QmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNh
bXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gQ01CbG9ja0J1ZmZl
ckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSkgLyAyOworICAgICAgICAg
ICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgc2l6ZV90IG51
bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1CeXRlc1RvQ29weSwgKG1f
c2FtcGxlQmxvY2tCdWZmZXJTaXplIC0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZl
cikpOworICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFC
eXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJs
b2NrQnVmZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoZmlyc3RDaGFubmVsICsg
Y3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJs
b2NrQnVmZmVyQ29weURhdGFCeXRlcyBmaXJzdCBjaGFubmVsIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1w
bGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciAr
IG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAo
c2Vjb25kQ2hhbm5lbCArIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcikpKSB7CisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc2Vjb25kIGNoYW5uZWwgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlG
cm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciAr
PSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgbV9jdXJyZW50T2Zm
c2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOwor
ICAgICAgICB9CisgICAgfQorCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0
YSA9IGZpcnN0Q2hhbm5lbDsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRh
Qnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7CisgICAgYXVkaW9CdWZmZXJM
aXN0LT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgYXVkaW9CdWZmZXJM
aXN0LT5tQnVmZmVyc1sxXS5tRGF0YSA9IHNlY29uZENoYW5uZWw7CisgICAgYXVkaW9CdWZmZXJM
aXN0LT5tQnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVm
ZmVyOworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0g
MTsKKworICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZl
cnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7Cisg
ICAgcmV0dXJuIG5vRXJyOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUgbG93V2F0ZXJUaW1l
KQoreworICAgIGlmICghbV9jb252ZXJ0ZXIpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSAoQ01T
YW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1f
aW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlcik7CisKKyAg
ICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZm
ZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50T3V0
cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50
YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKworICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0aW9u
ID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpOworICAgICAgICBp
ZiAoIWluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKGZvcm1hdERl
c2NyaXB0aW9uLCBtX291dHB1dENvZGVjVHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgd2hpbGUgKENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVyVGltZSkgfHwgQ01USU1F
X0NPTVBBUkVfSU5MSU5FKGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJRdWV1ZUdldER1cmF0aW9u
KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSB7CisgICAgICAgIEF1ZGlvQnVmZmVyTGlzdCBm
aWxsQnVmZmVyTGlzdDsKKworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9
IDE7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9
IG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisgICAgICAgIGZpbGxCdWZm
ZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSAoVUludDMyKW1fZGVzdGluYXRpb25C
dWZmZXIuY2FwYWNpdHkoKTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURh
dGEgPSBtX2Rlc3RpbmF0aW9uQnVmZmVyLmRhdGEoKTsKKworICAgICAgICBVSW50MzIgb3V0cHV0
UGFja2V0U2l6ZSA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gbV9kZXN0
aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtX21heE91dHB1dFBhY2tldFNpemU7Cisg
ICAgICAgIFVJbnQzMiBudW1PdXRwdXRQYWNrZXRzID0gKFVJbnQzMiltX2Rlc3RpbmF0aW9uQnVm
ZmVyLmNhcGFjaXR5KCkgLyBvdXRwdXRQYWNrZXRTaXplOworCisgICAgICAgIGF1dG8gZXJyb3Ig
PSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyKG1fY29udmVydGVyLmdldCgpLCBhdWRp
b0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jLCB0aGlzLCAmbnVtT3V0cHV0UGFja2V0cywg
JmZpbGxCdWZmZXJMaXN0LCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSk7
CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJGaWxs
Q29tcGxleEJ1ZmZlciBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbnVtT3V0cHV0UGFja2V0cykKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gYnVmZmVyID0gc2FtcGxlQnVmZmVyV2l0aE51bVBh
Y2tldHMobnVtT3V0cHV0UGFja2V0cywgZmlsbEJ1ZmZlckxpc3QpOworCisgICAgICAgIGF0dGFj
aFByaW1pbmdUcmltc0lmTmVlZGVkKGJ1ZmZlcik7CisKKyAgICAgICAgZXJyb3IgPSBDTVNhbXBs
ZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIsIG1fY3VycmVudE91
dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBDTVRpbWUgbmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9u
KGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCA9
IENNVGltZUFkZChtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG5hdGl2ZUR1
cmF0aW9uKTsKKworICAgICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZl
ckdldE91dHB1dER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1dFByZXNl
bnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25U
aW1lU3RhbXAsIG91dHB1dER1cmF0aW9uKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVl
dWVFbnF1ZXVlKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAgIGlm
IChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVy
KENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJR
dWV1ZUVucXVldWUobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKwor
ICAgIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUobV9sb3dXYXRlclRpbWUp
OworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVy
KENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFs
RGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykKKyAgICAgICAgICAg
IHByb2Nlc3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVCdWZm
ZXJSZWYgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIo
KQoreworICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENN
QnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisKK1Jl
dGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0
YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVC
dWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWlu
KG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCBiMTQ3Y2EyODgyOWIw
ZjEwMzBiZGE3NGEwODQyNmM0NTY1ZTk4NzFlLi5kZDgwODBiMzY1OTAzNGIyOGY5YmI5MjI1NmY0
NTFiZGExODBhNjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaApAQCAtMjQsNyArMjQsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShB
VkFTU0VUV1JJVEVSREVMRUdBVEUpCisKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9u
LmgiCiAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KQEAgLTM0LDExICszNiwxNiBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Ro
cmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5
cGVzLmg+CisjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogCiB0eXBlZGVmIHN0cnVjdCBv
cGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0
cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwor
dHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiAqQ01CdWZmZXJR
dWV1ZVRyaWdnZXJUb2tlbjsKIAogT0JKQ19DTEFTUyBBVkFzc2V0V3JpdGVyOwogT0JKQ19DTEFT
UyBBVkFzc2V0V3JpdGVySW5wdXQ7CitPQkpDX0NMQVNTIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZTsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNZWRpYVRpbWU7CkBAIC00NiwyOSArNTMsODMg
QEAgY2xhc3MgTWVkaWFUaW1lOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvcjsKIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiBj
bGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOwor
Y2xhc3MgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOwogCi1jbGFzcyBXRUJDT1JFX0VYUE9S
VCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFp
bj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gewor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdURjo6RGVz
dHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXIsIFdlYWtQdHJGYWN0b3J5SW5pdGlhbGl6YXRpb246OkVhZ2VyPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3Jl
YXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBhdWRpb1RyYWNrLCBjb25zdCBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSogdmlkZW9UcmFjayk7CiAgICAgc3RhdGljIFJlZlB0cjxNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwg
aW50IGhlaWdodCk7CiAgICAgfk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCk7Ci0gICAgCi0g
ICAgYm9vbCBzZXR1cFdyaXRlcigpOwotICAgIGJvb2wgc2V0VmlkZW9JbnB1dChpbnQgd2lkdGgs
IGludCBoZWlnaHQpOwotICAgIGJvb2wgc2V0QXVkaW9JbnB1dCgpOworCiAgICAgdm9pZCBhcHBl
bmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CiAgICAgdm9pZCBhcHBlbmRB
dWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9p
ZCBzdG9wUmVjb3JkaW5nKCk7CiAgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJik7CiAKKyNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICB2
b2lkIGFwcGVuZERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToK
KyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAgIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pOworICAgIHZvaWQgY2xlYXIoKTsKKwor
ICAgIGJvb2wgaW5pdGlhbGl6ZSgpOworCisgICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZFZpZGVv
T3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOwor
ICAgIHN0YXRpYyB2b2lkIGNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQq
LCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKTsKKworICAgIHZvaWQgc3RhcnRBc3NldFdyaXRl
cigpOworICAgIHZvaWQgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKworICAgIGJv
b2wgYXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKCk7CisgICAgYm9vbCBhcHBlbmRD
b21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIoKTsKKworICAgIHZvaWQgcHJvY2Vzc05ld0NvbXBy
ZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcnMoKTsKKyAgICB2b2lkIHByb2Nlc3NOZXdDb21wcmVzc2Vk
VmlkZW9TYW1wbGVCdWZmZXJzKCk7CisKKyAgICB2b2lkIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1
ZmZlcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGFwcGVuZEVuZE9m
VmlkZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisjZWxzZQogICAgIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0
V3JpdGVyPiYmLCBTdHJpbmcmJiBwYXRoKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKKyAgICBib29s
IHNldHVwV3JpdGVyKCk7CisgICAgYm9vbCBzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhl
aWdodCk7CisgICAgYm9vbCBzZXRBdWRpb0lucHV0KCk7CisjZW5kaWYKKworICAgIGJvb2wgbV9o
YXNTdGFydGVkV3JpdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU3RvcHBlZCB7IGZhbHNl
IH07CisKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CisKKyAgICBib29s
IG1faXNTdG9wcGluZyB7IGZhbHNlIH07CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+IG1f
ZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorICAgIGJvb2wgbV9oYXNBdWRpbzsKKyAgICBib29sIG1faGFzVmlkZW87CisKKyAgICBSZXRh
aW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fYXVkaW9D
b21wcmVzc29yOworICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fYXVkaW9Bc3Nl
dFdyaXRlcklucHV0OworCisgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1f
dmlkZW9Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yPiBtX3ZpZGVvQ29tcHJlc3NvcjsKKyAgICBSZXRhaW5QdHI8QVZBc3Nl
dFdyaXRlcklucHV0PiBtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dDsKKyAgICBDTVRpbWUgbV9sYXN0
VmlkZW9QcmVzZW50YXRpb25UaW1lOworICAgIENNVGltZSBtX2xhc3RWaWRlb0RlY29kaW5nVGlt
ZTsKKyAgICBib29sIG1faGFzRW5jb2RlZFZpZGVvU2FtcGxlcyB7IGZhbHNlIH07CisKKyAgICBS
ZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlPiBtX3dyaXRlckRlbGVnYXRlOworI2Vs
c2UKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX3ZpZGVvSW5wdXQ7CiAgICAg
UmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0lucHV0OwogCkBAIC03OCwxOSAr
MTM5LDE1IEBAIHByaXZhdGU6CiAgICAgQmluYXJ5U2VtYXBob3JlIG1fZmluaXNoV3JpdGluZ1Nl
bWFwaG9yZTsKICAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhv
cmU7CiAgICAgQmluYXJ5U2VtYXBob3JlIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlOwot
ICAgIGJvb2wgbV9oYXNTdGFydGVkV3JpdGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzU3Rv
cHBlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzRmlyc3RBdWRpb1NhbXBsZSB7IHRydWUgfTsK
ICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fYXVkaW9QdWxsUXVldWU7CiAgICAgZGlzcGF0Y2hfcXVl
dWVfdCBtX3ZpZGVvUHVsbFF1ZXVlOwogICAgIERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZl
clJlZj4+IG1fdmlkZW9CdWZmZXJQb29sOwogICAgIERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4+IG1fYXVkaW9CdWZmZXJQb29sOwogCi0gICAgYm9vbCBtX2lzU3RvcHBpbmcgeyBm
YWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKLSAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiBtX2ZldGNoRGF0YUNvbXBsZXRp
b25IYW5kbGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDIzMzU0ZjQ3ODRkZTA5MmYw
NDg3YzE4NTRmYzViMjZhNWUyMjExYWMuLjVjZTA0Njk5NTI4ZWUxNjBlOTUyN2MwMWQyOTc5OWY1
MDIwM2ZhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0KQEAgLTI2LDExMSArMjYsMTI4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIgogCi0jaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAorI2luY2x1ZGUgIkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaCIKKyNpbmNsdWRlICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNs
dWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3Nl
dFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQuaD4K
KyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcl9Qcml2YXRlLmg+CisjaW5jbHVk
ZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxw
YWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDx3dGYvQmxvY2tQdHIuaD4KICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiAjaW1wb3J0IDxwYWwvY29j
b2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAotI3VuZGVmIEFWRW5jb2RlckJpdFJhdGVLZXkK
LSNkZWZpbmUgQVZFbmNvZGVyQml0UmF0ZUtleSBnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZh
bGxiYWNrKCkKLSN1bmRlZiBBVkZvcm1hdElES2V5Ci0jZGVmaW5lIEFWRm9ybWF0SURLZXkgZ2V0
QVZGb3JtYXRJREtleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZOdW1iZXJPZkNoYW5uZWxzS2V5
Ci0jZGVmaW5lIEFWTnVtYmVyT2ZDaGFubmVsc0tleSBnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlX
aXRoRmFsbGJhY2soKQotI3VuZGVmIEFWU2FtcGxlUmF0ZUtleQotI2RlZmluZSBBVlNhbXBsZVJh
dGVLZXkgZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKK0BpbnRlcmZhY2UgV2ViQVZB
c3NldFdyaXRlckRlbGVnYXRlIDogTlNPYmplY3QgPEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4gewor
ICAgIFdlYWtQdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IG1fd3JpdGVy
OworfQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXcml0
ZXI6KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKil3cml0ZXI7CistICh2b2lk
KWNsb3NlOworLSAodm9pZClmaW5pc2g7CiAKLXVzaW5nIG5hbWVzcGFjZSBQQUw7CitAZW5kCiAK
LXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZGb3JtYXRJREtleVdpdGhGYWxsYmFjaygpCitAaW1wbGVt
ZW50YXRpb24gV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIHsKK307CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqKXdy
aXRlcgogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXko
KSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCk7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOwor
ICAgIGlmIChzZWxmKQorICAgICAgICBzZWxmLT5tX3dyaXRlciA9IG1ha2VXZWFrUHRyKHdyaXRl
cik7CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRm9y
bWF0SURLZXkiKTsKLSAgICByZXR1cm4gQCJBVkZvcm1hdElES2V5IjsKKyAgICByZXR1cm4gc2Vs
ZjsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFs
bGJhY2soKQorLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5k
YXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9B
VkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCk7Ci0KLSAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWTnVtYmVyT2ZDaGFubmVsc0tleSIpOwotICAg
IHJldHVybiBAIkFWTnVtYmVyT2ZDaGFubmVsc0tleSI7CisgICAgW3N1cGVyIGRlYWxsb2NdOwog
fQogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCist
ICh2b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVj
ZUZyYWdtZW50ZWRIZWFkZXJEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkSGVhZGVyRGF0YQogewot
ICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpKQotICAg
ICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpOworICAg
IFVOVVNFRF9QQVJBTShhc3NldFdyaXRlcik7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewor
ICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pIHsK
KyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8
V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVy
RGF0YSBieXRlc10pLCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAocHJv
dGVjdGVkU2VsZi0+bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYt
Pm1fd3JpdGVyLT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVlNhbXBsZVJhdGVLZXkiKTsKLSAgICByZXR1cm4g
QCJBVlNhbXBsZVJhdGVLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93cml0ZXIt
PmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0
YSBieXRlc10pLCBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3RoXSk7CiB9CiAKLXN0YXRpYyBO
U1N0cmluZyAqZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCistICh2b2lkKWFz
c2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50
ZWRNZWRpYURhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRNZWRpYURhdGEgZnJhZ21lbnRlZE1lZGlh
RGF0YVJlcG9ydDooQVZGcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0ICopZnJhZ21lbnRlZE1lZGlh
RGF0YVJlcG9ydAogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRW5jb2Rl
ckJpdFJhdGVLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkVu
Y29kZXJCaXRSYXRlS2V5KCk7CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKKyAgICBV
TlVTRURfUEFSQU0oZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCk7CisgICAgaWYgKCFpc01haW5U
aHJlYWQoKSkgeworICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRNZWRpYURhdGEg
bGVuZ3RoXSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFJldGFpblB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdt
ZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAg
ICAgaWYgKHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyKQorICAgICAgICAgICAgICAgICAgICBwcm90
ZWN0ZWRTZWxmLT5tX3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZFbmNvZGVyQml0UmF0ZUtleSIp
OwotICAgIHJldHVybiBAIkFWRW5jb2RlckJpdFJhdGVLZXkiOworICAgIGlmIChtX3dyaXRlcikK
KyAgICAgICAgbV93cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtm
cmFnbWVudGVkTWVkaWFEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0p
OwogfQogCi1SZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlv
VHJhY2ssIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKQorLSAodm9p
ZCljbG9zZQogewotICAgIGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7Ci0gICAgaWYgKHZpZGVv
VHJhY2spIHsKLSAgICAgICAgYXV0byYgc2V0dGluZ3MgPSB2aWRlb1RyYWNrLT5zZXR0aW5ncygp
OwotICAgICAgICB3aWR0aCA9IHNldHRpbmdzLndpZHRoKCk7Ci0gICAgICAgIGhlaWdodCA9IHNl
dHRpbmdzLmhlaWdodCgpOwotICAgIH0KLSAgICByZXR1cm4gY3JlYXRlKCEhYXVkaW9UcmFjaywg
d2lkdGgsIGhlaWdodCk7CisgICAgbV93cml0ZXIgPSBudWxscHRyOwogfQogCi1SZWZQdHI8TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVh
dGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorLSAodm9pZClmaW5pc2gK
IHsKLSAgICBOU1N0cmluZyAqZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5
RGlyZWN0b3J5KEAidmlkZW9zIik7Ci0gICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIvJWxsZC5tcDQiLCBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0
SG9zdFRpbWVDbG9jaygpKS52YWx1ZV07Ci0gICAgTlNTdHJpbmcgKnBhdGggPSBbZGlyZWN0b3J5
IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1lXTsKKyAgICBtX3dyaXRlciA9IG51bGxw
dHI7Cit9CiAKLSAgICBOU1VSTCAqb3V0cHV0VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpw
YXRoXTsKLSAgICBTdHJpbmcgZmlsZVBhdGggPSBbcGF0aCBVVEY4U3RyaW5nXTsKLSAgICBOU0Vy
cm9yICplcnJvciA9IG5pbDsKLSAgICBhdXRvIGF2QXNzZXRXcml0ZXIgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhVUkw6b3V0cHV0VVJMIGZpbGVU
eXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRl
ciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKWVycm9yLmNvZGUp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CitAZW5kCiAKLSAgICBhdXRvIHdyaXRl
ciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoV1RGTW92ZShhdkFz
c2V0V3JpdGVyKSwgV1RGTW92ZShmaWxlUGF0aCkpKTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dXNpbmcgbmFtZXNwYWNlIFBBTDsKIAotICAgIGlmIChoYXNBdWRpbyAmJiAhd3JpdGVyLT5zZXRB
dWRpb0lucHV0KCkpCitSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQoreworICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcihoYXNBdWRpbywgd2lkdGggJiYgaGVpZ2h0KSk7CisgICAgaWYgKCF3cml0
ZXItPmluaXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHdy
aXRlcjsKK30KIAotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKLSAgICAgICAgaWYgKCF3cml0
ZXItPnNldFZpZGVvSW5wdXQod2lkdGgsIGhlaWdodCkpCi0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wcmVzc2Vk
VmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkICptZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbikKK3sKKyAgICBhdXRvICp3cml0ZXIgPSBzdGF0
aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcio+KG1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyKTsKKyAgICB3cml0ZXItPnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZm
ZXJzKCk7Cit9CiAKLSAgICByZXR1cm4gV1RGTW92ZSh3cml0ZXIpOwordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9p
ZCAqbWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4p
Cit7CisgICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7CisgICAgd3JpdGVyLT5wcm9jZXNz
TmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOwogfQogCi1NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRX
cml0ZXI+JiYgYXZBc3NldFdyaXRlciwgU3RyaW5nJiYgZmlsZVBhdGgpCi0gICAgOiBtX3dyaXRl
cihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpKQotICAgICwgbV9wYXRoKFdURk1vdmUoZmlsZVBhdGgp
KQorTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
KGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pCisgICAgOiBtX2hhc0F1ZGlvKGhhc0F1ZGlv
KQorICAgICwgbV9oYXNWaWRlbyhoYXNWaWRlbykKIHsKIH0KIApAQCAtMTM5LDE0MCArMTU2LDIy
OSBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpjbGVhcigpCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKCkK
IHsKLSAgICBpZiAobV92aWRlb0lucHV0KSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1dC5jbGVhcigp
OwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fdmlkZW9QdWxsUXVldWUpOworICAgIE5TRXJy
b3IgKmVycm9yID0gbmlsOworICAgIG1fd3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNz
ZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRXaXRoRmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9y
OiZlcnJvcl0pOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVy
cm9yIGNvZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29kZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgaWYgKG1fYXVkaW9JbnB1dCkgewotICAgICAgICBtX2F1ZGlvSW5wdXQuY2xl
YXIoKTsKLSAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2F1ZGlvUHVsbFF1ZXVlKTsKKworICAg
IG1fd3JpdGVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aFdyaXRlcjogdGhpc10pOworICAgIFttX3dyaXRlci5nZXQoKSBzZXREZWxl
Z2F0ZTptX3dyaXRlckRlbGVnYXRlLmdldCgpXTsKKworICAgIGlmIChtX2hhc0F1ZGlvKSB7Cisg
ICAgICAgIG1fYXVkaW9Db21wcmVzc29yID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpj
cmVhdGUoY29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2ssIHRoaXMpOworICAgICAg
ICBpZiAoIW1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KLSAgICBpZiAobV93cml0ZXIpCi0gICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CisgICAgaWYg
KG1faGFzVmlkZW8pIHsKKyAgICAgICAgbV92aWRlb0NvbXByZXNzb3IgPSBWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShrQ01WaWRlb0NvZGVjVHlwZV9IMjY0LCBjb21wcmVzc2Vk
VmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7CisgICAgICAgIGlmICghbV92aWRlb0Nv
bXByZXNzb3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKQoreworICAgIEFT
U0VSVChtX2hhc1ZpZGVvKTsKKyAgICBpZiAoIW1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbikgewor
ICAgICAgICBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1h
dERlc2NyaXB0aW9uKG1fdmlkZW9Db21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVCdWZmZXIoKSk7
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyks
IHRoaXNdIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobV9oYXNBdWRpbyAmJiAhbV9hdWRp
b0Zvcm1hdERlc2NyaXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgc3RhcnRBc3NldFdyaXRlcigpOworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFtX2hh
c1N0YXJ0ZWRXcml0aW5nKQorICAgICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3NlZFNh
bXBsZUJ1ZmZlcnMoKTsKIH0KIAotYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0
VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpCiB7Ci0g
ICAgQVNTRVJUKCFtX3ZpZGVvSW5wdXQpOwotICAgIAotICAgIE5TRGljdGlvbmFyeSAqY29tcHJl
c3Npb25Qcm9wZXJ0aWVzID0gQHsKLSAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDog
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAxMl0sCi0gICAgICAgIEFW
VmlkZW9FeHBlY3RlZFNvdXJjZUZyYW1lUmF0ZUtleSA6IEAoMzApLAotICAgICAgICBBVlZpZGVv
TWF4S2V5RnJhbWVJbnRlcnZhbEtleSA6IEAoMTIwKSwKLSAgICAgICAgQVZWaWRlb1Byb2ZpbGVM
ZXZlbEtleSA6IEFWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbAotICAgIH07Ci0K
LSAgICBOU0RpY3Rpb25hcnkgKnZpZGVvU2V0dGluZ3MgPSBAewotICAgICAgICBBVlZpZGVvQ29k
ZWNLZXk6IEFWVmlkZW9Db2RlY0gyNjQsCi0gICAgICAgIEFWVmlkZW9XaWR0aEtleTogW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6d2lkdGhdLAotICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5OiBbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDpoZWlnaHRdLAotICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Q
cm9wZXJ0aWVzS2V5OiBjb21wcmVzc2lvblByb3BlcnRpZXMKLSAgICB9OworICAgIEFTU0VSVCht
X2hhc0F1ZGlvKTsKKyAgICBpZiAoIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAg
ICBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2Ny
aXB0aW9uKG1fYXVkaW9Db21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVCdWZmZXIoKSk7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXNd
IHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobV9oYXNWaWRlbyAmJiAhbV92aWRlb0Zvcm1h
dERlc2NyaXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc3Rh
cnRBc3NldFdyaXRlcigpOworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFtX2hhc1N0YXJ0
ZWRXcml0aW5nKQorICAgICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1
ZmZlcnMoKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3Nl
dFdyaXRlcigpCit7CisgICAgaWYgKG1faGFzVmlkZW8pIHsKKyAgICAgICAgbV92aWRlb0Fzc2V0
V3JpdGVySW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFu
Y2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOm5p
bCBzb3VyY2VGb3JtYXRIaW50Om1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKV0pOworICAg
ICAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRp
bWU6dHJ1ZV07CisgICAgICAgIGlmICghW21fd3JpdGVyLmdldCgpIGNhbkFkZElucHV0Om1fdmlk
ZW9Bc3NldFdyaXRlcklucHV0LmdldCgpXSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdy
aXRlciBmYWlsZWQgY2FuQWRkSW5wdXQgZm9yIHZpZGVvIik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgW21fd3JpdGVyLmdldCgpIGFkZElucHV0Om1fdmlkZW9Bc3Nl
dFdyaXRlcklucHV0LmdldCgpXTsKKyAgICB9CiAgICAgCi0gICAgbV92aWRlb0lucHV0ID0gYWRv
cHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRp
YVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBvdXRwdXRTZXR0aW5nczp2aWRlb1NldHRpbmdzIHNvdXJj
ZUZvcm1hdEhpbnQ6bmlsXSk7Ci0gICAgW21fdmlkZW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRh
SW5SZWFsVGltZTp0cnVlXTsKKyAgICBpZiAobV9oYXNBdWRpbykgeworICAgICAgICBtX2F1ZGlv
QXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJ
bnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGlu
Z3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7
CisgICAgICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5S
ZWFsVGltZTp0cnVlXTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6
bV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFz
c2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgYXVkaW8iKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV9hdWRp
b0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBpZiAoIVttX3dyaXRl
ciBjYW5BZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1
dCA9IG51bGxwdHI7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhl
IHZpZGVvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIp
OwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgc3RhcnRX
cml0aW5nXSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBzdGFydFdyaXRp
bmciKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92
aWRlb0lucHV0LmdldCgpXTsKLSAgICBtX3ZpZGVvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVf
Y3JlYXRlKCJXZWJDb3JlVmlkZW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9R
VUVVRV9TRVJJQUwpOworCisgICAgW21fd3JpdGVyLmdldCgpIHN0YXJ0U2Vzc2lvbkF0U291cmNl
VGltZTprQ01UaW1lWmVyb107CisKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygp
OworCisgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7Cit9CisKK2Jvb2wgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpCit7
CisgICAgaWYgKCFtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFd
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYXVkaW9Db21w
cmVzc29yLT50YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSBh
cHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0QXVkaW9JbnB1dCgpCitib29sIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZm
ZXIoKQogewotICAgIEFTU0VSVCghbV9hdWRpb0lucHV0KTsKKyAgICBpZiAoIW1fdmlkZW9Db21w
cmVzc29yKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBOU0RpY3Rpb25hcnkgKmF1ZGlv
U2V0dGluZ3MgPSBAewotICAgICAgICBBVkVuY29kZXJCaXRSYXRlS2V5IDogQCgyODAwMCksCi0g
ICAgICAgIEFWRm9ybWF0SURLZXkgOiBAKGtBdWRpb0Zvcm1hdE1QRUc0QUFDKSwKLSAgICAgICAg
QVZOdW1iZXJPZkNoYW5uZWxzS2V5IDogQCgxKSwKLSAgICAgICAgQVZTYW1wbGVSYXRlS2V5IDog
QCgyMjA1MCkKLSAgICB9OworICAgIGlmICghW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVh
ZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9hdWRp
b0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkg
aW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczphdWRpb1Nl
dHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7Ci0gICAgW21fYXVkaW9JbnB1dCBzZXRFeHBl
Y3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKLSAgICAKLSAgICBpZiAoIVttX3dyaXRlciBj
YW5BZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1dCA9
IG51bGxwdHI7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIGF1
ZGlvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOwor
ICAgIGF1dG8gYnVmZmVyID0gbV92aWRlb0NvbXByZXNzb3ItPnRha2VPdXRwdXRTYW1wbGVCdWZm
ZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICBbbV93cml0ZXIgYWRkSW5wdXQ6bV9hdWRpb0lucHV0LmdldCgpXTsKLSAgICBtX2F1ZGlvUHVs
bFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3JlQXVkaW9SZWNvcmRpbmdQdWxs
QnVmZmVyUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworCisgICAgbV9sYXN0VmlkZW9Q
cmVzZW50YXRpb25UaW1lID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAo
YnVmZmVyLmdldCgpKTsKKyAgICBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSA9IENNU2FtcGxlQnVm
ZmVyR2V0RGVjb2RlVGltZVN0YW1wKGJ1ZmZlci5nZXQoKSk7CisgICAgbV9oYXNFbmNvZGVkVmlk
ZW9TYW1wbGVzID0gdHJ1ZTsKKworICAgIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSBh
cHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1
ZmZlcnMoKQoreworICAgIHdoaWxlIChhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIo
KSB8fCBhcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKSkgeyB9OworfQorCitzdGF0
aWMgaW5saW5lIHZvaWQgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIoQVZB
c3NldFdyaXRlcklucHV0ICphc3NldFdyaXRlcklucHV0LCBDTVRpbWUgcHJlc2VudGF0aW9uVGlt
ZVN0YW1wLCBDTVRpbWUgZGVjb2RpbmdUaW1lU3RhbXApCit7CisgICAgQ01TYW1wbGVUaW1pbmdJ
bmZvIHRpbWluZ0luZm8gPSB7IGtDTVRpbWVJbnZhbGlkLCBwcmVzZW50YXRpb25UaW1lU3RhbXAs
IGRlY29kaW5nVGltZVN0YW1wfTsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlciA9IE5V
TEw7CisgICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIE5VTEwsIHRydWUsIE5VTEwsIE5VTEwsIE5VTEwsIDAsIDEsICZ0aW1pbmdJbmZvLCAw
LCBOVUxMLCAmYnVmZmVyKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRFbmRz
UHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlciBmYWlsZWQgQ01TYW1wbGVCdWZmZXJDcmVhdGUg
d2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIHNhbXBs
ZUJ1ZmZlciA9IGFkb3B0Q0YoYnVmZmVyKTsKKworICAgIENNU2V0QXR0YWNobWVudChzYW1wbGVC
dWZmZXIuZ2V0KCksIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2Ft
cGxlRHVyYXRpb24sIGtDRkJvb2xlYW5UcnVlLCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9w
YWdhdGUpOworICAgIGlmICghW2Fzc2V0V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOnNh
bXBsZUJ1ZmZlci5nZXQoKV0pCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgYXBwZW5kU2FtcGxlQnVmZmVyIHRvIHdyaXRl
ciBpbnB1dCBmYWlsZWQiKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
YXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9oYXNFbmNvZGVkVmlk
ZW9TYW1wbGVzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9y
ZU1lZGlhRGF0YV0pIHsKKyAgICAgICAgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25N
YXJrZXIobV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCksIG1fbGFzdFZpZGVvUHJlc2VudGF0
aW9uVGltZSwgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBibG9jayA9IG1ha2VC
bG9ja1B0cihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKHdlYWtUaGlzKSB7CisgICAgICAgICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJh
dGlvbk1hcmtlcihtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9QcmVz
ZW50YXRpb25UaW1lLCBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSk7CisgICAgICAgICAgICBbbV92
aWRlb0Fzc2V0V3JpdGVySW5wdXQgbWFya0FzRmluaXNoZWRdOworICAgICAgICB9CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7CisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklu
cHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCkgdXNpbmdCbG9jazpibG9jay5nZXQoKV07Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGFwcGVuZENvbXByZXNzZWRT
YW1wbGVCdWZmZXJzKCk7CisgICAgYXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVk
ZWQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpjbGVhcigpCit7CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dy
aXRlci5jbGVhcigpOworCisgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworfQorCisKIHN0YXRpYyBpbmxpbmUg
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRU
aW1lU3RhbXAoQ01TYW1wbGVCdWZmZXJSZWYgb3JpZ2luYWxCdWZmZXIpCiB7CiAgICAgQ01UaW1l
IHN0YXJ0VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOwog
ICAgIENNSXRlbUNvdW50IGNvdW50ID0gMDsKICAgICBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRp
bWluZ0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgMCwgbmlsLCAmY291bnQpOwotICAgIAorCiAg
ICAgVmVjdG9yPENNU2FtcGxlVGltaW5nSW5mbz4gdGltZUluZm8oY291bnQpOwogICAgIENNU2Ft
cGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCBjb3VudCwg
dGltZUluZm8uZGF0YSgpLCAmY291bnQpOwotICAgIAotICAgIGZvciAoQ01JdGVtQ291bnQgaSA9
IDA7IGkgPCBjb3VudDsgaSsrKSB7CisKKyAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBjb3VudDsg
aSsrKSB7CiAgICAgICAgIHRpbWVJbmZvW2ldLmRlY29kZVRpbWVTdGFtcCA9IGtDTVRpbWVJbnZh
bGlkOwogICAgICAgICB0aW1lSW5mb1tpXS5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBzdGFydFRp
bWU7CiAgICAgfQotICAgIAorCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3QnVmZmVyID0gbnVs
bHB0cjsKLSAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1Rp
bWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZv
LmRhdGEoKSwgJm5ld0J1ZmZlcik7Ci0gICAgaWYgKGVycm9yKQorICAgIGlmIChhdXRvIGVycm9y
ID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcikp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlciBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nIGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAg
cmV0dXJuIGFkb3B0Q0YobmV3QnVmZmVyKTsKIH0KLQorICAgIAogdm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyKQogewotICAgIEFTU0VSVChtX3ZpZGVvSW5wdXQpOwotICAgIGlmIChtX2lz
U3RvcHBlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5n
KSB7Ci0gICAgICAgIGlmICghW21fd3JpdGVyIHN0YXJ0V3JpdGluZ10pIHsKLSAgICAgICAgICAg
IG1faXNTdG9wcGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3Ig
Y29kZSAlbGQiLCAobG9uZylbbV93cml0ZXIgZXJyb3JdKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOkNN
Q2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKLSAgICAgICAgbV9oYXNT
dGFydGVkV3JpdGluZyA9IHRydWU7Ci0gICAgICAgIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7Ci0gICAgICAgIFttX3ZpZGVvSW5wdXQgcmVx
dWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6bV92aWRlb1B1bGxRdWV1ZSB1c2luZ0Jsb2Nr
Olt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewotICAgICAg
ICAgICAgZG8gewotICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBpc1JlYWR5Rm9y
TW9yZU1lZGlhRGF0YV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOwotICAgICAgICAgICAgICAg
IGlmIChtX3ZpZGVvQnVmZmVyUG9vbC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gbV92aWRlb0J1ZmZlclBvb2wudGFr
ZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0
KCldKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0gd2hpbGUgKHRy
dWUpOwotICAgICAgICAgICAgaWYgKG1faXNTdG9wcGVkICYmIG1fdmlkZW9CdWZmZXJQb29sLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgICAgIFttX3ZpZGVvSW5wdXQgbWFya0FzRmluaXNoZWRd
OwotICAgICAgICAgICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLnNpZ25hbCgp
OwotICAgICAgICAgICAgfQotICAgICAgICB9XTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBhdXRvIGJ1ZmZlcldpdGhDdXJyZW50VGltZSA9IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVu
dFRpbWVTdGFtcChzYW1wbGVCdWZmZXIpOwotICAgIGlmICghYnVmZmVyV2l0aEN1cnJlbnRUaW1l
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9M
b2NrKTsKLSAgICBtX3ZpZGVvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShidWZmZXJXaXRoQ3Vy
cmVudFRpbWUpKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBzZXQgdGhlIHRpbWVzdGFt
cHMgaWYgdGhleSBhcmUgYWxyZWFkeSBzZXQuCisgICAgaWYgKGF1dG8gYnVmZmVyV2l0aEN1cnJl
bnRUaW1lID0gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZl
cikpCisgICAgICAgIG1fdmlkZW9Db21wcmVzc29yLT5hZGRTYW1wbGVCdWZmZXIoYnVmZmVyV2l0
aEN1cnJlbnRUaW1lLmdldCgpKTsKIH0KIAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3Jt
YXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKQEAgLTI4MCw2OCArMzg2LDM5IEBAIHN0
YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUF1ZGlv
Rm9ybWF0RGVzY3JpcHRpb24oY29uCiAgICAgYXV0byBiYXNpY0Rlc2NyaXB0aW9uID0gV1RGOjpn
ZXQ8Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRpb24ucGxhdGZv
cm1EZXNjcmlwdGlvbigpLmRlc2NyaXB0aW9uKTsKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVm
IGZvcm1hdCA9IG51bGxwdHI7CiAgICAgYXV0byBlcnJvciA9IENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBiYXNpY0Rlc2NyaXB0aW9uLCAwLCBOVUxM
LCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0KTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYgKGVycm9y
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXIgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgcmV0dXJu
IGFkb3B0Q0YoZm9ybWF0KTsKIH0KIAotc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVC
dWZmZXJSZWY+IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhD
TUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdCwgc2l6ZV90IHNhbXBsZUNvdW50KQotewotICAg
IENNVGltZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9j
aygpKTsKLSAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBudWxscHRyOwotICAg
IGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0
aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgZm9ybWF0
LCBzYW1wbGVDb3VudCwgc3RhcnRUaW1lLCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsKLSAgICBpZiAo
ZXJyb3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBhZG9wdENGKHNhbXBs
ZUJ1ZmZlcik7Ci19Ci0KLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZEF1
ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBz
aXplX3Qgc2FtcGxlQ291bnQpCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZl
clJlZj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRh
dGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6
Ok1lZGlhVGltZSYgdGltZSwgc2l6ZV90IHNhbXBsZUNvdW50KQogewotICAgIEFTU0VSVChtX2F1
ZGlvSW5wdXQpOwotICAgIGlmICgoIW1faGFzU3RhcnRlZFdyaXRpbmcgJiYgbV92aWRlb0lucHV0
KSB8fCBtX2lzU3RvcHBlZCkKLSAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gZm9ybWF0ID0gY3Jl
YXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7CiAgICAgaWYgKCFmb3JtYXQp
Ci0gICAgICAgIHJldHVybjsKLSAgICBpZiAobV9pc0ZpcnN0QXVkaW9TYW1wbGUpIHsKLSAgICAg
ICAgaWYgKCFtX3ZpZGVvSW5wdXQpIHsKLSAgICAgICAgICAgIC8vIGF1ZGlvLW9ubHkgcmVjb3Jk
aW5nLgotICAgICAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewotICAgICAg
ICAgICAgICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VU
aW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKLSAgICAgICAg
ICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIG1faXNG
aXJzdEF1ZGlvU2FtcGxlID0gZmFsc2U7Ci0gICAgICAgIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7Ci0gICAgICAgIFttX2F1ZGlvSW5wdXQg
cmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6bV9hdWRpb1B1bGxRdWV1ZSB1c2luZ0Js
b2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewotICAg
ICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIGlmICghW21fYXVkaW9JbnB1dCBpc1JlYWR5
Rm9yTW9yZU1lZGlhRGF0YV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb0xvY2spOwotICAgICAgICAgICAg
ICAgIGlmIChtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9hdWRpb0J1ZmZlclBvb2wu
dGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7Ci0gICAg
ICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgp
XTsKLSAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpOwotICAgICAgICAgICAgaWYgKG1faXNTdG9w
cGVkICYmIG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIFtt
X2F1ZGlvSW5wdXQgbWFya0FzRmluaXNoZWRdOwotICAgICAgICAgICAgICAgIG1fZmluaXNoV3Jp
dGluZ0F1ZGlvU2VtYXBob3JlLnNpZ25hbCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9XTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVC
dWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3Jl
YXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxz
ZSwgTlVMTCwgTlVMTCwgZm9ybWF0LmdldCgpLCBzYW1wbGVDb3VudCwgdG9DTVRpbWUodGltZSks
IE5VTEwsICZzYW1wbGVCdWZmZXIpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGNyZWF0
ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIGF1dG8gYnVmZmVy
ID0gYWRvcHRDRihzYW1wbGVCdWZmZXIpOwogCi0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVh
dGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMoZm9ybWF0LmdldCgpLCBz
YW1wbGVDb3VudCk7Ci0gICAgaWYgKCFzYW1wbGVCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLSAg
ICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVy
TGlzdChzYW1wbGVCdWZmZXIuZ2V0KCksIGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkubGlzdCgpKTsK
LSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybjsKKyAgICBlcnJvciA9IENNU2FtcGxlQnVm
ZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3QoYnVmZmVyLmdldCgpLCBrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBkb3duY2FzdDxXZWJBdWRpb0J1
ZmZlckxpc3Q+KGRhdGEpLmxpc3QoKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgQ01T
YW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdCBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBi
dWZmZXI7Cit9CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2NrKTsKLSAg
ICBtX2F1ZGlvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShzYW1wbGVCdWZmZXIpKTsKK3ZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0
IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmIHRpbWUsIHNpemVfdCBzYW1wbGVDb3Vu
dCkKK3sKKyAgICBpZiAoYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZl
cihkYXRhLCBkZXNjcmlwdGlvbiwgdGltZSwgc2FtcGxlQ291bnQpKQorICAgICAgICBtX2F1ZGlv
Q29tcHJlc3Nvci0+YWRkU2FtcGxlQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSk7CiB9CiAKIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcoKQpAQCAtMzUwLDM1
ICs0MjcsNDAgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGlu
ZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKworICAgIGlm
IChtX3ZpZGVvQ29tcHJlc3NvcikKKyAgICAgICAgbV92aWRlb0NvbXByZXNzb3ItPmZpbmlzaCgp
OworICAgIGlmIChtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgbV9hdWRpb0NvbXByZXNzb3It
PmZpbmlzaCgpOworCiAgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKQogICAgICAgICByZXR1
cm47CiAgICAgQVNTRVJUKFttX3dyaXRlciBzdGF0dXNdID09IEFWQXNzZXRXcml0ZXJTdGF0dXNX
cml0aW5nKTsKLSAgICBpZiAobV92aWRlb0lucHV0KQotICAgICAgICBtX2ZpbmlzaFdyaXRpbmdW
aWRlb1NlbWFwaG9yZS53YWl0KCk7Ci0KLSAgICBpZiAobV9hdWRpb0lucHV0KQotICAgICAgICBt
X2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS53YWl0KCk7CiAKICAgICBtX2lzU3RvcHBpbmcg
PSB0cnVlOwotICAgIFttX3dyaXRlciBmaW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVy
Olt0aGlzLCB3ZWFrUHRyID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgewotICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrUHRyID0gV1RGTW92ZSh3ZWFrUHRyKSwgYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgIGlmICghd2Vha1B0cikKLSAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIG1faXNTdG9wcGluZyA9IGZhbHNlOwotICAgICAgICAgICAgaWYg
KG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgICAgICAgICAgbV9mZXRjaERh
dGFDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICBmbHVzaENvbXBy
ZXNzZWRTYW1wbGVCdWZmZXJzKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSgp
IG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgICAgICBtX2lzU3RvcHBlZCA9IGZhbHNlOwotICAgICAgICAgICAgbV9oYXNTdGFy
dGVkV3JpdGluZyA9IGZhbHNlOwotICAgICAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSB0
cnVlOwotICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG1fZmluaXNo
V3JpdGluZ1NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICB9XTsKLSAgICBtX2ZpbmlzaFdyaXRpbmdT
ZW1hcGhvcmUud2FpdCgpOworICAgICAgICBbbV93cml0ZXIgZmx1c2hdOworICAgICAgICBbbV93
cml0ZXIgZmluaXNoV3JpdGluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMg
PSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgaWYgKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBXVEZNb3ZlKG1fZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIG1f
ZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBjbGVh
cigpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH1dOworICAgIH0pOwogfQogCiB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTM5Miw2
ICs0NzQsMjQgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEIKICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIGlmICgh
bV9kYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNp
emUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNp
emUpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlmICghbV9kYXRhKSB7CisgICAgICAg
IG1fZGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBt
X2RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRF
TEVHQVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTQxNGRiYjU0OWNmNWEyZTUxNTdlOTIwYzZjNWFlNGJhMDYwZTY4MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShB
VkZPVU5EQVRJT04pCisKKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW5jbHVk
ZSA8VmlkZW9Ub29sYm94L1ZURXJyb3JzLmg+CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2Ft
cGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZVZUQ29t
cHJlc3Npb25TZXNzaW9uKiAgVlRDb21wcmVzc2lvblNlc3Npb25SZWY7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKENNVmlkZW9Db2RlY1R5cGUsIENN
QnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKyAgICB+
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAgICB2b2lkIGZpbmlzaCgpOworICAg
IHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBDTVNhbXBsZUJ1
ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVC
dWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSk7CisKKyAg
ICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2Fs
bGJhY2tPYmplY3QpOworCisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVm
ZmVyUmVmKTsKKyAgICBib29sIGluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERl
c2NyaXB0aW9uUmVmKTsKKworICAgIHN0YXRpYyB2b2lkIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFj
ayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2Ft
cGxlQnVmZmVyUmVmKTsKKworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1
ZXVlOworICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVl
OworICAgIFJldGFpblB0cjxWVENvbXByZXNzaW9uU2Vzc2lvblJlZj4gbV92dFNlc3Npb247CisK
KyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07CisKKyAgICBDTVZpZGVvQ29kZWNUeXBl
IG1fb3V0cHV0Q29kZWNUeXBlOworICAgIGZsb2F0IG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0
aW9uIHsgMi4wIH07CisgICAgdW5zaWduZWQgbV9leHBlY3RlZEZyYW1lUmF0ZSB7IDMwIH07Cit9
OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDhmZTQzMjk1ZWY1MmE2NzkwZmYxZGVjYWNhNmYzMGQ5
YmJiYWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTAsMCArMSwx
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVT
RShBVkZPVU5EQVRJT04pCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPENvcmVNZWRp
YS9Db3JlTWVkaWEuaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9y
dCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25TZXNzaW9uLmg+CisjaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KKworI2ltcG9ydCA8cGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBQQUw7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlx
dWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUsIENNQnVmZmVy
UXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KQorewor
ICAgIGF1dG8gY29tcHJlc3NvciA9IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I+KG5ldyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iob3V0cHV0Q29kZWNUeXBl
KSk7CisgICAgaWYgKCFjb21wcmVzc29yLT5pbml0aWFsaXplKGNhbGxiYWNrLCBjYWxsYmFja09i
amVjdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb21wcmVzc29yOwor
fQorCitWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcihDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlwZSkKKyAgICA6IG1fc2VyaWFsRGlz
cGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLlZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkgfQorICAgICwgbV9vdXRw
dXRDb2RlY1R5cGUgeyBvdXRwdXRDb2RlY1R5cGUgfQoreworfQorCitWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQoreworICAgIGlmICht
X3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9zZXJpYWxE
aXNwYXRjaFF1ZXVlKTsKK30KKworYm9vbCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6Omlu
aXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2Fs
bGJhY2tPYmplY3QpCit7CisgICAgQ01CdWZmZXJRdWV1ZVJlZiBvdXRwdXRCdWZmZXJRdWV1ZTsK
KyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVy
cygpLCAmb3V0cHV0QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHVuYWJsZSB0byBjcmVhdGUg
YnVmZmVyIHF1ZXVlICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIG1fb3V0cHV0QnVmZmVyUXVldWUgPSBvdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBDTUJ1ZmZl
clF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgY2FsbGJhY2ss
IGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hlbkRhdGFCZWNvbWVzUmVh
ZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKKworICAgIG1faXNFbmNvZGluZyA9IHRydWU7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5p
c2goKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAg
ICAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyhtX3Z0
U2Vzc2lvbi5nZXQoKSwga0NNVGltZUludmFsaWQpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRD
b21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0cHV0QnVm
ZmVyUXVldWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVk
aWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZU1hcmtF
bmRPZkRhdGEgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICAgICAgbV9pc0VuY29kaW5n
ID0gZmFsc2U7CisgICAgfSk7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Ojp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwgT1NTdGF0dXMg
c3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQorewor
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKHN0YXR1cywgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrIHN0YXR1cyBpcyAlZCIs
IHN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyAhPSBub0VycikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yICpjb21wcmVzc29yID0gc3RhdGljX2Nhc3Q8
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4ocmVmQ29uKTsKKworICAgIGF1dG8gZXJyb3Ig
PSBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZShjb21wcmVzc29yLT5tX291dHB1dEJ1ZmZlclF1ZXVlLmdl
dCgpLCBidWZmZXIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVh
bSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKK30KKworYm9vbCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZv
cm1hdERlc2NyaXB0aW9uKQoreworICAgIENNVmlkZW9EaW1lbnNpb25zIGRpbWVuc2lvbnMgPSBD
TVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25zKGZvcm1hdERlc2NyaXB0aW9uKTsK
KyNpZiBQTEFURk9STShJT1MpCisgICAgTlNEaWN0aW9uYXJ5ICplbmNvZGVyU3BlY2lmaWNhdGlv
bnMgPSBuaWw7CisjZWxzZQorICAgIE5TRGljdGlvbmFyeSAqZW5jb2RlclNwZWNpZmljYXRpb25z
ID0gQHsoX19icmlkZ2UgTlNTdHJpbmcgKilrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0Vu
YWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXI6QFlFU307CisjZW5kaWYKKworICAg
IFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHZ0U2Vzc2lvbjsKKyAgICBhdXRvIGVycm9yID0gVlRD
b21wcmVzc2lvblNlc3Npb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGltZW5zaW9ucy53
aWR0aCwgZGltZW5zaW9ucy5oZWlnaHQsIG1fb3V0cHV0Q29kZWNUeXBlLCAoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKWVuY29kZXJTcGVjaWZpY2F0aW9ucywgTlVMTCwgTlVMTCwgdmlkZW9Db21w
cmVzc2lvbkNhbGxiYWNrLCB0aGlzLCAmdnRTZXNzaW9uKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisgICAgbV92dFNlc3Npb24gPSBhZG9wdENG
KHZ0U2Vzc2lvbik7CisKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNz
aW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lLCBrQ0ZCb29sZWFu
VHJ1ZSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENvbXByZXNz
aW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgZXJy
b3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Np
b25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24sIChfX2JyaWRnZSBDRlR5
cGVSZWYpQChtX21heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbikpOworICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZy
YW1lSW50ZXJ2YWxEdXJhdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICBlcnJvciA9
IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblBy
b3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKUAobV9leHBl
Y3RlZEZyYW1lUmF0ZSkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0
cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBr
VlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworCisgICAgLy8gRklYTUU6IFNldCB2aWRlbyBjb21wcmVzc2lvbiByYXRlLgor
ICAgIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMobV92
dFNlc3Npb24uZ2V0KCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0
cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvblBy
ZXBhcmVUb0VuY29kZUZyYW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIHJldHVy
biBZRVM7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2Ft
cGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIW1fdnRTZXNz
aW9uKSB7CisgICAgICAgIGlmICghaW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVNhbXBsZUJ1ZmZl
ckdldEZvcm1hdERlc2NyaXB0aW9uKGJ1ZmZlcikpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVy
KGJ1ZmZlcik7CisgICAgYXV0byBwcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZl
ckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIpOworICAgIGF1dG8gZHVyYXRpb24gPSBD
TVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7CisgICAgYXV0byBlcnJvciA9IFZUQ29t
cHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUobV92dFNlc3Npb24uZ2V0KCksIGltYWdlQnVmZmVy
LCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGR1cmF0aW9uLCBOVUxMLCB0aGlzLCBOVUxMKTsKKyAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKK30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFk
ZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgZGlzcGF0Y2hf
c3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGlmICghbV9pc0VuY29kaW5n
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHByb2Nlc3NTYW1wbGVCdWZmZXIoYnVm
ZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVCdWZmZXJSZWYgVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVybiAoQ01TYW1w
bGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0
cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisKK1JldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJl
Zj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCkK
K3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9p
ZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0
KCkpKSkpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMGU3MmY0YTUzMDU5NzhiYTdiYzhiY2Fm
ODA5YWM2NGUzMDQxZjM5Li5mMDJhZWVkNjFiNzhhODliOWQxMjE3YThmZGNjNDM0NmI4Y2Q0MGJi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDItMDMgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgIERpc2FibGUgdGVzdHMgb24gYWxsIHBsYXRmb3JtcyBleGNlcHQg
dGhlIG9uZXMgc3VwcG9ydGluZyBBVkFzc2V0V3JpdGVyRGVsZWdhdGUuCisKKyAgICAgICAgKiBU
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbDoKKyAg
ICAgICAgUmVtb3ZlIHdlYiBhdWRpbyBnZW5lcmF0aW9uIHNpbmNlIHRoZXJlIHNlZW1zIHRvIGJl
IHNvbWUgdW5zdGFiaWxpdHkgaW4gd2ViIGF1ZGlvIC0+IHN0cmVhbSAtPiBtZWRpYSByZWNvcmRl
ci4KKyAgICAgICAgd2hpY2ggc2hvdWxkIGJlIGZpeGVkIGFzIGZvbGxvdy11cCBzcGVjaWZpYyBw
YXRjaGVzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTAyLTAyICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIGVkaXRpbmcvaW5wdXQv
Y29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sIGZhaWxzIG9uIG9wZW4gc291cmNlIE1vamF2ZSBi
b3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3MTFiMzJjODg1NWU0NDZkYzBhNTc0NTQ1MjcwOGJj
N2M1MDYwNjdlLi5kNzRmNjBlYWRmMTg5NDgzZjBlNzM4ZGQyZTdhNDVlZTUyZjY5MGI4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTMzMjQsNyArMzMyNCw5IEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1h
bmNlL3RleHR1cmVzL2NvcHktdGV4LWltYWdlLTJkLWZvcm1hdHMuaHRtbCBbIFNraXAgXQogd2Vi
Z2wvMS4wLjMvY29uZm9ybWFuY2UvY2FudmFzL3JhcGlkLXJlc2l6aW5nLmh0bWwgWyBTa2lwIF0K
IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZHJhdy1idWZmZXJzLmh0
bWwgWyBTa2lwIF0KIAotd2Via2l0Lm9yZy9iLzE5NzY3MyBodHRwL3dwdC9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS5odG1sIFsgUGFzcyBG
YWlsdXJlIFRpbWVvdXQgXQorIyBOb3Qgc3VwcG9ydGVkIGJ5IGRlZmF1bHQKK2h0dHAvd3B0L21l
ZGlhcmVjb3JkZXIgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVk
aWFjYXB0dXJlLXJlY29yZCBbIFNraXAgXQogCiAjIFRvIGFpZCB0cmFuc2l0aW9uIHRvIEFOR0xF
IGJhY2tlbmQgZm9yIFdlYkdMLCBza2lwIGFsbCBvZiBXZWJHTCAyIHRlc3RzIGZvciBub3cuIAog
IyBSZS1lbmFibGUgYXMgZWFjaCBjaHVuayBvZiB0ZXN0cyBhcmUgdmVyaWZpZWQgd2l0aCBBTkdM
RSBiYWNrZW5kLgpAQCAtMzQ5NSw0ICszNDk3LDQgQEAgd2Via2l0Lm9yZy9iLzIwNjc1MyBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYmFja2dyb3VuZHMvZmlyc3QtbGUK
IAogd2Via2l0Lm9yZy9iLzIwNjU3OCBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWJhY2tncm91bmRzL2FuaW1hdGlvbnMvYm9yZGVyLWltYWdlLXdpZHRo
LWludGVycG9sYXRpb24uaHRtbCBbIENyYXNoIF0KIHdlYmtpdC5vcmcvYi8yMDY1NzkgWyBEZWJ1
ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1iYWNrZ3JvdW5kcy9i
YWNrZ3JvdW5kLXNpemUvdmVjdG9yL3plcm8taGVpZ2h0LXJhdGlvLWF1dG8tNXB4Lmh0bWwgWyBD
cmFzaCBdCi13ZWJraXQub3JnL2IvMjA2NTc5IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtYmFja2dyb3VuZHMvYmFja2dyb3VuZC1zaXplL3ZlY3Rvci96
ZXJvLXdpZHRoLXJhdGlvLWF1dG8tNXB4Lmh0bWwgWyBDcmFzaCBdClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQord2Via2l0Lm9yZy9iLzIwNjU3OSBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWJhY2tncm91bmRzL2JhY2tncm91bmQtc2l6ZS92ZWN0
b3IvemVyby13aWR0aC1yYXRpby1hdXRvLTVweC5odG1sIFsgQ3Jhc2ggXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlv
LXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFi
bGUtZ3B1cHJvY2Vzcy5odG1sCmluZGV4IDMzMzA2ZGU3OTQ3YmJiOTI1NzM5NGMzYmExOTYyMDFi
MDU4NDc4OGIuLjg4MDE0ODY1N2UyNWRkZTMzY2IxMDkzNDZkNmNiZWFhYjdmOWNlZmIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1B
Vi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8t
ZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwKQEAgLTU2LDE3ICs1Niw3IEBACiAgICAgfQog
CiAgICAgYXN5bmNfdGVzdCh0ID0+IHsKLSAgICAgICAgY29uc3QgYWMgPSBuZXcgQXVkaW9Db250
ZXh0KCk7Ci0gICAgICAgIGNvbnN0IG9zYyA9IGFjLmNyZWF0ZU9zY2lsbGF0b3IoKTsKLSAgICAg
ICAgY29uc3QgZGVzdCA9IGFjLmNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKLSAgICAg
ICAgY29uc3QgYXVkaW8gPSBkZXN0LnN0cmVhbTsKLSAgICAgICAgb3NjLmNvbm5lY3QoZGVzdCk7
Ci0KICAgICAgICAgY29uc3QgdmlkZW8gPSBjcmVhdGVWaWRlb1N0cmVhbSgpOwotICAgICAgICBh
c3NlcnRfZXF1YWxzKHZpZGVvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAwLCAidmlkZW8gbWVk
aWFzdHJlYW0gc3RhcnRzIHdpdGggbm8gYXVkaW8gdHJhY2siKTsKLSAgICAgICAgYXNzZXJ0X2Vx
dWFscyhhdWRpby5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwgMSwgImF1ZGlvIG1lZGlhc3RyZWFt
IHN0YXJ0cyB3aXRoIG9uZSBhdWRpbyB0cmFjayIpOwotICAgICAgICB2aWRlby5hZGRUcmFjayhh
dWRpby5nZXRBdWRpb1RyYWNrcygpWzBdKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWRlby5n
ZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwgMSwgInZpZGVvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRo
IG9uZSBhdWRpbyB0cmFjayIpOwogICAgICAgICBjb25zdCByZWNvcmRlciA9IG5ldyBNZWRpYVJl
Y29yZGVyKHZpZGVvKTsKICAgICAgICAgbGV0IG1vZGUgPSAwOwogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDVkNGI4Yjg2MjA0MTJkYmIxNDI2YTBiYTA3
MDEzZDc4NmYyOTBmMDMuLjUxNDJhZDgyYTZkODQ2MjQyOGRlYWFmNzY1YmYwZDRmZDEzNzYyY2Mg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMjc1LDYg
KzMyNzUsOSBAQCBmYXN0L2F0dGFjaG1lbnQvYXR0YWNobWVudC10aXRsZS13aXRoLXJ0bC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIGZhc3QvZm9ybXMvdGV4dGZpZWxkLW5vLWxpbmVicmVh
ay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKK2h0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBQ
YXNzIF0gCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1yZWNv
cmQgWyBQYXNzIF0KKwogIyA8cmRhcjovL3Byb2JsZW0vNDc4NTUxNzQ+IFJFR1JFU1NJT04gKGlP
UyAxMz8pOiBMYXlvdXQgdGVzdHMgaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
LWRhdGFhdmFpbGFibGUuaHRtbCBhbmQgaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLW1vY2stZGF0YWF2YWlsYWJsZS5odG1sIGFyZSBmYWlsaW5nCiBodHRwL3dwdC9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXItZGF0YWF2YWlsYWJsZS5odG1sIFsgRmFpbHVyZSBdCiBodHRw
L3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItbW9jay1kYXRhYXZhaWxhYmxlLmh0bWwg
WyBGYWlsdXJlIF0KQEAgLTM0NzIsNCArMzQ3NSw0IEBAIHdlYmtpdC5vcmcvYi8yMDY4OTcgWyBE
ZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1iYWNrZ3JvdW5k
CiB3ZWJraXQub3JnL2IvMjA2ODk3IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtYmFja2dyb3VuZHMvYmFja2dyb3VuZC1zaXplL3ZlY3Rvci90YWxsLS1h
dXRvLTMycHgtLW5vbnBlcmNlbnQtd2lkdGgtcGVyY2VudC1oZWlnaHQtdmlld2JveC5odG1sIFsg
U2tpcCBdCiB3ZWJraXQub3JnL2IvMjA2ODk3IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtYmFja2dyb3VuZHMvYmFja2dyb3VuZC1zaXplL3ZlY3Rvci90
YWxsLS1hdXRvLTMycHgtLW5vbnBlcmNlbnQtd2lkdGgtb21pdHRlZC1oZWlnaHQuaHRtbCBbIFNr
aXAgXQogCi13ZWJraXQub3JnL2IvMjA3MDU3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvSW5kZXhlZERCL2tleXBhdGgtc3BlY2lhbC1pZGVudGlmaWVycy5odG0gWyBQYXNzIEZhaWx1
cmUgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcvYi8yMDcwNTcgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIva2V5cGF0aC1zcGVjaWFsLWlk
ZW50aWZpZXJzLmh0bSBbIFBhc3MgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDgyNGVlN2Y0YTc1ZDM4MGNjODZjMmZlMzFjZGM3ZDMxNjVm
MTQ4YmIuLjhmYWM3ZGQ0ODFlN2M2NjEyNmUyZDUxNDE5ZGZkMTkyZTdmMDBhYTQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODI4LDYgKzE4MjgsOSBA
QCB3ZWJraXQub3JnL2IvMTk1NjM1IHNjcm9sbGluZ2Nvb3JkaW5hdG9yL21hYy9tdWx0aXBsZS1m
aXhlZC5odG1sIFsgUGFzcyBUaW1lb3V0CiBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9kZXNpZ24t
c3lzdGVtLXVpLTE1Lmh0bWwgWyBQYXNzIF0KIFsgQ2F0YWxpbmErIF0gZmFzdC90ZXh0L2Rlc2ln
bi1zeXN0ZW0tdWktMTYuaHRtbCBbIFBhc3MgXQogCitbIENhdGFsaW5hKyBdIGh0dHAvd3B0L21l
ZGlhcmVjb3JkZXIgWyBQYXNzIF0gCitbIENhdGFsaW5hKyBdIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFBhc3MgXQorCiB3ZWJraXQub3JnL2Iv
MjAwMTI4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC90aGUtdmlkZW8tZWxlbWVudC92aWRlb190aW1ldXBkYXRlX29uX3NlZWsu
aHRtbCBbIFRpbWVvdXQgUGFzcyBdCiAKICMgcmRhcjovLzU1NDA1ODUxIChbIG1hY09TIF0gTGF5
b3V0IHRlc3RzIHdlYmdwdS8qLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYXJlIGZsYWt5IGZhaWx1cmVz
LiAoMjAxODI3KSkKQEAgLTE5NzIsNCArMTk3NSw0IEBAIHdlYmtpdC5vcmcvYi8yMDcwNTcgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIva2V5cGF0aC1zcGVjaWFsLWlk
CiAKIHdlYmtpdC5vcmcvYi8yMDcwNjIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9t
ZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcmVwbGF5Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13
ZWJraXQub3JnL2IvMjA2NDg0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29j
a2V0cy9jb29raWVzLzAwNy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCit3ZWJraXQub3JnL2IvMjA2NDg0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2Vic29ja2V0cy9jb29raWVzLzAwNy5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389528</attachid>
            <date>2020-02-03 09:38:51 -0800</date>
            <delta_ts>2020-02-04 01:39:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206582-20200203183849.patch</filename>
            <type>text/plain</type>
            <size>152253</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc5ZGI5ZWQ2YzIwNGVkNWYxNTEzOWI3
N2FiZTI3ZDEyZWY0Y2YyODQuLmY5NDA2N2FhOTgzMTQxMWJkYjkzZTcwMTg2NjJlZDJkMTI0NTYw
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDItMDMgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTAxLTMxICBE
b24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBB
ZGQgX1BSSVZBVEVfTElCUkFSSUVTIHRvIGZyYW1ld29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI5NzY4Mjc1
YjEzZGU5OGMyMTdhOTA3YzQ5ZDU0M2FkOTg1NjkwZTAuLjhmZGE2YTg5NzkzYjQ5YmJjNzQ4Mzg1
ZWMyZjcwMGMwOWVlN2MyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OSBAQAorMjAyMC0wMi0w
MyAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBV
c2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU4OTg1MzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBhbGxvd3MgdG8gZ3Jh
YiByZWNvcmRlZCBkYXRhIHdoZW5ldmVyIHdhbnRlZC4KKyAgICAgICAgVGhpcyBkZWxlZ2F0ZSBy
ZXF1aXJlcyBwYXNzaW5nIGNvbXByZXNzZWQgc2FtcGxlcyB0byBBVkFzc2V0V3JpdGVyLgorICAg
ICAgICBJbXBsZW1lbnQgdmlkZW8gZW5jb2RpbmcgYW5kIGF1ZGlvIGVuY29kaW5nIGluIGRlZGlj
YXRlZCBjbGFzc2VzIGFuZCB1c2UgdGhlc2UgY2xhc3NlcyBiZWZvcmUgYWRkaW5nIGJ1ZmZlcnMg
dG8gQVZBc3NldFdyaXRlci4KKyAgICAgICAgSW5zdGFudGlhdGUgcmVhbCB3cml0ZXIgb25seSBm
b3IgcGxhdGZvcm1zIHN1cHBvcnRpbmcgQVZBc3NldFdyaXRlckRlbGVnYXRlLCBzaW5jZSBpdCBp
cyBub3Qgc3VwcG9ydGVkIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpj
cmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lv
blZUOjpzZXRTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0
aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
aW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZv
ckF1ZGlvRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZl
cldpdGhOdW1QYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6YXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYyk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVt
T3V0cHV0UGFja2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2Ft
cGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJBVkFzc2V0V3JpdGVyRGVsZWdh
dGUgaW5pdFdpdGhXcml0ZXI6XSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBhc3NldFdy
aXRlcjpkaWRQcm9kdWNlRnJhZ21lbnRlZEhlYWRlckRhdGE6XSk6CisgICAgICAgICgtW1dlYkFW
QXNzZXRXcml0ZXJEZWxlZ2F0ZSBhc3NldFdyaXRlcjpkaWRQcm9kdWNlRnJhZ21lbnRlZE1lZGlh
RGF0YTpmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0Ol0pOgorICAgICAgICAoLVtXZWJBVkFzc2V0
V3JpdGVyRGVsZWdhdGUgY2xvc2VdKToKKyAgICAgICAgKC1bV2ViQVZBc3NldFdyaXRlckRlbGVn
YXRlIGZpbmlzaF0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6Y29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZl
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1
ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBy
b2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkQXVk
aW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1
ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRp
b25NYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmFwcGVuZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZm
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVh
cik6CisgICAgICAgIChXZWJDb3JlOjpjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3Rh
bXApOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVu
ZFZpZGVvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZEF1
ZGlvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5oLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6flZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0Q29tcHJlc3Npb25TZXNzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBs
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmFkZFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIpOgorCiAyMDIw
LTAyLTAzICBKb25hdGhhbiBLaW5nc3RvbiAgPGpvbmF0aGFuQGpvb3BlZC5jby51az4KIAogICAg
ICAgICBDcmFzaCBpbiBXZWJLaXRBY2Nlc3NpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBlOTdl
MjhjMzA3NjNkNGVhMzZkM2FiNjc2N2E5MmQyMTM3OGZiZmQ0Li4yODZiOGNhZGIxNjY2OTk5Nzcz
NjhkMTAwMTZmNTIxZjcwNWYwZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAyMC0wMi0wMyAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJl
Y29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDY1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQWRk
IHNvZnQgbGluayBtYWNyb3MgZm9yIFZpZGVvVG9vbGJveCBhbmQgQXVkaW9Ub29sYm94LgorCisg
ICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFsL2Nm
L0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL0F1ZGlv
VG9vbGJveFNvZnRMaW5rLmg6IEFkZGVkLgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0
TGluay5jcHA6CisgICAgICAgICogcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg6CisgICAgICAg
ICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFs
L2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg6IEFkZGVkLgorCiAyMDIwLTAxLTMxICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBzcGVjaWZ5aW5nIGJhY2tncm91bmQgY29sb3JzIHdoZW4gc2V0dGluZyBtYXJrZWQgdGV4dApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA0MDZiMzFkZjA3ZjIzMmRiM2ZlYjA4N2UzYTNlMTk1MWYzMGRjYzBmLi5mYjcw
YzU4NTU2NjRhN2UwMGI3M2MxZGM5NTc2MGZiMThmNzI5NzE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDIwLTAyLTAzICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1l
ZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjU4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg5ODUzNjg+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIFJlbW90ZU1lZGlh
UmVjb3JkZXIgb25seSBmb3Igc3lzdGVtcyBzdXBwb3J0aW5nIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVN
ZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5j
cHA6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisKIDIwMjAt
MDItMDEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAg
ICAgU2lsZW5jZSBjb21waWxlciB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAxNzVi
NmY1ZWE4ZWRjN2FkMWZkMmMxZjJlN2Y4OGYwZWU3YjI2ZjY4Li4wYzFhZDU3NWNhZTc1MTUxNDg3
OGIwYTU0NDUxMzNhYzhiYTk5ZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtNTY2LDYgKzU2
NiwxMCBAQAogI2RlZmluZSBIQVZFX09TX1NJR05QT1NUIDEKICNlbmRpZgogCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8
IFBMQVRGT1JNKElPU19GQU1JTFkpCisjZGVmaW5lIEhBVkVfQVZBU1NFVFdSSVRFUkRFTEVHQVRF
IDEKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKFdBVENI
T1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxF
X1RJVExFXzAgMQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxFX1RJVExFXzQgMQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCBmY2IwOTdlZTc1OWZmNWRmYjc2NDk4ZDUwOTBl
NGNjY2MwYzlkNWE2Li5mNTRkZjcxYTRmNDNiM2U2ZjlkNDhiYzFjZDc0NDM3Njg3MWU5YjdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzQsNyArMzQsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IE1lZGlh
UmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoY29uc3QgTWVkaWFT
dHJlYW1Qcml2YXRlJiBzdHJlYW0pCiB7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUp
CiAgICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlKHN0cmVhbSk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOworICAgIHJldHVybiBudWxscHRyOwor
I2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBhNDE5YWM5OGI0ZDE5MmM5ZjM2MWRiMTk3NzNmMmI2ZmI4ZTBj
OWNhLi4zZjgxNDZhZDE1NWFmY2MwODU4ZDY4YjNkMjc0ZTM5MmUwZmY0N2U4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTUs
NiArMTE1LDEwIEBACiAJCTJFMTM0MkNDMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5r
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTEzNDJD
QTIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5oICovOyB9OwogCQkyRTEzNDJDRDIx
NUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNCMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtp
dFNvZnRMaW5rLm1tICovOyB9OwogCQkzMTMwOEIxNDIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVt
UHJldmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzEzMDhCMTMyMEEyMTcwNTAwM0ZCOTI5IC8qIFN5c3RlbVByZXZpZXdTUEkuaCAqLzsgfTsK
KwkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU5OTUxMjNE
QUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi87IH07CisJCTQxNkU5
OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTIyM0RBRTZCRTAwRTg3
MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi87IH07CisJCTQxNkU5OTU3MjNEQUVGRjgw
MEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlk
ZW9Ub29sYm94U29mdExpbmsuY3BwICovOyB9OworCQk0MTZFOTk1ODIzREFFRkY4MDBFODcxQ0Ig
LyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hT
b2Z0TGluay5oICovOyB9OwogCQk0NDI5NTZDRDIxOEE3MkRGMDA4MERCNTQgLyogUmV2ZWFsU1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDI5NTZD
QzIxOEE3MkRFMDA4MERCNTQgLyogUmV2ZWFsU1BJLmggKi87IH07CiAJCTQ0NTBGQzlGMjFGNUY2
MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlEMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlj
a0xvb2tTb2Z0TGluay5tbSAqLzsgfTsKIAkJNDQ1MEZDQTAyMUY1RjYwMjAwNERGQTU2IC8qIFF1
aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsuaCAq
LzsgfTsKQEAgLTI5MSw2ICsyOTUsMTAgQEAKIAkJMkUxMzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8q
IFVJS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBVSUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTMwOEIx
MzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
eXN0ZW1QcmV2aWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MTE5QTc4
MjBDQ0I1RkYwMDJDNkRDOSAvKiBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29u
ZmlnOyBwYXRoID0gV2ViS2l0VGFyZ2V0Q29uZGl0aW9uYWxzLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyogQXVkaW9Ub29s
Ym94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVk
aW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZF
OTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9v
bGJveFNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZp
ZGVvVG9vbGJveFNvZnRMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2
RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5rLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Mjk1NkNDMjE4QTcyREUwMDgwREI1NCAvKiBSZXZlYWxT
UEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV2ZWFsU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlEMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlj
a0xvb2tTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFF1aWNrTG9va1NvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDUw
RkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tMb29rU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTUyNCw4ICs1MzIsMTIgQEAKIAkJMENGOTlDQTUxRjczODQxQzAwN0VF
NzkzIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwICov
LAorCQkJCTQxNkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5o
ICovLAogCQkJCTBDRjk5Q0E2MUY3Mzg0MzYwMDdFRTc5MyAvKiBDb3JlTWVkaWFTb2Z0TGluay5j
cHAgKi8sCiAJCQkJMENGOTlDQTcxRjczODQzNzAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5r
LmggKi8sCisJCQkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRM
aW5rLmNwcCAqLywKKwkJCQk0MTZFOTk1NjIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94
U29mdExpbmsuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtNzE1LDYgKzcyNyw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk1N0ZEMzE4QjIy
QjM1OTg5MDA4RDBFOEIgLyogQXBwU1NPU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
NkNBOUQ2MjJCODU0QUIwMDMwMTQzQyAvKiBBcHBTU09TUEkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkQwMkU5M0MyMDU2RkFBNzAwQTEzNzk3IC8qIEF1ZGlvVG9vbGJveFNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTEwNzgyMkI0NTZGNTAwRjQxMEM4IC8qIEF1dGhL
aXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3N0U4N0IyMjI2QTQ2MDMwMEEyQUZGMCAvKiBB
VkZvdW5kYXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzgsNiArODUxLDcgQEAK
IAkJCQkyRTEzNDJDQzIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEM1QUY5MjIxRjQzQTRDNzAwMkVBQzAyIC8qIFVJS2l0U1BJLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwQzJEQTE0NzFGM0JFQjQ5MDBEQkMzMTcgLyogVVJMRm9ybWF0dGluZ1NQ
SS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTk5NTgyM0RBRUZGODAwRTg3MUNCIC8qIFZpZGVv
VG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1OTFGM0JFQjQ5MDBE
QkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTA4
MjZGOTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
QEAgLTkzMCw2ICs5NDQsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJ
CWZpbGVzID0gKAogCQkJCTU3RkQzMThBMjJCMzU5M0UwMDhEMEU4QiAvKiBBcHBTU09Tb2Z0TGlu
ay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNkU5OTUzMjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRp
b1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzdFODdCMTIyNkE0NjAy
MDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
QzVGRkYwRjFGNzhEOURBMDA5RUZGMUEgLyogQ2xvY2tDTS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTBDRjk5Q0E4MUY3Mzg0MzcwMDdFRTc5MyAvKiBDb3JlTWVkaWFTb2Z0TGluay5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTk1Niw2ICs5NzEsNyBAQAogCQkJCUEzQUI2RTU3MUYzRDFEREIwMDlDMTRC
MSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzQUI2RTY1
MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkUxMzQyQ0QyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gaW4g
U291cmNlcyAqLywKKwkJCQk0MTZFOTk1NzIzREFFRkY4MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94
U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwODI2RkExRjU3NjI5MjAwNDc3MkFD
IC8qIFdlYlBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjZjU1MDU2YWNkYTZmNTY1
M2FkYzdlMTdlYzAyYTJkODI2ZTQ0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcApAQCAtMCwwICsxLDQxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBVkZPVU5EQVRJT04p
CisKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxB
dWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQuaD4KKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5o
PgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gpCisK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0Zv
cm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVydHlJRCBpblByb3Bl
cnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGluU3BlY2lmaWVyLCBV
SW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRhKSwgKGluUHJv
cGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9wZXJ0eURhdGFTaXpl
LCBvdXRQcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBB
dWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0IEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91
dEF1ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBv
dXRBdWRpb0NvbnZlcnRlcikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1
ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0Nv
bnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Q
cm9wZXJ0eUlELCBVSW50MzIgaW5Qcm9wZXJ0eURhdGFTaXplLCBjb25zdCB2b2lkKiBpblByb3Bl
cnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGluUHJvcGVydHlEYXRh
U2l6ZSwgaW5Qcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVk
aW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlE
IGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91dFByb3Bl
cnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlvUHJvcGVydHlEYXRh
U2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKworI2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5r
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDczMTE4NzE3NGFjMTU1NDQzNzFkZWUwM2IxNDMyZTNlNjU2MzJlMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExp
bmsuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
VVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZU
X0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gpCisKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlckdl
dFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIs
IEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiogaW9Qcm9wZXJ0
eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Q
cm9wZXJ0eUlELCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkpCisjZGVmaW5l
IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29u
dmVydGVyR2V0UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVk
aW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NTdGF0dXMsIChjb25zdCBBdWRpb1N0cmVh
bUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0LCBjb25zdCBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQsIEF1ZGlvQ29udmVydGVyUmVmKiBvdXRB
dWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwgaW5EZXN0aW5hdGlvbkZvcm1hdCwgb3V0
QXVkaW9Db252ZXJ0ZXIpKQorI2RlZmluZSBBdWRpb0NvbnZlcnRlck5ldyBzb2Z0TGlua19BdWRp
b1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJOZXcKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5LCBPU1N0YXR1cywg
KEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVy
dHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblByb3BlcnR5RGF0YVNpemUsIGNvbnN0IHZvaWQq
IGluUHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW5Qcm9w
ZXJ0eURhdGFTaXplLCBpblByb3BlcnR5RGF0YSkpCisjZGVmaW5lIEF1ZGlvQ29udmVydGVyU2V0
UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0Zv
cm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVydHlJRCBpblByb3Bl
cnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGluU3BlY2lmaWVyLCBV
SW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRhKSwgKGluUHJv
cGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9wZXJ0eURhdGFTaXpl
LCBvdXRQcm9wZXJ0eURhdGEpKQorI2RlZmluZSBBdWRpb0Zvcm1hdEdldFByb3BlcnR5IHNvZnRM
aW5rX0F1ZGlvVG9vbGJveF9BdWRpb0Zvcm1hdEdldFByb3BlcnR5CisKKworI2VuZGlmIC8vIFVT
RShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlh
U29mdExpbmsuY3BwCmluZGV4IDJiODIzMTM2NWNiOWFhZjkzNTk3ZjE4N2ZhMjJjMTQ5YmU0MmZi
M2EuLmRjOGFiNDFjYmM3OGJhMTljZWNkZGE3ZmNmYTcwZDkzNTA5M2MyM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCkBAIC00Niw2ICs0
Niw3IEBAIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSkKIAog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZm
ZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYgdGhlU291cmNlQnVm
ZmVyLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgdm9pZCogZGVzdGlu
YXRpb24pLCAodGhlU291cmNlQnVmZmVyLCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5ndGgsIGRlc3Rp
bmF0aW9uKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBD
TUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aCwgc2l6ZV90LCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVC
dWZmZXIpLCAodGhlQnVmZmVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcywgT1NTdGF0dXMsIChjb25z
dCB2b2lkKiBzb3VyY2VCeXRlcywgQ01CbG9ja0J1ZmZlclJlZiBkZXN0aW5hdGlvbkJ1ZmZlciwg
c2l6ZV90IG9mZnNldEludG9EZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5ndGgpLCAoc291cmNl
Qnl0ZXMsIGRlc3RpbmF0aW9uQnVmZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRpb24sIGRhdGFMZW5n
dGgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNRm9y
bWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRpY3Rpb25hcnlSZWYsIChDTUZvcm1hdERl
c2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRUeXBlSUQsIENGVHlwZUlELCAodm9p
ZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENN
U2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciwgQ01CbG9ja0J1ZmZlclJlZiwgKENNU2FtcGxlQnVm
ZmVyUmVmIHNidWYpLCAoc2J1ZikpCkBAIC0xMzYsNiArMTM3LDcgQEAgU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRCdWZmZXJDb3Vu
dCwgQ01JdGUKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBD
TUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSwgKENNQnVm
ZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRFbmRQcmVzZW50YXRpb25UaW1lU3Rh
bXAsIENNVGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJbnN0YWxs
VHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYg
cXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNrLCB2b2lk
KiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmlnZ2VyQ29u
ZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dl
clRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywgdHJpZ2dl
clJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dlclRva2Vu
T3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1
ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVl
KSwgKHF1ZXVlKSkKIAogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVk
aWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5LCBDRlN0cmluZ1JlZikKIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVBdHRh
Y2htZW50S2V5X05vdFN5bmMsIENGU3RyaW5nUmVmKQpAQCAtMTYzLDYgKzE2NSw5IEBAIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvU2FtcGxlQnVm
ZmVyQ3JlYXRlV2l0aFBhY2tlCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdCwg
T1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDRkFsbG9jYXRvclJlZiBiYnVmU3Ry
dWN0QWxsb2NhdG9yLCBDRkFsbG9jYXRvclJlZiBiYnVmTWVtb3J5QWxsb2NhdG9yLCB1aW50MzJf
dCBmbGFncywgY29uc3QgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0KSwgKHNidWYsIGJidWZT
dHJ1Y3RBbGxvY2F0b3IsIGJidWZNZW1vcnlBbGxvY2F0b3IsIGZsYWdzLCBidWZmZXJMaXN0KSkK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1
ZmZlclNldERhdGFSZWFkeSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNi
dWYpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQXVk
aW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxv
Y2F0b3IsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogYXNiZCwgc2l6ZV90IGxh
eW91dFNpemUsIGNvbnN0IEF1ZGlvQ2hhbm5lbExheW91dCogbGF5b3V0LCBzaXplX3QgbWFnaWND
b29raWVTaXplLCBjb25zdCB2b2lkKiBtYWdpY0Nvb2tpZSwgQ0ZEaWN0aW9uYXJ5UmVmIGV4dGVu
c2lvbnMsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiogb3V0RGVzYyksIChhbGxvY2F0b3Is
IGFzYmQsIGxheW91dFNpemUsIGxheW91dCwgbWFnaWNDb29raWVTaXplLCBtYWdpY0Nvb2tpZSwg
ZXh0ZW5zaW9ucywgb3V0RGVzYykpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUws
IENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUsIGNvbnN0
IHZvaWQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MsIHNpemVfdCogc2l6ZU91
dCksIChkZXNjLCBzaXplT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVjb2RhYmxlRm9y
bWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRp
b25SZWYgZGVzYyksIChkZXNjKSkKKwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrLCBDTUNsb2NrUmVmLCAodm9pZCks
ICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xv
Y2tHZXRUaW1lLCBDTVRpbWUsIChDTUNsb2NrUmVmIGNsb2NrKSwgKGNsb2NrKSkKIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNhbGxG
b3JFYWNoU2FtcGxlLCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIE9TU3RhdHVz
ICgqIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBjYWxsYmFjaykoIENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZUJ1ZmZlciwgQ01JdGVtQ291bnQgaW5kZXgsIHZvaWQgKnJlZmNvbiksIHZvaWQg
KnJlZmNvbiksIChzYnVmLCBjYWxsYmFjaywgcmVmY29uKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRleCAyNjhkMTY3ZjI3ZDZkM2FiYmZmNTkz
NTI2N2ZjMjIyMzkxMDEwZTNkLi5hMGM3MzI5MjYyZTBiMDZjYmI2YzM2ZDgyODQyZjJmZDZmMWY4
NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRM
aW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5o
CkBAIC00OSw2ICs0OSw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcywgT1NTdGF0CiAjZGVmaW5lIENNQmxv
Y2tCdWZmZXJDb3B5RGF0YUJ5dGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyQ29w
eURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEs
IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXplX3QsIChDTUJsb2NrQnVmZmVyUmVmIHRo
ZUJ1ZmZlciksICh0aGVCdWZmZXIpKQogI2RlZmluZSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0
aCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyUmVwbGFj
ZURhdGFCeXRlcywgT1NTdGF0dXMsIChjb25zdCB2b2lkKiBzb3VyY2VCeXRlcywgQ01CbG9ja0J1
ZmZlclJlZiBkZXN0aW5hdGlvbkJ1ZmZlciwgc2l6ZV90IG9mZnNldEludG9EZXN0aW5hdGlvbiwg
c2l6ZV90IGRhdGFMZW5ndGgpLCAoc291cmNlQnl0ZXMsIGRlc3RpbmF0aW9uQnVmZmVyLCBvZmZz
ZXRJbnRvRGVzdGluYXRpb24sIGRhdGFMZW5ndGgpKQorI2RlZmluZSBDTUJsb2NrQnVmZmVyUmVw
bGFjZURhdGFCeXRlcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRh
Qnl0ZXMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUZv
cm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9uYXJ5UmVmLCAoQ01Gb3JtYXRE
ZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQogI2RlZmluZSBDTUZvcm1hdERlc2NyaXB0aW9u
R2V0RXh0ZW5zaW9ucyBzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4
dGVuc2lvbnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBD
TVNhbXBsZUJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQsICh2b2lkKSwgKCkpCkBAIC0yMjcsNiAr
MjI5LDggQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENN
QnVmZmVyUXVldWVHZXRFbmRQcmVzZW50YXRpb25UaW0KICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUdl
dEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CdWZmZXJRdWV1
ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2Vy
VGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUsIENNQnVmZmVyUXVl
dWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNrLCB2b2lkKiB0cmlnZ2VyUmVmY29uLCBD
TUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmlnZ2VyQ29uZGl0aW9uLCBDTUl0ZW1Db3Vu
dCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKiB0cmlnZ2VyVG9r
ZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywgdHJpZ2dlclJlZmNvbiwgdHJpZ2dlckNv
bmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dlclRva2VuT3V0KSkKICNkZWZpbmUgQ01C
dWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQgc29mdExpbmtfQ29y
ZU1lZGlhX0NNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkCitT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1
ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1
ZSkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIHNvZnRMaW5rX0NvcmVNZWRp
YV9DTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YQogCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERpc3BsYXks
IENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxh
eSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5KCkKQEAg
LTI1Niw2ICsyNjAsOSBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVN
ZWRpYSwga0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZAogI2RlZmluZSBrQ01UaW1l
YmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkIGdldF9Db3JlTWVkaWFfa0NNVGltZWJhc2VOb3Rp
ZmljYXRpb25fVGltZUp1bXBlZCgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUws
IENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29u
c3VtZWQsIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlm
aWNhdGlvbl9CdWZmZXJDb25zdW1lZCBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckNvbnN1
bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkKCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2lj
Q29va2llLCBjb25zdCB2b2lkKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjLCBz
aXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCkpCisjZGVmaW5lIENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
UEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVz
Y3JpcHRpb24sIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiAqLCAoQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVmaW5lIENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24gc29mdExpbmtfQ29yZU1lZGlhX0NN
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24KIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ3JlYXRl
V2l0aE1lbW9yeUJsb2NrLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIHN0cnVjdHVyZUFsbG9j
YXRvciwgdm9pZCogbWVtb3J5QmxvY2ssIHNpemVfdCBibG9ja0xlbmd0aCwgQ0ZBbGxvY2F0b3JS
ZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tCdWZmZXJDdXN0b21CbG9ja1NvdXJjZSog
Y3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
LCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZmZXJSZWYqIGJsb2NrQnVmZmVy
T3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgbWVtb3J5QmxvY2ssIGJsb2NrTGVuZ3RoLCBibG9j
a0FsbG9jYXRvciwgY3VzdG9tQmxvY2tTb3VyY2UsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwg
ZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSkKQEAgLTI2NCw2ICsyNzEsOCBAQCBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1
ZmZlckxpc3RXaQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpdGhS
ZXRhaW5lZEJsb2NrQnVmZmVyIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldEF1
ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzLCBD
TUl0ZW1Db3VudCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCiAjZGVmaW5lIENN
U2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZm
ZXJHZXROdW1TYW1wbGVzCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVN
ZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdCwg
Y29uc3QgQXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVm
IGRlc2MpLCAoZGVzYykpCisjZGVmaW5lIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hl
c3REZWNvZGFibGVGb3JtYXQgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5n
ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNU2FtcGxlQnVmZmVyUmVm
IHNidWYsIENGUmFuZ2Ugc2FtcGxlUmFuZ2UsIENNU2FtcGxlQnVmZmVyUmVmKiBzQnVmT3V0KSwg
KGFsbG9jYXRvciwgc2J1Ziwgc2FtcGxlUmFuZ2UsIHNCdWZPdXQpKQogI2RlZmluZSBDTVNhbXBs
ZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1w
bGVCdWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2UKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVNpemVBcnJheSwg
T1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDTUl0ZW1Db3VudCBzaXplQXJyYXlF
bnRyaWVzLCBzaXplX3QqIHNpemVBcnJheU91dCwgQ01JdGVtQ291bnQqIHNpemVBcnJheUVudHJp
ZXNOZWVkZWRPdXQpLCAoc2J1Ziwgc2l6ZUFycmF5RW50cmllcywgc2l6ZUFycmF5T3V0LCBzaXpl
QXJyYXlFbnRyaWVzTmVlZGVkT3V0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
Zi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZlNjkzY2E5ZTQxZmQ4NTk3
YTgyYjdjNzk2NjAxYjhhNzBjYWE0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFWRk9VTkRBVElPTikK
KworI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25TZXNzaW9uLmg+CisKKyNpbmNs
dWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNF
KFBBTCwgVmlkZW9Ub29sYm94KQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUws
IFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZB
bGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgQ01W
aWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUsIENGRGljdGlvbmFyeVJlZiBlbmNvZGVyU3BlY2lmaWNh
dGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgQ0ZBbGxv
Y2F0b3JSZWYgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIFZUQ29tcHJlc3Npb25PdXRwdXRDYWxs
YmFjayBvdXRwdXRDYWxsYmFjaywgdm9pZCogb3V0cHV0Q2FsbGJhY2tSZWZDb24sIFZUQ29tcHJl
c3Npb25TZXNzaW9uUmVmKiBjb21wcmVzc2lvblNlc3Npb25PdXQpLCAoYWxsb2NhdG9yLCB3aWR0
aCwgaGVpZ2h0LCBjb2RlY1R5cGUsIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBzb3VyY2VJbWFnZUJ1
ZmZlckF0dHJpYnV0ZXMsIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBvdXRwdXRDYWxsYmFjaywg
b3V0cHV0Q2FsbGJhY2tSZWZDb24sIGNvbXByZXNzaW9uU2Vzc2lvbk91dCkpCitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Np
b25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNz
aW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCksIChzZXNzaW9u
LCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29k
ZUZyYW1lLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENWSW1h
Z2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENN
VGltZSBkdXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIGZyYW1lUHJvcGVydGllcywgdm9pZCogc291
cmNlRnJhbWVSZWZjb24sIFZURW5jb2RlSW5mb0ZsYWdzKiBpbmZvRmxhZ3NPdXQpLCAoc2Vzc2lv
biwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZHVyYXRpb24sIGZyYW1lUHJv
cGVydGllcywgc291cmNlRnJhbWVSZWZjb24sIGluZm9GbGFnc091dCkpCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Q
cmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYg
c2Vzc2lvbiksIChzZXNzaW9uKSkKKworI2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjUwODM4YTNhZmRlZDJlZDdkNmY4ZTM0OGZmZGY2ZGQxMTUxYmM0ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsu
aApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNF
KEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJ
TktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gpCisKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lv
bkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVvQ29kZWNUeXBlIGNvZGVjVHlwZSwgQ0ZEaWN0aW9u
YXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBDRkRpY3Rpb25hcnlSZWYgc291cmNlSW1hZ2VC
dWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRvclJlZiBjb21wcmVzc2VkRGF0YUFsbG9jYXRvciwg
VlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNrIG91dHB1dENhbGxiYWNrLCB2b2lkKiBvdXRwdXRD
YWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lvblNlc3Npb25SZWYqIGNvbXByZXNzaW9uU2Vzc2lv
bk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBoZWlnaHQsIGNvZGVjVHlwZSwgZW5jb2RlclNwZWNp
ZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgY29tcHJlc3NlZERhdGFBbGxv
Y2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRwdXRDYWxsYmFja1JlZkNvbiwgY29tcHJlc3Npb25T
ZXNzaW9uT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUgc29mdExpbmtf
VmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlCitTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Db21w
bGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBD
TVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCksIChzZXNzaW9uLCBjb21w
bGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNl
c3Npb25Db21wbGV0ZUZyYW1lcyBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNl
c3Npb25Db21wbGV0ZUZyYW1lcworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBW
aWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUsIE9TU3RhdHVzLCAo
VlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1ZmZlclJlZiBpbWFnZUJ1
ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lIGR1cmF0aW9uLCBDRkRp
Y3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lkKiBzb3VyY2VGcmFtZVJlZmNvbiwgVlRF
bmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChzZXNzaW9uLCBpbWFnZUJ1ZmZlciwgcHJl
c2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJhbWVQcm9wZXJ0aWVzLCBzb3VyY2VGcmFt
ZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25FbmNv
ZGVGcmFtZSBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVG
cmFtZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZU
Q29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzLCBPU1N0YXR1cywgKFZUQ29t
cHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikpCisjZGVmaW5lIFZUQ29tcHJl
c3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9W
VENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcworCisjZW5kaWYgLy8gVVNF
KEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBhZjA0NDEyNDE4ZTZkYmIwZjBiM2IxN2E2ZDlhOGNhNmJhODEx
NmI0Li4zNmVmNTgxOGYzMmIyZjg2YTU5YzcwYzhhNzdmZGM1YTYyNTVkNTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MzMs
MTcgKzgzMywxNyBAQAogCQkyREFDQjlFOTIzNzU1RDAwMDBCNEMxODUgLyogR3JhcGhpY3NDb250
ZXh0SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwMDEyM0YxRkFEODdENjAwNTMxRDc2IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyREFGMzQzRDFFQTdF
MEYxMDAzODJDRDMgLyogQ29uc3RhbnRQcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjM0M0IxRUE3RTBGMTAwMzgyQ0QzIC8qIENv
bnN0YW50UHJvcGVydHlNYXAuaCAqLzsgfTsKIAkJMkRENUE3MjcxRUJFRTQ3RDAwOUJBNTk3IC8q
IENvbXBvc2l0aW9uVW5kZXJsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREQ1QTcyNjFFQkVFNDdEMDA5QkE1OTcgLyogQ29tcG9zaXRpb25VbmRl
cmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQkyRERFMUNFMzFGNTc0QUU1MDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZWaWV3LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNFMDFGNTc0QUQxMDBE
MUEzNjUgLyogSlNWUkZpZWxkT2ZWaWV3LmggKi87IH07Ci0JCTJEREUxQ0U0MUY1NzRBRTkwMEQx
QTM2NSAvKiBKU1ZSRGlzcGxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkRERTFDREUxRjU3NEFBQjAwRDFBMzY1IC8qIEpTVlJEaXNwbGF5LmggKi87
IH07Ci0JCTJEREUxQ0Y4MUY1NzRDMzkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUNhcGFiaWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFD
RTYxRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmggKi87IH07Ci0J
CTJEREUxQ0ZBMUY1NzRDM0UwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUV2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNFODFGNTc0QkZGMDBE
MUEzNjUgLyogSlNWUkRpc3BsYXlFdmVudC5oICovOyB9OwotCQkyRERFMUNGQzFGNTc0Q0VFMDBE
MUEzNjUgLyogSlNWUkRpc3BsYXlFdmVudFJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRUExRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJE
aXNwbGF5RXZlbnRSZWFzb24uaCAqLzsgfTsKLQkJMkRERTFDRkUxRjU3NENGMzAwRDFBMzY1IC8q
IEpTVlJFeWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEREUxQ0VDMUY1NzRCRkYwMEQxQTM2NSAvKiBKU1ZSRXllLmggKi87IH07Ci0JCTJEREUxRDAw
MUY1NzRDRjcwMEQxQTM2NSAvKiBKU1ZSRXllUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRUUxRjU3NEJGRjAwRDFBMzY1IC8q
IEpTVlJFeWVQYXJhbWV0ZXJzLmggKi87IH07Ci0JCTJEREUxRDAyMUY1NzREMDAwMEQxQTM2NSAv
KiBKU1ZSRnJhbWVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRERFMUNGMDFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUkZyYW1lRGF0YS5oICovOyB9
OwotCQkyRERFMUQwNDFGNTc0RDA1MDBEMUEzNjUgLyogSlNWUkxheWVySW5pdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRjIxRjU3NEJGRjAw
RDFBMzY1IC8qIEpTVlJMYXllckluaXQuaCAqLzsgfTsKLQkJMkRERTFEMDYxRjU3NEQwQTAwRDFB
MzY1IC8qIEpTVlJQb3NlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRERFMUNGNDFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUlBvc2UuaCAqLzsgfTsKLQkJ
MkRERTFEMDgxRjU3NEQwRTAwRDFBMzY1IC8qIEpTVlJTdGFnZVBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUxQ0Y2MUY1NzRCRkYw
MEQxQTM2NSAvKiBKU1ZSU3RhZ2VQYXJhbWV0ZXJzLmggKi87IH07CisJCTJEREUxQ0UzMUY1NzRB
RTUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IH07CisJCTJEREUxQ0U0MUY1NzRBRTkwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0Y4MUY1NzRDMzkwMEQxQTM2NSAvKiAo
bnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0ZB
MUY1NzRDM0UwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IH07CisJCTJEREUxQ0ZDMUY1NzRDRUUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0ZFMUY1NzRDRjMwMEQxQTM2
NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJE
REUxRDAwMUY1NzRDRjcwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDAyMUY1NzREMDAwMEQxQTM2NSAvKiAobnVsbCkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDA0MUY1NzREMDUw
MEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07
CisJCTJEREUxRDA2MUY1NzREMEEwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDA4MUY1NzREMEUwMEQxQTM2NSAvKiAobnVs
bCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CiAJCTJERTcwMDIzMTky
RkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTcwMDIyMTkyRkU4MkEwMEIwOTc1
QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCAqLzsgfTsKIAkJMkRGNTEyQ0UxRDg3M0U0
NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGNTEyQ0MxRDg3M0U0NzAwMUQ2Nzgw
IC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oICovOyB9OwogCQkyREZBNDg4RjFEQjU0
MUQwMDAzNjJCOTkgLyogQnVmZmVyU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREZBNDg4RTFEQjU0MUMyMDAzNjJCOTkgLyogQnVmZmVyU291
cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTEwOTcsNiArMTA5Nyw3IEBACiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJs
ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyogV3JpdGFibGVTdHJl
YW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVh
bUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5
MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0
RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxNkY3OTkwMjNENzUwQ0YwMDgyOUZDMSAvKiBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tICovOyB9OwogCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEgLyog
TWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oICovOyB9OwogCQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTc2MTJBQjFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5j
cHAgKi87IH07CiAJCTQxNzYxMkIwMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovOyB9
OwpAQCAtMTEzNyw2ICsxMTM4LDcgQEAKIAkJNDFCODc3NjIyM0RFMTA0NTAwMzYzOEI4IC8qIFJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI4Nzc2MDIzREUxMDQyMDAzNjM4QjggLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MUJGMjA0OTIyQkE3QkU4MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRl
b1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUM3NjBCMTBFREUw
M0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQx
Q0Q2RjhDMjNENkU4MjEwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUNENkY4QjIz
RDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9Owog
CQk0MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYy
RiAvKiBDb250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQxRDEyOUNFMUYzRDBFRjYwMEQxNUU0NyAvKiBXb3JrZXJHbG9iYWxTY29w
ZUNhY2hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGQjI3OEQxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmggKi87
IH07CiAJCTQxRDEyOUQwMUYzRDBGMDUwMEQxNUU0NyAvKiBDYWNoZVF1ZXJ5T3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OUIxRjM0
Q0VGMDAwNzk1NDg3IC8qIENhY2hlUXVlcnlPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI1ODAsNyArMjU4Miw2IEBACiAJCThBRjRF
NTVDMTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1NTkxMURDNUE2MzAwMEVEM0RF
IC8qIFBlcmZvcm1hbmNlVGltaW5nLmggKi87IH07CiAJCThCRDM3QTY4MjAxQkIzOUMwMDExNzM0
QSAvKiBSZWFkYWJsZVN0cmVhbUNodW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4QkQzN0E2NzIwMUJCMzlDMDAxMTczNEEgLyogUmVhZGFibGVTdHJl
YW1DaHVuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCThFNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhFNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCAqLzsgfTsKLQkJOEU2MjBFODEyMEVFNjAyNDAw
N0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RTYyMEU4MDIwRUU1RkZDMDA3QkM1RUYgLyogVlJQ
bGF0Zm9ybURpc3BsYXlDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk4RUM2Qzk2MzIwMUEyNTE2MDBGQkZBNTMgLyogR2FwTGVuZ3RoLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RUM2Qzk2MTIw
MUEyNTAxMDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEY2NzU2MUIxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50
UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhG
Njc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTAwMTc3NDExMkUwMzQ3ODAwNjQ4NDYy
IC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkwMDE3NzNFMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFy
ZERlcml2YXRpdmVzLmggKi87IH07CkBAIC03MzYxLDYgKzczNjIsOCBAQAogCQk0MTZENzU5RjIw
QzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0
RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZGNzk4RjIzRDc1MENC
MDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcwQTJFOTFEOEMwQ0MwMDAzMTg0NTIg
LyogSlNET01XcmFwcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRE9NV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E4
MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRp
YUNvbnRyb2xFbGVtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YUNvbnRyb2xFbGVtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ2OCw2
ICs3NDcxLDggQEAKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdF
MTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4OTIzRDZFODFDMDBCMTY0MjEg
LyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUNGOEJFNTFENDYyMjIwMDA3MDdEQzkg
LyogRmV0Y2hCb2R5Q29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmV0Y2hCb2R5Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1
QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMDU0NCw4ICsxMDU0OSw2IEBACiAJCThFMzNDRDkzMjAxQTI5QzEwMEUzOTA5MyAvKiBHYXBM
ZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2FwTGVuZ3Ro
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDgxQUQ0NDgzNTAwMzY1
QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0ZldGNoUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4RTRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmV0Y2hSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk4RTYyMEU3RTIwRUU1RkUyMDA3QkM1RUYgLyogVlJQbGF0Zm9ybURp
c3BsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVlJQbGF0Zm9y
bURpc3BsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4RTYyMEU4MDIwRUU1
RkZDMDA3QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOEVDNkM5NjEyMDFBMjUwMTAwRkJGQTUzIC8qIEdhcExlbmd0aC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHYXBMZW5ndGguaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVl
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRRdWV1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyogSlNF
eGVjU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFeGVjU3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODkyLDggKzE4ODk1LDEyIEBACiAJ
CTREM0MwNUQ0MjFBRjQ4MDkwMEYyODkwQSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDE2Rjc5OEQyM0Q3NTBDQTAwODI5RkMxIC8qIEF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovLAorCQkJCTQxNkY3OThGMjNENzUwQ0IwMDgy
OUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8sCiAJCQkJNEQ3M0Y5NEMy
MThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCAqLywK
IAkJCQk0RDczRjk0RDIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbSAqLywKKwkJCQk0MUNENkY4OTIzRDZFODFDMDBCMTY0MjEgLyogVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLmggKi8sCisJCQkJNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8q
IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29j
b2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjU4MjMsNyArMjU4MzAsNiBAQAog
CQkJCTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3b3JrICovLAogCQkJCTFBMkU2RTU2
MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAwNkMxRDAwRUY2RjI2
IC8qIHRleHQgKi8sCi0JCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8qIHZyICovLAogCQkJ
CURGREI5MTJDRjhFODhBNkRBMUFEMjY0RiAvKiBBYm9ydGFibGVUYXNrUXVldWUuaCAqLywKIAkJ
CQk0OUFFMkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgKi8sCiAJ
CQkJNDlBRTJEOTUxMzRFRTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUuaCAqLywKQEAg
LTMxMTY1LDE3ICszMTE3MSwxNyBAQAogCQkJCUJFOEVGMDREMTcxQzkwMTQwMDlCNDhDMyAvKiBK
U1ZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkU3OTE0OTFGOTdFMDFBMDAx
OTk3MzkgLyogSlNWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3NzlCRDk2
MUYzMjI0NkEwMEMyMTQxNyAvKiBKU1Zpc3VhbFZpZXdwb3J0LmggaW4gSGVhZGVycyAqLywKLQkJ
CQkyRERFMUNFNDFGNTc0QUU5MDBEMUEzNjUgLyogSlNWUkRpc3BsYXkuaCBpbiBIZWFkZXJzICov
LAotCQkJCTJEREUxQ0Y4MUY1NzRDMzkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUNhcGFiaWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFDRkExRjU3NEMzRTAwRDFBMzY1IC8qIEpTVlJE
aXNwbGF5RXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUxQ0ZDMUY1NzRDRUUwMEQxQTM2
NSAvKiBKU1ZSRGlzcGxheUV2ZW50UmVhc29uLmggaW4gSGVhZGVycyAqLywKLQkJCQkyRERFMUNG
RTFGNTc0Q0YzMDBEMUEzNjUgLyogSlNWUkV5ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFE
MDAxRjU3NENGNzAwRDFBMzY1IC8qIEpTVlJFeWVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywK
LQkJCQkyRERFMUNFMzFGNTc0QUU1MDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZWaWV3LmggaW4gSGVh
ZGVycyAqLywKLQkJCQkyRERFMUQwMjFGNTc0RDAwMDBEMUEzNjUgLyogSlNWUkZyYW1lRGF0YS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFEMDQxRjU3NEQwNTAwRDFBMzY1IC8qIEpTVlJMYXll
ckluaXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUxRDA2MUY1NzREMEEwMEQxQTM2NSAvKiBK
U1ZSUG9zZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFEMDgxRjU3NEQwRTAwRDFBMzY1IC8q
IEpTVlJTdGFnZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxQ0U0MUY1NzRB
RTkwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUNGODFGNTc0QzM5
MDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFDRkExRjU3NEMzRTAw
RDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxQ0ZDMUY1NzRDRUUwMEQx
QTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUNGRTFGNTc0Q0YzMDBEMUEz
NjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFEMDAxRjU3NENGNzAwRDFBMzY1
IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxQ0UzMUY1NzRBRTUwMEQxQTM2NSAv
KiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUQwMjFGNTc0RDAwMDBEMUEzNjUgLyog
KG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFEMDQxRjU3NEQwNTAwRDFBMzY1IC8qIChu
dWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxRDA2MUY1NzREMEEwMEQxQTM2NSAvKiAobnVs
bCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUQwODFGNTc0RDBFMDBEMUEzNjUgLyogKG51bGwp
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkUyMDUwODIxOEE0NjBDMzAwODA2NDdFIC8qIEpTVlRUQ3Vl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUY5QjIwRDE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRS
ZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRjlCMjBGMThDRkI1RjQwMEM2NEJFRiAvKiBK
U1ZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1NDIsNiArMzM1NDgsNyBAQAog
CQkJCUE5Nzg3Q0I0MUY1RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEyIC8qIEF1ZGlv
RGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1NTk2OTExNDc1QjY3ODAw
MUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTZG
Nzk5MDIzRDc1MENGMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lv
bklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEOEE3QkJCMTk3NzM1RkUwMENCRDY0MyAvKiBB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEQ4
MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzQy
NzQsNiArMzQyODEsNyBAQAogCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2MSAvKiBVc2VyTWVz
c2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGQkM0QUYzMTg5
ODgxNTYwMDQ2RUUzOCAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDFDRDZGOEMyM0Q2RTgyMTAw
QjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2NzE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQu
bW0KaW5kZXggZmE4ZWUwYjEwMGNmMjE0MDg1NjUwNTE2YmM0ZTIzYTFkYjE1YmYzNS4uZmMyOTA4
Y2ViZTNkNzRlNWYxNTEwNGE1ZDc4MjMwY2JmOWVkNTMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lv
blZULm1tCkBAIC05NSw2ICs5NSw3IEBAIGJvb2wgSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6c2V0
U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilr
Q1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXkgOiBAeyAvKmVtcHR5IGRpY3Rpb25h
cnkqLyB9LAogICAgIH07CiAKKwogICAgIE5TRGljdGlvbmFyeSogcGl4ZWxCdWZmZXJQb29sT3B0
aW9ucyA9IEB7CiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUG9v
bE1pbmltdW1CdWZmZXJDb3VudEtleTogQCg2KQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggNzNmMWQwYTE1MTlmMmMwM2I5MWQ2OTUxMDUxMzVh
NGYyMGQxZGE2NC4uZjFmNjgwNDUyMjkzNjVkOGZjM2IwNzk2NzJkMmMyMDMzZmJlYTM5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAtMjYsOSArMjYsMTAg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGwuaCIKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Q
cml2YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC02OCw3ICs2OSwxNCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRl
KGF1ZGlvVHJhY2ssIHZpZGVvVHJhY2spOworCisgICAgaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0g
MDsKKyAgICBpZiAodmlkZW9UcmFjaykgeworICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IHZpZGVv
VHJhY2stPnNldHRpbmdzKCk7CisgICAgICAgIHdpZHRoID0gc2V0dGluZ3Mud2lkdGgoKTsKKyAg
ICAgICAgaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7CisgICAgfQorICAgIGF1dG8gd3JpdGVy
ID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSghIWF1ZGlvVHJhY2ssIHdpZHRo
LCBoZWlnaHQpOwogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtMTE5LDQgKzEyNyw0IEBAIGNvbnN0IFN0cmluZyYgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsOjptaW1lVHlwZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFW
RShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGwuaAppbmRleCAwY2YwZGYzYzY0Y2M5NzEzZTMwNTliZTM2Y2FjYzlmYzdjY2MwYjM2Li4zNGUy
YTk2Yzc5NDE4ZDRlODY2YzFhYzIxMDQwOThjYzkzOGY0NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTI0LDcgKzI0LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhB
VkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZh
dGUuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCkBAIC01
Niw0ICs1Niw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDdiZjgxZTFkNDU2YzcwYzJkOTQ0
ZjcwNDVhOGUxNmUwNTliY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApA
QCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8Q29yZU1lZGlh
L0NvcmVNZWRpYS5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01T
YW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVk
aW9Db252ZXJ0ZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cj4gY3JlYXRlKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2Jq
ZWN0KTsKKyAgICB+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAgICB2b2lkIGZp
bmlzaCgpOworICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAg
ICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKworcHJpdmF0
ZToKKyAgICBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKyAgICBib29sIGluaXRpYWxp
emUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOwor
CisgICAgc3RhdGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2Mo
QXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFt
UGFja2V0RGVzY3JpcHRpb24qKiwgdm9pZCopOworCisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVm
ZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRBdWRpb0NvbnZlcnRlckZvclNv
dXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIEF1ZGlvRm9ybWF0
SUQpOworICAgIHNpemVfdCBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiwgVUludDMyLCBGbG9hdDMyKTsKKyAgICB2b2lkIGF0dGFjaFBy
aW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBSZXRhaW5QdHI8TlNO
dW1iZXI+IGdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCk7CisgICAgQ01TYW1wbGVCdWZmZXJS
ZWYgc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlvQnVm
ZmVyTGlzdCk7CisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1l
KENNVGltZSk7CisgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRz
KFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24q
Kik7CisKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1
ZTsKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9pbnB1dEJ1ZmZlclF1ZXVlOwor
ICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIENNVGltZSBt
X2xvd1dhdGVyVGltZTsKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07CisKKyAgICBS
ZXRhaW5QdHI8QXVkaW9Db252ZXJ0ZXJSZWY+IG1fY29udmVydGVyOworICAgIEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbiBtX3NvdXJjZUZvcm1hdDsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVz
Y3JpcHRpb24gbV9kZXN0aW5hdGlvbkZvcm1hdDsKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNj
cmlwdGlvblJlZj4gbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAgIFJldGFpblB0
cjxOU051bWJlcj4gbV9nZHJDb3VudE51bTsKKyAgICBVSW50MzIgbV9tYXhPdXRwdXRQYWNrZXRT
aXplOworICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX2Rlc3RpbmF0
aW9uUGFja2V0RGVzY3JpcHRpb25zOworCisgICAgQ01UaW1lIG1fY3VycmVudE5hdGl2ZVByZXNl
bnRhdGlvblRpbWVTdGFtcDsKKyAgICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9u
VGltZVN0YW1wOworICAgIENNVGltZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb247CisKKyAgICBW
ZWN0b3I8Y2hhcj4gbV9zb3VyY2VCdWZmZXI7CisgICAgVmVjdG9yPGNoYXI+IG1fZGVzdGluYXRp
b25CdWZmZXI7CisKKyAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9j
a0J1ZmZlcjsKKyAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7CisgICAgc2l6ZV90
IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXI7CisgICAgQXVkaW9Gb3JtYXRJRCBt
X291dHB1dENvZGVjVHlwZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MzMzNzQ2YWRmYjAwM2RjNjYyMGEwMmQx
MDZjOGQ0MGIxY2ZkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAt
MCwwICsxLDQ5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvZGVjLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1
ZGlvQ29udmVydGVyLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+Cisj
aW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgPHBhbC9jZi9BdWRp
b1Rvb2xib3hTb2Z0TGluay5oPgorCisjZGVmaW5lIExPV19XQVRFUl9USU1FX0lOX1NFQ09ORCAw
LjEKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmNyZWF0ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNr
LCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcgQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKCkpOworICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShjYWxsYmFj
aywgY2FsbGJhY2tPYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
Y29tcHJlc3NvcjsKK30KKworQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IoKQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgZGlzcGF0
Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwg
RElTUEFUQ0hfUVVFVUVfU0VSSUFMKSB9CisgICAgLCBtX2xvd1dhdGVyVGltZSB7IENNVGltZU1h
a2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQsIDEwMDApIH0KKyAgICAsIG1f
b3V0cHV0Q29kZWNUeXBlIHsga0F1ZGlvRm9ybWF0TVBFRzRBQUMgfQoreworfQorCitBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQorewor
ICAgIGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAgICAgIGRpc3BhdGNoX3JlbGVhc2Uo
bV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKK30KKworYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywg
dm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgQ01CdWZmZXJRdWV1ZVJlZiBpbnB1dEJ1ZmZl
clF1ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1w
bGVCdWZmZXJzKCksICZpbnB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1
ZXVlQ3JlYXRlIGZvciBtX2lucHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9pbnB1dEJ1ZmZlclF1ZXVlID0g
YWRvcHRDRihpbnB1dEJ1ZmZlclF1ZXVlKTsKKworICAgIENNQnVmZmVyUXVldWVSZWYgb3V0cHV0
QnVmZmVyUXVldWU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRl
ZFNhbXBsZUJ1ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1
ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX291dHB1dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fb3V0cHV0QnVmZmVy
UXVldWUgPSBhZG9wdENGKG91dHB1dEJ1ZmZlclF1ZXVlKTsKKyAgICBDTUJ1ZmZlclF1ZXVlSW5z
dGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgY2FsbGJhY2ssIGNhbGxiYWNr
T2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hlbkRhdGFCZWNvbWVzUmVhZHksIGtDTVRp
bWVaZXJvLCBOVUxMKTsKKworICAgIG1faXNFbmNvZGluZyA9IHRydWU7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2goKQorewor
ICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBwcm9j
ZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKGtDTVRpbWVJbnZhbGlkKTsKKyAgICAg
ICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0cHV0QnVmZmVy
UXVldWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFT
dHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZU1hcmtFbmRP
ZkRhdGEgZmFpbGVkICVkIiwgZXJyb3IpOworICAgICAgICBtX2lzRW5jb2RpbmcgPSBmYWxzZTsK
KyAgICB9KTsKK30KKworYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRBdWRp
b0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYgZm9ybWF0RGVzY3JpcHRpb24sIEF1ZGlvRm9ybWF0SUQgb3V0cHV0Rm9ybWF0SUQpCit7Cisg
ICAgY29uc3QgYXV0byAqYXVkaW9Gb3JtYXRMaXN0SXRlbSA9IENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQoZm9ybWF0RGVzY3JpcHRpb24pOworICAgIG1f
c291cmNlRm9ybWF0ID0gYXVkaW9Gb3JtYXRMaXN0SXRlbS0+bUFTQkQ7CisKKyAgICBtZW1zZXQo
Jm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIHNpemVvZihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24pKTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9IG91dHB1dEZvcm1hdElE
OworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPSBtX3NvdXJjZUZvcm1hdC5t
U2FtcGxlUmF0ZTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0g
bV9zb3VyY2VGb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisKKyAgICBVSW50MzIgc2l6ZSA9IHNp
emVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvRm9y
bWF0R2V0UHJvcGVydHkoa0F1ZGlvRm9ybWF0UHJvcGVydHlfRm9ybWF0SW5mbywgMCwgTlVMTCwg
JnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRpb0Zvcm1hdEdl
dFByb3BlcnR5IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgY29udmVydGVyOworICAgIGlmIChhdXRv
IGVycm9yID0gQXVkaW9Db252ZXJ0ZXJOZXcoJm1fc291cmNlRm9ybWF0LCAmbV9kZXN0aW5hdGlv
bkZvcm1hdCwgJmNvbnZlcnRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJOZXcgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
bV9jb252ZXJ0ZXIgPSBhZG9wdENGKGNvbnZlcnRlcik7CisKKyAgICBzaXplX3QgY29va2llU2l6
ZSA9IDA7CisgICAgY29uc3Qgdm9pZCAqY29va2llID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9u
R2V0TWFnaWNDb29raWUoZm9ybWF0RGVzY3JpcHRpb24sICZjb29raWVTaXplKTsKKyAgICBpZiAo
Y29va2llU2l6ZSkgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyU2V0
UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25N
YWdpY0Nvb2tpZSwgKFVJbnQzMiljb29raWVTaXplLCBjb29raWUpKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tpZSBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9zb3VyY2VGb3JtYXQpOworICAgIGlmIChhdXRv
IGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1
ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAmbV9zb3Vy
Y2VGb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ3VycmVudElu
cHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBh
Y2tldCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIm1CeXRlc1Bl
clBhY2tldCBzaG91bGQgbm90IGJlIHplcm8iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlvbkZvcm1hdCk7CisgICAgaWYgKGF1
dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBr
QXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAmbV9k
ZXN0aW5hdGlvbkZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJD
dXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZvcm1h
dC5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TVBFRzRBQUMpIHsKKyAgICAgICAgLy8gRklYTUU6
IFNldCBvdXRwdXRCaXRSYXRlIGFjY29yZGluZyBNZWRpYVJlY29yZGVyT3B0aW9ucy5hdWRpb0Jp
dHNQZXJTZWNvbmQuCisgICAgICAgIFVJbnQzMiBvdXRwdXRCaXRSYXRlID0gNjQwMDA7CisgICAg
ICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlID49IDQ0MTAwKQorICAgICAg
ICAgICAgb3V0cHV0Qml0UmF0ZSA9IDE5MjAwMDsKKyAgICAgICAgZWxzZSBpZiAobV9kZXN0aW5h
dGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA8IDIyMDAwKQorICAgICAgICAgICAgb3V0cHV0Qml0UmF0
ZSA9IDMyMDAwOworCisgICAgICAgIHNpemUgPSBzaXplb2Yob3V0cHV0Qml0UmF0ZSk7CisgICAg
ICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRl
ci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSwgc2l6ZSwgJm91dHB1dEJpdFJh
dGUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckVuY29kZUJpdFJh
dGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVy
UGFja2V0KSB7CisgICAgICAgIC8vIElmIHRoZSBkZXN0aW5hdGlvbiBmb3JtYXQgaXMgVkJSLCB3
ZSBuZWVkIHRvIGdldCBtYXggc2l6ZSBwZXIgcGFja2V0IGZyb20gdGhlIGNvbnZlcnRlci4KKyAg
ICAgICAgc2l6ZSA9IHNpemVvZihtX21heE91dHB1dFBhY2tldFNpemUpOworCisgICAgICAgIGlm
IChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQo
KSwga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVtT3V0cHV0UGFja2V0U2l6ZSwgJnNpemUs
ICZtX21heE91dHB1dFBhY2tldFNpemUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRp
b0NvbnZlcnRlclByb3BlcnR5TWF4aW11bU91dHB1dFBhY2tldFNpemUgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBtX2Rlc3RpbmF0aW9uQnVmZmVyLnJlc2VydmVDYXBhY2l0eShjb21wdXRlQnVmZmVyU2l6
ZUZvckF1ZGlvRm9ybWF0KG1fZGVzdGluYXRpb25Gb3JtYXQsIG1fbWF4T3V0cHV0UGFja2V0U2l6
ZSwgTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EKSk7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9y
bWF0Lm1CeXRlc1BlclBhY2tldCkKKyAgICAgICAgbV9kZXN0aW5hdGlvblBhY2tldERlc2NyaXB0
aW9ucy5yZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpIC8gbV9t
YXhPdXRwdXRQYWNrZXRTaXplKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzaXplX3QgQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0
KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBmb3JtYXQsIFVJbnQzMiBtYXhPdXRwdXRQYWNr
ZXRTaXplLCBGbG9hdDMyIGR1cmF0aW9uKQoreworICAgIFVJbnQzMiBudW1QYWNrZXRzID0gKGZv
cm1hdC5tU2FtcGxlUmF0ZSAqIGR1cmF0aW9uKSAvIGZvcm1hdC5tRnJhbWVzUGVyUGFja2V0Owor
ICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gZm9ybWF0Lm1CeXRlc1BlclBhY2tldCA/IGZv
cm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtYXhPdXRwdXRQYWNrZXRTaXplOworICAgIFVJbnQzMiBi
dWZmZXJTaXplID0gbnVtUGFja2V0cyAqIG91dHB1dFBhY2tldFNpemU7CisKKyAgICByZXR1cm4g
YnVmZmVyU2l6ZTsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF0dGFj
aFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBp
ZiAoQ01USU1FX0lTX0lOVkFMSUQobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uKSkgeworICAgICAg
ICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07CisgICAgICAgIFVJ
bnQzMiBzaXplID0gc2l6ZW9mKHByaW1lSW5mbyk7CisKKyAgICAgICAgaWYgKGF1dG8gZXJyb3Ig
PSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252
ZXJ0ZXJQcmltZUluZm8sICZzaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0
dGluZyBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3JlbWFpbmluZ1ByaW1l
RHVyYXRpb24gPSBDTVRpbWVNYWtlKHByaW1lSW5mby5sZWFkaW5nRnJhbWVzLCBtX2Rlc3RpbmF0
aW9uRm9ybWF0Lm1TYW1wbGVSYXRlKTsKKyAgICB9CisKKyAgICBpZiAoQ01USU1FX0NPTVBBUkVf
SU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7CisgICAg
ICAgIENNVGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVm
ZmVyKTsKKyAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1pbmltdW0oc2FtcGxl
RHVyYXRpb24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7CisgICAgICAgIENGRGljdGlvbmFy
eVJlZiB0cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRyaW1EdXJhdGlv
biwga0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgICAgIENNU2V0QXR0YWNobWVudChidWZmZXIs
IGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0
U3RhcnREaWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOworICAgICAgICBD
RlJlbGVhc2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAgbV9yZW1haW5pbmdQcmltZUR1cmF0
aW9uID0gQ01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uLCB0cmltRHVyYXRp
b24pOworICAgIH0KK30KKworUmV0YWluUHRyPE5TTnVtYmVyPiBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCkKK3sKKyAgICBVSW50MzIgZGVs
YXlTaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICB1aW50MzJfdCBvcmlnaW5hbERlbGF5TW9k
ZSA9IDA7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1f
Y29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCAmZGVsYXlTaXpl
LCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29kZWNQ
cm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICB9CisKKyAgICB1aW50MzJfdCBvcHRpbWFsRGVsYXlNb2RlID0ga0F1ZGlvQ29k
ZWNEZWxheU1vZGVfT3B0aW1hbDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVy
U2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1v
ZGUsIGRlbGF5U2l6ZSwgJm9wdGltYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcg
a0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBVSW50MzIgcHJpbWVTaXplID0gc2l6ZW9m
KEF1ZGlvQ29kZWNQcmltZUluZm8pOworICAgIEF1ZGlvQ29kZWNQcmltZUluZm8gcHJpbWVJbmZv
IHsgMCwgMCB9OworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0
eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1lSW5mbywgJnByaW1l
U2l6ZSwgJnByaW1lSW5mbykpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1Byb3Bl
cnR5UHJpbWVJbmZvIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmls
OworICAgIH0KKworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0
eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSwgZGVsYXlT
aXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29k
ZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0TlMoW05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6KHByaW1lSW5mby5sZWFkaW5nRnJhbWVzIC8gbV9kZXN0aW5hdGlvbkZvcm1hdC5tRnJhbWVz
UGVyUGFja2V0KV0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKFVJbnQzMiBudW1QYWNrZXRzLCBB
dWRpb0J1ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3QpCit7CisgICAgVmVjdG9yPGNoYXI+IGNvb2tp
ZTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAgICBV
SW50MzIgY29va2llU2l6ZSA9IDA7CisKKyAgICAgICAgYXV0byBlcnJvciA9IEF1ZGlvQ29udmVy
dGVyR2V0UHJvcGVydHlJbmZvKG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDb21w
cmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgTlVMTCk7CisgICAgICAgIGlmICgoZXJy
b3IgPT0gbm9FcnIpICYmICEhY29va2llU2l6ZSkgeworICAgICAgICAgICAgY29va2llLnJlc2Vy
dmVDYXBhY2l0eShjb29raWVTaXplKTsKKworICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBB
dWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0
ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgY29va2llLmRhdGEoKSkpIHsK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFn
aWNDb29raWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICAgICAgaWYgKGF1dG8g
ZXJyb3IgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIE5VTEwsIGNvb2tpZVNpemUsIGNvb2tpZS5kYXRh
KCksIE5VTEwsICZkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSkgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OworICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAgICAgICBtX2Rlc3RpbmF0
aW9uRm9ybWF0RGVzY3JpcHRpb24gPSBhZG9wdENGKGRlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRp
b24pOworICAgICAgICBtX2dkckNvdW50TnVtID0gZ3JhZHVhbERlY29kZXJSZWZyZXNoQ291bnQo
KTsKKyAgICB9CisKKyAgICBjaGFyICpkYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGZpbGxCdWZm
ZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhKTsKKyAgICBzaXplX3QgZGF0YVNpemUgPSBmaWxsQnVm
ZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplOworCisgICAgQ01CbG9ja0J1ZmZlclJl
ZiBibG9ja0J1ZmZlcjsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDcmVhdGVX
aXRoTWVtb3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZGF0YVNpemUsIGtDRkFs
bG9jYXRvckRlZmF1bHQsIE5VTEwsIDAsIGRhdGFTaXplLCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1l
bW9yeU5vd0ZsYWcsICZibG9ja0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNy
ZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKGJsb2NrQnVmZmVyKTsK
KworICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMoZGF0
YSwgYnVmZmVyLmdldCgpLCAwLCBkYXRhU2l6ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZl
clJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVy
biBuaWw7CisgICAgfQorCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyOworICAg
IGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0
aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIuZ2V0KCksIHRydWUsIE5VTEwsIE5VTEws
IG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgbnVtUGFja2V0cywgbV9jdXJy
ZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wLCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3Jp
cHRpb25zLmRhdGEoKSwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIGlm
IChbbV9nZHJDb3VudE51bSBpbnRWYWx1ZV0pCisgICAgICAgIENNU2V0QXR0YWNobWVudChzYW1w
bGVCdWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERlY29kZXJSZWZy
ZXNoLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKW1fZ2RyQ291bnROdW0uZ2V0KCksIGtDTUF0dGFjaG1l
bnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisKKyAgICByZXR1cm4gc2FtcGxlQnVmZmVyOworfQor
CitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlvQ29udmVydGVyQ29t
cGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiAqbnVtT3V0cHV0UGFj
a2V0c1B0ciwgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0LCBBdWRpb1N0cmVhbVBhY2tldERl
c2NyaXB0aW9uICoqcGFja2V0RGVzY3JpcHRpb25PdXQsIHZvaWQgKmF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvcikKK3sKKyAgICBhdXRvICpjb21wcmVzc29yID0gc3RhdGljX2Nhc3Q8QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yKj4oYXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKTsKKyAg
ICByZXR1cm4gY29tcHJlc3Nvci0+cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKG51
bU91dHB1dFBhY2tldHNQdHIsIGJ1ZmZlckxpc3QsIHBhY2tldERlc2NyaXB0aW9uT3V0KTsKK30K
KworT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm92aWRlU291cmNlRGF0
YU51bU91dHB1dFBhY2tldHMoVUludDMyKiBudW1PdXRwdXRQYWNrZXRzUHRyLCBBdWRpb0J1ZmZl
ckxpc3QqIGF1ZGlvQnVmZmVyTGlzdCwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioqIHBh
Y2tldERlc2NyaXB0aW9uT3V0KQoreworICAgIGlmIChwYWNrZXREZXNjcmlwdGlvbk91dCkKKyAg
ICAgICAgKnBhY2tldERlc2NyaXB0aW9uT3V0ID0gTlVMTDsKKworICAgIGNvbnN0IFVJbnQzMiBu
dW1QYWNrZXRzVG9Db3B5ID0gKm51bU91dHB1dFBhY2tldHNQdHI7CisgICAgc2l6ZV90IG51bUJ5
dGVzVG9Db3B5ID0gKG51bVBhY2tldHNUb0NvcHkgKiBtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQ
YWNrZXQpOworCisgICAgaWYgKGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnMgPT0gMSkg
eworICAgICAgICBzaXplX3QgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyID0gMDsKKworICAg
ICAgICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobnVtQnl0ZXNUb0NvcHkpOworCisg
ICAgICAgIHdoaWxlIChudW1CeXRlc1RvQ29weSkgeworICAgICAgICAgICAgaWYgKG1fc2FtcGxl
QmxvY2tCdWZmZXJTaXplIDw9IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIpIHsK
KyAgICAgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAg
ICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAg
ICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVmZmVyUXVldWUu
Z2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGF1
dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8
dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5n
ZXQoKSkpKSk7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0Yo
KENNQmxvY2tCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxlQnVm
ZmVyR2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01T
YW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAgICAgICAgICBt
X3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1
ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX3NhbXBsZUJsb2NrQnVmZmVy
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVm
ZmVyID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tC
dWZmZXIpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxl
QmJ1ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVCbG9ja0J1ZmZlclNpemUg
LSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSk7CisgICAgICAgICAgICAgICAg
aWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2Nr
QnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyLCBudW1CeXRl
c1RvQ29weUZyb21TYW1wbGVCYnVmLCAobV9zb3VyY2VCdWZmZXIuZGF0YSgpICsgY3VycmVudE9m
ZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1
ZmZlckNvcHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
bnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAg
ICAgICAgICBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgKz0gbnVtQnl0ZXNUb0NvcHlGcm9t
U2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2Nr
QnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IG1f
c291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sw
XS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOworICAgICAgICBh
dWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fc291cmNlRm9y
bWF0Lm1DaGFubmVsc1BlckZyYW1lOworCisgICAgICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0g
KGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9y
bWF0Lm1CeXRlc1BlclBhY2tldCk7CisgICAgICAgIHJldHVybiBub0VycjsKKyAgICB9CisKKyAg
ICBBU1NFUlQoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAyKTsKKworICAgIC8v
IEZJWE1FOiBTdXBwb3J0IGludGVybGVhdmVkIGRhdGEgYnkgdW5pbnRlcmxlYXZpbmcgbV9zb3Vy
Y2VCdWZmZXIgaWYgbmVlZGVkLgorICAgIEFTU0VSVChtX3NvdXJjZUZvcm1hdC5tRm9ybWF0Rmxh
Z3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZCk7CisKKyAgICBtX3NvdXJjZUJ1
ZmZlci5yZXNlcnZlQ2FwYWNpdHkoMiAqIG51bUJ5dGVzVG9Db3B5KTsKKyAgICBhdXRvKiBmaXJz
dENoYW5uZWwgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7CisgICAgYXV0byogc2Vjb25kQ2hhbm5l
bCA9IG1fc291cmNlQnVmZmVyLmRhdGEoKSArIG51bUJ5dGVzVG9Db3B5OworCisgICAgc2l6ZV90
IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciA9IDA7CisgICAgd2hpbGUgKG51bUJ5dGVzVG9D
b3B5KSB7CisgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA8PSBtX2N1cnJlbnRP
ZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9j
a0J1ZmZlcikgeworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBudWxscHRy
OworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5KG1faW5wdXRCdWZm
ZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGF1
dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8
dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5n
ZXQoKSkpKSk7CisgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRDRigoQ01C
bG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJH
ZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAgICAgICAgaWYgKCFt
X3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJH
ZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZm
ZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2Nr
QnVmZmVyID0gMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFM
ZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSkgLyAyOworICAgICAgICAgICAgbV9jdXJy
ZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgc2l6ZV90IG51bUJ5dGVzVG9D
b3B5RnJvbVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1CeXRlc1RvQ29weSwgKG1fc2FtcGxlQmxv
Y2tCdWZmZXJTaXplIC0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikpOworICAg
ICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3Nh
bXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVy
LCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoZmlyc3RDaGFubmVsICsgY3VycmVudE9m
ZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVy
Q29weURhdGFCeXRlcyBmaXJzdCBjaGFubmVsIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1
ZmZlci5nZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArIG1fc2FtcGxl
QmxvY2tCdWZmZXJTaXplLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoc2Vjb25kQ2hh
bm5lbCArIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcikpKSB7CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc2Vjb25kIGNoYW5uZWwgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxl
QmJ1ZjsKKyAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciArPSBudW1CeXRl
c1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1w
bGVCbG9ja0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICB9
CisgICAgfQorCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IGZpcnN0
Q2hhbm5lbDsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUg
PSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVm
ZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVm
ZmVyc1sxXS5tRGF0YSA9IHNlY29uZENoYW5uZWw7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVm
ZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOworICAg
IGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0gMTsKKworICAg
ICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURh
dGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisgICAgcmV0dXJu
IG5vRXJyOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1Nh
bXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUgbG93V2F0ZXJUaW1lKQoreworICAg
IGlmICghbV9jb252ZXJ0ZXIpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSAoQ01TYW1wbGVCdWZm
ZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1faW5wdXRCdWZm
ZXJRdWV1ZS5nZXQoKSkpKTsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlcik7CisKKyAgICAgICAgbV9j
dXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVz
ZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2Vu
dGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50YXRpb25UaW1l
U3RhbXAoYnVmZmVyKTsKKworICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1w
bGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpOworICAgICAgICBpZiAoIWluaXRB
dWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9u
LCBtX291dHB1dENvZGVjVHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
d2hpbGUgKENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVyVGltZSkgfHwgQ01USU1FX0NPTVBBUkVf
SU5MSU5FKGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJRdWV1ZUdldER1cmF0aW9uKG1faW5wdXRC
dWZmZXJRdWV1ZS5nZXQoKSkpKSB7CisgICAgICAgIEF1ZGlvQnVmZmVyTGlzdCBmaWxsQnVmZmVy
TGlzdDsKKworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9IDE7CisgICAg
ICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fZGVzdGlu
YXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1C
dWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSAoVUludDMyKW1fZGVzdGluYXRpb25CdWZmZXIuY2Fw
YWNpdHkoKTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2Rl
c3RpbmF0aW9uQnVmZmVyLmRhdGEoKTsKKworICAgICAgICBVSW50MzIgb3V0cHV0UGFja2V0U2l6
ZSA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gbV9kZXN0aW5hdGlvbkZv
cm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtX21heE91dHB1dFBhY2tldFNpemU7CisgICAgICAgIFVJ
bnQzMiBudW1PdXRwdXRQYWNrZXRzID0gKFVJbnQzMiltX2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFj
aXR5KCkgLyBvdXRwdXRQYWNrZXRTaXplOworCisgICAgICAgIGF1dG8gZXJyb3IgPSBBdWRpb0Nv
bnZlcnRlckZpbGxDb21wbGV4QnVmZmVyKG1fY29udmVydGVyLmdldCgpLCBhdWRpb0NvbnZlcnRl
ckNvbXBsZXhJbnB1dERhdGFQcm9jLCB0aGlzLCAmbnVtT3V0cHV0UGFja2V0cywgJmZpbGxCdWZm
ZXJMaXN0LCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSk7CisgICAgICAg
IGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJGaWxsQ29tcGxleEJ1
ZmZlciBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghbnVtT3V0cHV0UGFja2V0cykKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGF1dG8gYnVmZmVyID0gc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMobnVt
T3V0cHV0UGFja2V0cywgZmlsbEJ1ZmZlckxpc3QpOworCisgICAgICAgIGF0dGFjaFByaW1pbmdU
cmltc0lmTmVlZGVkKGJ1ZmZlcik7CisKKyAgICAgICAgZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNl
dE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIsIG1fY3VycmVudE91dHB1dFByZXNl
bnRhdGlvblRpbWVTdGFtcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
Q01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBD
TVRpbWUgbmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7
CisgICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFk
ZChtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG5hdGl2ZUR1cmF0aW9uKTsK
KworICAgICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1
dER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRp
bWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAs
IG91dHB1dER1cmF0aW9uKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVldWVFbnF1ZXVl
KG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAgIGlmIChlcnJvcikg
eworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxl
QnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVl
dWUobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBD
TUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIHByb2Nl
c3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUobV9sb3dXYXRlclRpbWUpOworfQorCit2
b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKENNU2FtcGxl
QnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hR
dWV1ZSwgXnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykKKyAgICAgICAgICAgIHByb2Nlc3NT
YW1wbGVCdWZmZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVCdWZmZXJSZWYgQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAg
IHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVl
dWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisKK1JldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0
U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1fb3V0cHV0
QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCBiMTQ3Y2EyODgyOWIwZjEwMzBiZGE3
NGEwODQyNmM0NTY1ZTk4NzFlLi5iMjViNDRkMjgzM2FkMDVmMWE2MjIzMzBiYjI2ZGNiN2EyMWZj
ZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EuaApAQCAtMjQsNyArMjQsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJ
VEVSREVMRUdBVEUpCisKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KQEAgLTM0LDExICszNiwxNiBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmlu
YXJ5U2VtYXBob3JlLmg+CisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+Cisj
aW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNh
bXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFx
dWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwordHlwZWRlZiBz
dHJ1Y3Qgb3BhcXVlQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiAqQ01CdWZmZXJRdWV1ZVRyaWdn
ZXJUb2tlbjsKIAogT0JKQ19DTEFTUyBBVkFzc2V0V3JpdGVyOwogT0JKQ19DTEFTUyBBVkFzc2V0
V3JpdGVySW5wdXQ7CitPQkpDX0NMQVNTIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZTsKIAogbmFt
ZXNwYWNlIFdURiB7CiBjbGFzcyBNZWRpYVRpbWU7CkBAIC00Niw1MSArNTMsNzIgQEAgY2xhc3Mg
TWVkaWFUaW1lOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvcjsKIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiBjbGFzcyBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOworY2xhc3MgVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4geworY2xhc3MgV0VC
Q09SRV9FWFBPUlQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdURjo6RGVzdHJ1Y3Rpb25U
aHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIsIFdlYWtQdHJGYWN0b3J5SW5pdGlhbGl6YXRpb246OkVhZ2VyPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGNvbnN0
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBhdWRpb1RyYWNrLCBjb25zdCBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSogdmlkZW9UcmFjayk7CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdo
dCk7CiAgICAgfk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCk7Ci0gICAgCi0gICAgYm9vbCBz
ZXR1cFdyaXRlcigpOwotICAgIGJvb2wgc2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWln
aHQpOwotICAgIGJvb2wgc2V0QXVkaW9JbnB1dCgpOworCiAgICAgdm9pZCBhcHBlbmRWaWRlb1Nh
bXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1NhbXBs
ZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9wUmVj
b3JkaW5nKCk7CiAgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmKT4mJik7CiAKKyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgY2hh
ciosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwor
CiBwcml2YXRlOgotICAgIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFz
c2V0V3JpdGVyPiYmLCBTdHJpbmcmJiBwYXRoKTsKKyAgICBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcihib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKTsKICAgICB2b2lkIGNsZWFyKCk7CiAK
LSAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7Ci0gICAgUmV0YWluUHRyPEFW
QXNzZXRXcml0ZXJJbnB1dD4gbV92aWRlb0lucHV0OwotICAgIFJldGFpblB0cjxBVkFzc2V0V3Jp
dGVySW5wdXQ+IG1fYXVkaW9JbnB1dDsKLQotICAgIFN0cmluZyBtX3BhdGg7Ci0gICAgTG9jayBt
X3ZpZGVvTG9jazsKLSAgICBMb2NrIG1fYXVkaW9Mb2NrOwotICAgIEJpbmFyeVNlbWFwaG9yZSBt
X2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmU7Ci0gICAgQmluYXJ5U2VtYXBob3JlIG1fZmluaXNoV3Jp
dGluZ0F1ZGlvU2VtYXBob3JlOwotICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdW
aWRlb1NlbWFwaG9yZTsKKyAgICBib29sIGluaXRpYWxpemUoKTsKKworICAgIHN0YXRpYyB2b2lk
IGNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBDTUJ1ZmZlclF1ZXVl
VHJpZ2dlclRva2VuKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZm
ZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CisKKyAgICB2b2lk
IHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICB2b2lkIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZm
ZXJzKCk7CisKKyAgICBib29sIGFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpOwor
ICAgIGJvb2wgYXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKCk7CisKKyAgICB2b2lk
IHByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCk7CisgICAgdm9pZCBwcm9j
ZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpOworCisgICAgdm9pZCBmbHVzaENv
bXByZXNzZWRTYW1wbGVCdWZmZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworCiAgICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsgZmFsc2Ug
fTsKICAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNGaXJzdEF1
ZGlvU2FtcGxlIHsgdHJ1ZSB9OwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9hdWRpb1B1bGxRdWV1
ZTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fdmlkZW9QdWxsUXVldWU7Ci0gICAgRGVxdWU8UmV0
YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV92aWRlb0J1ZmZlclBvb2w7Ci0gICAgRGVxdWU8
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV9hdWRpb0J1ZmZlclBvb2w7CisKKyAgICBS
ZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBib29sIG1faXNTdG9wcGlu
ZyB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+IG1fZmV0Y2hEYXRhQ29t
cGxldGlvbkhhbmRsZXI7CisKKyAgICBib29sIG1faGFzQXVkaW87CisgICAgYm9vbCBtX2hhc1Zp
ZGVvOworCisgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKKyAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklu
cHV0PiBtX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dDsKKworICAgIFJldGFpblB0cjxDTUZvcm1hdERl
c2NyaXB0aW9uUmVmPiBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVf
cHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV92aWRlb0NvbXByZXNzb3I7CisgICAg
UmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQ7Cisg
ICAgQ01UaW1lIG1fbGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZTsKKyAgICBDTVRpbWUgbV9sYXN0
VmlkZW9EZWNvZGluZ1RpbWU7CisgICAgYm9vbCBtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMgeyBm
YWxzZSB9OworCisgICAgUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4gbV93cml0
ZXJEZWxlZ2F0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFW
RShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggMjMzNTRmNDc4NGRlMDkyZjA0ODdjMTg1
NGZjNWIyNmE1ZTIyMTFhYy4uNWNlMDQ2OTk1MjhlZTE2MGU5NTI3YzAxZDI5Nzk5ZjUwMjAzZmFl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbQpAQCAtMjYsMTExICsyNiwxMjggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCiAKLSNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmgiCiAjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5o
IgorI2luY2x1ZGUgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1ZGUgIldl
YkF1ZGlvQnVmZmVyTGlzdC5oIgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVy
Lmg+CiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJJbnB1dC5oPgorI2luY2x1
ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyX1ByaXZhdGUuaD4KKyNpbmNsdWRlIDxwYWwv
YXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHBhbC9jZi9D
b3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHd0Zi9CbG9ja1B0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Cisj
aW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZv
dW5kYXRpb25Tb2Z0TGluay5oPgogCi0jdW5kZWYgQVZFbmNvZGVyQml0UmF0ZUtleQotI2RlZmlu
ZSBBVkVuY29kZXJCaXRSYXRlS2V5IGdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2so
KQotI3VuZGVmIEFWRm9ybWF0SURLZXkKLSNkZWZpbmUgQVZGb3JtYXRJREtleSBnZXRBVkZvcm1h
dElES2V5V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBBVk51bWJlck9mQ2hhbm5lbHNLZXkKLSNkZWZp
bmUgQVZOdW1iZXJPZkNoYW5uZWxzS2V5IGdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxs
YmFjaygpCi0jdW5kZWYgQVZTYW1wbGVSYXRlS2V5Ci0jZGVmaW5lIEFWU2FtcGxlUmF0ZUtleSBn
ZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJhY2soKQorQGludGVyZmFjZSBXZWJBVkFzc2V0V3Jp
dGVyRGVsZWdhdGUgOiBOU09iamVjdCA8QVZBc3NldFdyaXRlckRlbGVnYXRlPiB7CisgICAgV2Vh
a1B0cjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gbV93cml0ZXI7Cit9CiAK
LW5hbWVzcGFjZSBXZWJDb3JlIHsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdyaXRlcjooV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqKXdyaXRlcjsKKy0gKHZvaWQpY2xvc2U7
CistICh2b2lkKWZpbmlzaDsKIAotdXNpbmcgbmFtZXNwYWNlIFBBTDsKK0BlbmQKIAotc3RhdGlj
IE5TU3RyaW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKK0BpbXBsZW1lbnRhdGlv
biBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgeworfTsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoV3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciopd3JpdGVyCiB7
Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgpKQotICAg
ICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKTsKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYg
KHNlbGYpCisgICAgICAgIHNlbGYtPm1fd3JpdGVyID0gbWFrZVdlYWtQdHIod3JpdGVyKTsKIAot
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZGb3JtYXRJREtl
eSIpOwotICAgIHJldHVybiBAIkFWRm9ybWF0SURLZXkiOworICAgIHJldHVybiBzZWxmOwogfQog
Ci1zdGF0aWMgTlNTdHJpbmcgKmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygp
CistICh2b2lkKWRlYWxsb2MKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9B
Vk51bWJlck9mQ2hhbm5lbHNLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRh
dGlvbl9BVk51bWJlck9mQ2hhbm5lbHNLZXkoKTsKLQotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZOdW1iZXJPZkNoYW5uZWxzS2V5Iik7Ci0gICAgcmV0dXJu
IEAiQVZOdW1iZXJPZkNoYW5uZWxzS2V5IjsKKyAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLXN0
YXRpYyBOU1N0cmluZyAqZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQp
YXNzZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQcm9kdWNlRnJhZ21l
bnRlZEhlYWRlckRhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRIZWFkZXJEYXRhCiB7Ci0gICAgaWYg
KFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCi0gICAgICAgIHJl
dHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCk7CisgICAgVU5VU0VE
X1BBUkFNKGFzc2V0V3JpdGVyKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAg
IGlmIChhdXRvIHNpemUgPSBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3RoXSkgeworICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVkFz
c2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGJ5
dGVzXSksIHNpemUpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRT
ZWxmLT5tX3dyaXRlcikKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+bV93cml0
ZXItPmFwcGVuZERhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YSwgIkZhaWxlZCB0byBsb2FkIEFWU2FtcGxlUmF0ZUtleSIpOwotICAgIHJldHVybiBAIkFWU2Ft
cGxlUmF0ZUtleSI7CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dyaXRlci0+YXBwZW5k
RGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGJ5dGVz
XSksIFtmcmFnbWVudGVkSGVhZGVyRGF0YSBsZW5ndGhdKTsKIH0KIAotc3RhdGljIE5TU3RyaW5n
ICpnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQpYXNzZXRXcml0
ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQcm9kdWNlRnJhZ21lbnRlZE1lZGlh
RGF0YTooTlNEYXRhICopZnJhZ21lbnRlZE1lZGlhRGF0YSBmcmFnbWVudGVkTWVkaWFEYXRhUmVw
b3J0OihBVkZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQgKilmcmFnbWVudGVkTWVkaWFEYXRhUmVw
b3J0CiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0
ZUtleSgpKQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJp
dFJhdGVLZXkoKTsKKyAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0ZXIpOworICAgIFVOVVNFRF9Q
QVJBTShmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0KTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgp
KSB7CisgICAgICAgIGlmIChhdXRvIHNpemUgPSBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5ndGhd
KSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWlu
UHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4oc2VsZiksIGJ1ZmZlciA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZE1l
ZGlhRGF0YSBieXRlc10pLCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAo
cHJvdGVjdGVkU2VsZi0+bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNl
bGYtPm1fd3JpdGVyLT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkVuY29kZXJCaXRSYXRlS2V5Iik7Ci0gICAg
cmV0dXJuIEAiQVZFbmNvZGVyQml0UmF0ZUtleSI7CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAg
ICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50
ZWRNZWRpYURhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSk7CiB9CiAK
LVJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogYXVkaW9UcmFjaywg
Y29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHZpZGVvVHJhY2spCistICh2b2lkKWNsb3Nl
CiB7Ci0gICAgaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKLSAgICBpZiAodmlkZW9UcmFjaykg
ewotICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IHZpZGVvVHJhY2stPnNldHRpbmdzKCk7Ci0gICAg
ICAgIHdpZHRoID0gc2V0dGluZ3Mud2lkdGgoKTsKLSAgICAgICAgaGVpZ2h0ID0gc2V0dGluZ3Mu
aGVpZ2h0KCk7Ci0gICAgfQotICAgIHJldHVybiBjcmVhdGUoISFhdWRpb1RyYWNrLCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICBtX3dyaXRlciA9IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShib29s
IGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCistICh2b2lkKWZpbmlzaAogewotICAg
IE5TU3RyaW5nICpkaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rv
cnkoQCJ2aWRlb3MiKTsKLSAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIi8lbGxkLm1wNCIsIENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGlt
ZUNsb2NrKCkpLnZhbHVlXTsKLSAgICBOU1N0cmluZyAqcGF0aCA9IFtkaXJlY3Rvcnkgc3RyaW5n
QnlBcHBlbmRpbmdTdHJpbmc6ZmlsZW5hbWVdOworICAgIG1fd3JpdGVyID0gbnVsbHB0cjsKK30K
IAotICAgIE5TVVJMICpvdXRwdXRVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhdOwot
ICAgIFN0cmluZyBmaWxlUGF0aCA9IFtwYXRoIFVURjhTdHJpbmddOwotICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOwotICAgIGF1dG8gYXZBc3NldFdyaXRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NB
VkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0aFVSTDpvdXRwdXRVUkwgZmlsZVR5cGU6QVZG
aWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOwotICAgIGlmIChlcnJvcikgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3Rh
bmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29kZSk7Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KK0BlbmQKIAotICAgIGF1dG8gd3JpdGVyID0gYWRv
cHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihXVEZNb3ZlKGF2QXNzZXRXcml0
ZXIpLCBXVEZNb3ZlKGZpbGVQYXRoKSkpOworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBu
YW1lc3BhY2UgUEFMOwogCi0gICAgaWYgKGhhc0F1ZGlvICYmICF3cml0ZXItPnNldEF1ZGlvSW5w
dXQoKSkKK1JlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
Cit7CisgICAgYXV0byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyKGhhc0F1ZGlvLCB3aWR0aCAmJiBoZWlnaHQpKTsKKyAgICBpZiAoIXdyaXRlci0+aW5p
dGlhbGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gd3JpdGVyOwor
fQogCi0gICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewotICAgICAgICBpZiAoIXdyaXRlci0+c2V0
VmlkZW9JbnB1dCh3aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRWaWRlb091
dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQgKm1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBDTUJ1
ZmZlclF1ZXVlVHJpZ2dlclRva2VuKQoreworICAgIGF1dG8gKndyaXRlciA9IHN0YXRpY19jYXN0
PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKj4obWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIp
OworICAgIHdyaXRlci0+cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsK
K30KIAotICAgIHJldHVybiBXVEZNb3ZlKHdyaXRlcik7Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkICptZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbikKK3sKKyAg
ICBhdXRvICp3cml0ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcio+
KG1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKTsKKyAgICB3cml0ZXItPnByb2Nlc3NOZXdDb21w
cmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCk7CiB9CiAKLU1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4m
JiBhdkFzc2V0V3JpdGVyLCBTdHJpbmcmJiBmaWxlUGF0aCkKLSAgICA6IG1fd3JpdGVyKFdURk1v
dmUoYXZBc3NldFdyaXRlcikpCi0gICAgLCBtX3BhdGgoV1RGTW92ZShmaWxlUGF0aCkpCitNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9vbCBo
YXNBdWRpbywgYm9vbCBoYXNWaWRlbykKKyAgICA6IG1faGFzQXVkaW8oaGFzQXVkaW8pCisgICAg
LCBtX2hhc1ZpZGVvKGhhc1ZpZGVvKQogewogfQogCkBAIC0xMzksMTQwICsxNTYsMjI5IEBAIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQog
ICAgIGNsZWFyKCk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFy
KCkKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmluaXRpYWxpemUoKQogewotICAg
IGlmIChtX3ZpZGVvSW5wdXQpIHsKLSAgICAgICAgbV92aWRlb0lucHV0LmNsZWFyKCk7Ci0gICAg
ICAgIGRpc3BhdGNoX3JlbGVhc2UobV92aWRlb1B1bGxRdWV1ZSk7CisgICAgTlNFcnJvciAqZXJy
b3IgPSBuaWw7CisgICAgbV93cml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRl
ckluc3RhbmNlKCkgaW5pdFdpdGhGaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVycm9y
XSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3Ry
ZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29k
ZSAlbGQiLCAobG9uZyllcnJvci5jb2RlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
LSAgICBpZiAobV9hdWRpb0lucHV0KSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1dC5jbGVhcigpOwot
ICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fYXVkaW9QdWxsUXVldWUpOworCisgICAgbV93cml0
ZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoV3JpdGVyOiB0aGlzXSk7CisgICAgW21fd3JpdGVyLmdldCgpIHNldERlbGVnYXRlOm1f
d3JpdGVyRGVsZWdhdGUuZ2V0KCldOworCisgICAgaWYgKG1faGFzQXVkaW8pIHsKKyAgICAgICAg
bV9hdWRpb0NvbXByZXNzb3IgPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShj
b21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7CisgICAgICAgIGlmICgh
bV9hdWRpb0NvbXByZXNzb3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IGlmIChtX3dyaXRlcikKLSAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKyAgICBpZiAobV9oYXNW
aWRlbykgeworICAgICAgICBtX3ZpZGVvQ29tcHJlc3NvciA9IFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6Y3JlYXRlKGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQsIGNvbXByZXNzZWRWaWRlb091
dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgaWYgKCFtX3ZpZGVvQ29tcHJlc3Nv
cikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOwotICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpw
cm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpCit7CisgICAgQVNTRVJUKG1f
aGFzVmlkZW8pOworICAgIGlmICghbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAg
IG1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3Jp
cHRpb24obV92aWRlb0NvbXByZXNzb3ItPmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpKTsKKyAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10g
eworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX2hhc0F1ZGlvICYmICFtX2F1ZGlvRm9ybWF0
RGVzY3JpcHRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFy
dEFzc2V0V3JpdGVyKCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRl
ZFdyaXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVm
ZmVycygpOwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRWaWRlb0lu
cHV0KGludCB3aWR0aCwgaW50IGhlaWdodCkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCkKIHsKLSAgICBBU1NF
UlQoIW1fdmlkZW9JbnB1dCk7Ci0gICAgCi0gICAgTlNEaWN0aW9uYXJ5ICpjb21wcmVzc2lvblBy
b3BlcnRpZXMgPSBAewotICAgICAgICBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgOiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDp3aWR0aCAqIGhlaWdodCAqIDEyXSwKLSAgICAgICAgQVZWaWRlb0V4
cGVjdGVkU291cmNlRnJhbWVSYXRlS2V5IDogQCgzMCksCi0gICAgICAgIEFWVmlkZW9NYXhLZXlG
cmFtZUludGVydmFsS2V5IDogQCgxMjApLAotICAgICAgICBBVlZpZGVvUHJvZmlsZUxldmVsS2V5
IDogQVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xldmVsCi0gICAgfTsKLQotICAgIE5T
RGljdGlvbmFyeSAqdmlkZW9TZXR0aW5ncyA9IEB7Ci0gICAgICAgIEFWVmlkZW9Db2RlY0tleTog
QVZWaWRlb0NvZGVjSDI2NCwKLSAgICAgICAgQVZWaWRlb1dpZHRoS2V5OiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDp3aWR0aF0sCi0gICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6IFtOU051bWJlciBu
dW1iZXJXaXRoSW50OmhlaWdodF0sCi0gICAgICAgIEFWVmlkZW9Db21wcmVzc2lvblByb3BlcnRp
ZXNLZXk6IGNvbXByZXNzaW9uUHJvcGVydGllcwotICAgIH07CisgICAgQVNTRVJUKG1faGFzQXVk
aW8pOworICAgIGlmICghbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIG1fYXVk
aW9Gb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24o
bV9hdWRpb0NvbXByZXNzb3ItPmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpKTsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10geworICAg
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChtX2hhc1ZpZGVvICYmICFtX3ZpZGVvRm9ybWF0RGVzY3Jp
cHRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFydEFzc2V0
V3JpdGVyKCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRp
bmcpCisgICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygp
OworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVy
KCkKK3sKKyAgICBpZiAobV9oYXNWaWRlbykgeworICAgICAgICBtX3ZpZGVvQXNzZXRXcml0ZXJJ
bnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGlu
aXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6bmlsIHNvdXJj
ZUZvcm1hdEhpbnQ6bV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7CisgICAgICAgIFtt
X3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVl
XTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV92aWRlb0Fzc2V0
V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZh
aWxlZCBjYW5BZGRJbnB1dCBmb3IgdmlkZW8iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVy
SW5wdXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBtX3ZpZGVvSW5wdXQgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpB
Vk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOnZpZGVvU2V0dGluZ3Mgc291cmNlRm9ybWF0
SGludDpuaWxdKTsKLSAgICBbbV92aWRlb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxU
aW1lOnRydWVdOworICAgIGlmIChtX2hhc0F1ZGlvKSB7CisgICAgICAgIG1fYXVkaW9Bc3NldFdy
aXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNl
KCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczpuaWwg
c291cmNlRm9ybWF0SGludDptX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCldKTsKKyAgICAg
ICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1l
OnRydWVdOworICAgICAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBjYW5BZGRJbnB1dDptX2F1ZGlv
QXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0
ZXIgZmFpbGVkIGNhbkFkZElucHV0IGZvciBhdWRpbyIpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIFttX3dyaXRlci5nZXQoKSBhZGRJbnB1dDptX2F1ZGlvQXNzZXRX
cml0ZXJJbnB1dC5nZXQoKV07CisgICAgfQogICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFk
ZElucHV0Om1fdmlkZW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV92aWRlb0lucHV0ID0gbnVs
bHB0cjsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgdmlkZW8g
aW5wdXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBzdGFydFdyaXRpbmdd
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIHN0YXJ0V3JpdGluZyIpOwor
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFttX3dyaXRlciBhZGRJbnB1dDptX3ZpZGVvSW5w
dXQuZ2V0KCldOwotICAgIG1fdmlkZW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUo
IldlYkNvcmVWaWRlb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCk7CisKKyAgICBbbV93cml0ZXIuZ2V0KCkgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOmtD
TVRpbWVaZXJvXTsKKworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisKKyAg
ICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKK30KKworYm9vbCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKCkKK3sKKyAgICBp
ZiAoIW1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IVttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gYnVmZmVyID0gbV9hdWRpb0NvbXByZXNzb3It
PnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNh
bXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRBdWRpb0lucHV0KCkKK2Jvb2wgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpCiB7
Ci0gICAgQVNTRVJUKCFtX2F1ZGlvSW5wdXQpOworICAgIGlmICghbV92aWRlb0NvbXByZXNzb3Ip
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5TRGljdGlvbmFyeSAqYXVkaW9TZXR0aW5n
cyA9IEB7Ci0gICAgICAgIEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4MDAwKSwKLSAgICAgICAg
QVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAotICAgICAgICBBVk51bWJl
ck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAotICAgICAgICBBVlNhbXBsZVJhdGVLZXkgOiBAKDIyMDUw
KQotICAgIH07CisgICAgaWYgKCFbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1v
cmVNZWRpYURhdGFdKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2F1ZGlvSW5wdXQg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0
aE1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdzOmF1ZGlvU2V0dGluZ3Mg
c291cmNlRm9ybWF0SGludDpuaWxdKTsKLSAgICBbbV9hdWRpb0lucHV0IHNldEV4cGVjdHNNZWRp
YURhdGFJblJlYWxUaW1lOnRydWVdOwotICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElu
cHV0Om1fYXVkaW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV9hdWRpb0lucHV0ID0gbnVsbHB0
cjsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgYXVkaW8gaW5w
dXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7CisgICAgYXV0
byBidWZmZXIgPSBtX3ZpZGVvQ29tcHJlc3Nvci0+dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOwor
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFttX3dy
aXRlciBhZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldOwotICAgIG1fYXVkaW9QdWxsUXVldWUg
PSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVBdWRpb1JlY29yZGluZ1B1bGxCdWZmZXJR
dWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisKKyAgICBtX2xhc3RWaWRlb1ByZXNlbnRh
dGlvblRpbWUgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIu
Z2V0KCkpOworICAgIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lID0gQ01TYW1wbGVCdWZmZXJHZXRE
ZWNvZGVUaW1lU3RhbXAoYnVmZmVyLmdldCgpKTsKKyAgICBtX2hhc0VuY29kZWRWaWRlb1NhbXBs
ZXMgPSB0cnVlOworCisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNh
bXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygp
Cit7CisgICAgd2hpbGUgKGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpIHx8IGFw
cGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpKSB7IH07Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3Jp
dGVySW5wdXQgKmFzc2V0V3JpdGVySW5wdXQsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAs
IENNVGltZSBkZWNvZGluZ1RpbWVTdGFtcCkKK3sKKyAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGlt
aW5nSW5mbyA9IHsga0NNVGltZUludmFsaWQsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZGVjb2Rp
bmdUaW1lU3RhbXB9OworCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyID0gTlVMTDsKKyAg
ICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
TlVMTCwgdHJ1ZSwgTlVMTCwgTlVMTCwgTlVMTCwgMCwgMSwgJnRpbWluZ0luZm8sIDAsIE5VTEws
ICZidWZmZXIpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZEVuZHNQcmV2aW91
c1NhbXBsZUR1cmF0aW9uTWFya2VyIGZhaWxlZCBDTVNhbXBsZUJ1ZmZlckNyZWF0ZSB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gc2FtcGxlQnVmZmVy
ID0gYWRvcHRDRihidWZmZXIpOworCisgICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlci5n
ZXQoKSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJh
dGlvbiwga0NGQm9vbGVhblRydWUsIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7
CisgICAgaWYgKCFbYXNzZXRXcml0ZXJJbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6c2FtcGxlQnVm
ZmVyLmdldCgpXSkKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRTYW1wbGVCdWZmZXIgdG8gd3JpdGVyIGlucHV0
IGZhaWxlZCIpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRF
bmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2hhc0VuY29kZWRWaWRlb1NhbXBs
ZXMpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFE
YXRhXSkgeworICAgICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlciht
X3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1l
LCBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2NrID0gbWFrZUJsb2NrUHRy
KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAod2Vh
a1RoaXMpIHsKKyAgICAgICAgICAgIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFy
a2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpLCBtX2xhc3RWaWRlb1ByZXNlbnRhdGlv
blRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsKKyAgICAgICAgICAgIFttX3ZpZGVvQXNz
ZXRXcml0ZXJJbnB1dCBtYXJrQXNGaW5pc2hlZF07CisgICAgICAgIH0KKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKyAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgcmVx
dWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1
c2luZ0Jsb2NrOmJsb2NrLmdldCgpXTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1
ZmZlcnMoKTsKKyAgICBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNsZWFyKCkKK3sKKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLmNs
ZWFyKCk7CisKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKKwogc3RhdGljIGlubGluZSBSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFt
cChDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikKIHsKICAgICBDTVRpbWUgc3RhcnRU
aW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7CiAgICAgQ01J
dGVtQ291bnQgY291bnQgPSAwOwogICAgIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5m
b0FycmF5KG9yaWdpbmFsQnVmZmVyLCAwLCBuaWwsICZjb3VudCk7Ci0gICAgCisKICAgICBWZWN0
b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3VudCk7CiAgICAgQ01TYW1wbGVCdWZm
ZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5m
by5kYXRhKCksICZjb3VudCk7Ci0gICAgCi0gICAgZm9yIChDTUl0ZW1Db3VudCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKKworICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK
ICAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1wID0ga0NNVGltZUludmFsaWQ7CiAg
ICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IHN0YXJ0VGltZTsKICAg
ICB9Ci0gICAgCisKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdCdWZmZXIgPSBudWxscHRyOwot
ICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgp
LCAmbmV3QnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTVNh
bXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9y
aWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAmbmV3QnVmZmVyKSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyIENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1cm4g
YWRvcHRDRihuZXdCdWZmZXIpOwogfQotCisgICAgCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVC
dWZmZXIpCiB7Ci0gICAgQVNTRVJUKG1fdmlkZW9JbnB1dCk7Ci0gICAgaWYgKG1faXNTdG9wcGVk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpIHsKLSAg
ICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewotICAgICAgICAgICAgbV9pc1N0
b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVs
ZCIsIChsb25nKVttX3dyaXRlciBlcnJvcl0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dl
dFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICBtX2hhc1N0YXJ0ZWRX
cml0aW5nID0gdHJ1ZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
PiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fdmlkZW9JbnB1dCByZXF1ZXN0TWVk
aWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX3ZpZGVvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBk
byB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGlzUmVhZHlGb3JNb3JlTWVk
aWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
dmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX3ZpZGVvQnVmZmVyUG9vbC50YWtlRmlyc3Qo
KTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIVttX3ZpZGVvSW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV0pCi0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0g
ICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgW21fdmlkZW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAg
ICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH1dOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8g
YnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0
YW1wKHNhbXBsZUJ1ZmZlcik7Ci0gICAgaWYgKCFidWZmZXJXaXRoQ3VycmVudFRpbWUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOwot
ICAgIG1fdmlkZW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcldpdGhDdXJyZW50VGlt
ZSkpOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHNldCB0aGUgdGltZXN0YW1wcyBpZiB0
aGV5IGFyZSBhbHJlYWR5IHNldC4KKyAgICBpZiAoYXV0byBidWZmZXJXaXRoQ3VycmVudFRpbWUg
PSBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSkKKyAg
ICAgICAgbV92aWRlb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihidWZmZXJXaXRoQ3VycmVu
dFRpbWUuZ2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbnN0IEF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQpAQCAtMjgwLDY4ICszODYsMzkgQEAgc3RhdGljIGlu
bGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbihjb24KICAgICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25z
dCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2Ny
aXB0aW9uKCkuZGVzY3JpcHRpb24pOwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0
ID0gbnVsbHB0cjsKICAgICBhdXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24sIDAsIE5VTEwsIDAsIE5V
TEwsIE5VTEwsICZmb3JtYXQpOwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1cm4gYWRvcHRD
Rihmb3JtYXQpOwogfQogCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJl
Zj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZm9ybWF0LCBzaXplX3Qgc2FtcGxlQ291bnQpCi17Ci0gICAgQ01UaW1l
IHN0YXJ0VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOwot
ICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgYXV0byBl
cnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtD
RkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQsIHNhbXBs
ZUNvdW50LCBzdGFydFRpbWUsIE5VTEwsICZzYW1wbGVCdWZmZXIpOwotICAgIGlmIChlcnJvcikK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVy
KTsKLX0KLQotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1w
bGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBz
YW1wbGVDb3VudCkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBj
cmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29u
c3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFU
aW1lJiB0aW1lLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7Ci0gICAgQVNTRVJUKG1fYXVkaW9JbnB1
dCk7Ci0gICAgaWYgKCghbV9oYXNTdGFydGVkV3JpdGluZyAmJiBtX3ZpZGVvSW5wdXQpIHx8IG1f
aXNTdG9wcGVkKQotICAgICAgICByZXR1cm47CiAgICAgYXV0byBmb3JtYXQgPSBjcmVhdGVBdWRp
b0Zvcm1hdERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKICAgICBpZiAoIWZvcm1hdCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChtX2lzRmlyc3RBdWRpb1NhbXBsZSkgewotICAgICAgICBpZiAo
IW1fdmlkZW9JbnB1dCkgewotICAgICAgICAgICAgLy8gYXVkaW8tb25seSByZWNvcmRpbmcuCi0g
ICAgICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7Ci0gICAgICAgICAgICAg
ICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6Q01D
bG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICAgICAgbV9o
YXNTdGFydGVkV3JpdGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgbV9pc0ZpcnN0QXVk
aW9TYW1wbGUgPSBmYWxzZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fYXVkaW9JbnB1dCByZXF1ZXN0
TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX2F1ZGlvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV9hdWRpb0lucHV0IGlzUmVhZHlGb3JNb3Jl
TWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7Ci0gICAgICAgICAgICAgICAgaWYg
KG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyUG9vbC50YWtlRmly
c3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAgICAgICAg
ICAgICBbbV9hdWRpb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwotICAg
ICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYg
bV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgW21fYXVkaW9J
bnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nQXVk
aW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9
IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRo
UGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxM
LCBOVUxMLCBmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50LCB0b0NNVGltZSh0aW1lKSwgTlVMTCwg
JnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgY3JlYXRlQXVkaW9T
YW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9w
dENGKHNhbXBsZUJ1ZmZlcik7CiAKLSAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlv
U2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhmb3JtYXQuZ2V0KCksIHNhbXBsZUNv
dW50KTsKLSAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8g
ZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0KHNh
bXBsZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVs
dCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkpOwotICAgIGlm
IChlcnJvcikKLSAgICAgICAgcmV0dXJuOworICAgIGVycm9yID0gQ01TYW1wbGVCdWZmZXJTZXRE
YXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdChidWZmZXIuZ2V0KCksIGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlz
dD4oZGF0YSkubGlzdCgpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTVNhbXBsZUJ1
ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0IGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsK
K30KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb0xvY2spOwotICAgIG1fYXVk
aW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKHNhbXBsZUJ1ZmZlcikpOwordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgc2l6ZV90IHNhbXBsZUNvdW50KQorewor
ICAgIGlmIChhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGRhdGEs
IGRlc2NyaXB0aW9uLCB0aW1lLCBzYW1wbGVDb3VudCkpCisgICAgICAgIG1fYXVkaW9Db21wcmVz
c29yLT5hZGRTYW1wbGVCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKTsKIH0KIAogdm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCkBAIC0zNTAsMzUgKzQyNyw0
MCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworCisgICAgaWYgKG1fdmlk
ZW9Db21wcmVzc29yKQorICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+ZmluaXNoKCk7CisgICAg
aWYgKG1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nvci0+ZmluaXNo
KCk7CisKICAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCiAgICAgICAgIHJldHVybjsKICAg
ICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZBc3NldFdyaXRlclN0YXR1c1dyaXRpbmcp
OwotICAgIGlmIChtX3ZpZGVvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2Vt
YXBob3JlLndhaXQoKTsKLQotICAgIGlmIChtX2F1ZGlvSW5wdXQpCi0gICAgICAgIG1fZmluaXNo
V3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKIAogICAgIG1faXNTdG9wcGluZyA9IHRydWU7
Ci0gICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6W3RoaXMs
IHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3ZlKHdlYWtQdHIpLCBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQotICAgICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAobV9mZXRj
aERhdGFDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgICAgICBtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgIGZsdXNoQ29tcHJlc3NlZFNh
bXBsZUJ1ZmZlcnMoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0
aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IHRydWU7Ci0g
ICAgICAgICAgICBjbGVhcigpOwotICAgICAgICB9KTsKLSAgICAgICAgbV9maW5pc2hXcml0aW5n
U2VtYXBob3JlLnNpZ25hbCgpOwotICAgIH1dOwotICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9y
ZS53YWl0KCk7CisgICAgICAgIFttX3dyaXRlciBmbHVzaF07CisgICAgICAgIFttX3dyaXRlciBm
aW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAo
bV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IFdURk1vdmUobV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgbV9mZXRjaERh
dGFDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
bV9oYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNsZWFyKCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfV07CisgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMzkyLDYgKzQ3NCwy
NCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoYnVmZmVyKSk7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVu
ZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKCFtX2RhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9
CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAgICAgICAgbV9kYXRh
ID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZGF0YS0+
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NDE0ZGJiNTQ5Y2Y1YTJlNTE1N2U5MjBjNmM1YWU0YmEwNjBlNjgwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRB
VElPTikKKworI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbmNsdWRlIDxWaWRl
b1Rvb2xib3gvVlRFcnJvcnMuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZm
ZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRDb21wcmVzc2lv
blNlc3Npb24qICBWVENvbXByZXNzaW9uU2Vzc2lvblJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yPiBjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSwgQ01CdWZmZXJR
dWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworICAgIH5WaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKworICAgIHZvaWQgZmluaXNoKCk7CisgICAgdm9pZCBh
ZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOworICAgIENNU2FtcGxlQnVmZmVyUmVm
IGdldE91dHB1dFNhbXBsZUJ1ZmZlcigpOworICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJl
Zj4gdGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlKTsKKworICAgIGJvb2wg
aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09i
amVjdCk7CisKKyAgICB2b2lkIHByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYp
OworICAgIGJvb2wgaW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3JpcHRp
b25SZWYpOworCisgICAgc3RhdGljIHZvaWQgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQg
KnJlZkNvbiwgdm9pZCosIE9TU3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZm
ZXJSZWYpOworCisgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7Cisg
ICAgUmV0YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CisgICAg
UmV0YWluUHRyPFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmPiBtX3Z0U2Vzc2lvbjsKKworICAgIGJv
b2wgbV9pc0VuY29kaW5nIHsgZmFsc2UgfTsKKworICAgIENNVmlkZW9Db2RlY1R5cGUgbV9vdXRw
dXRDb2RlY1R5cGU7CisgICAgZmxvYXQgbV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24geyAy
LjAgfTsKKyAgICB1bnNpZ25lZCBtX2V4cGVjdGVkRnJhbWVSYXRlIHsgMzAgfTsKK307CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIwOGZlNDMyOTVlZjUyYTY3OTBmZjFkZWNhY2E2ZjMwZDliYmJhZmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtMCwwICsxLDE2NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9V
TkRBVElPTikKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVN
ZWRpYS5oPgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxWaWRl
b1Rvb2xib3gvVlRDb21wcmVzc2lvblNlc3Npb24uaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgorCisjaW1wb3J0IDxwYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmNyZWF0ZShDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRy
aWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgYXV0
byBjb21wcmVzc29yID0gc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cj4obmV3IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihvdXRwdXRDb2RlY1R5cGUpKTsKKyAg
ICBpZiAoIWNvbXByZXNzb3ItPmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0KSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbXByZXNzb3I7Cit9CisKK1Zp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKENN
VmlkZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlKQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1
ZXVlIHsgZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSB9CisgICAgLCBtX291dHB1dENvZGVj
VHlwZSB7IG91dHB1dENvZGVjVHlwZSB9Cit7Cit9CisKK1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6flZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCit7CisgICAgaWYgKG1fc2VyaWFs
RGlzcGF0Y2hRdWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNo
UXVldWUpOworfQorCitib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6
ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09i
amVjdCkKK3sKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIGlm
IChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
LCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZv
dXRwdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIg
cXVldWUgJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9v
dXRwdXRCdWZmZXJRdWV1ZSA9IG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIENNQnVmZmVyUXVldWVJ
bnN0YWxsVHJpZ2dlcihtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBjYWxsYmFjaywgY2FsbGJh
Y2tPYmplY3QsIGtDTUJ1ZmZlclF1ZXVlVHJpZ2dlcl9XaGVuRGF0YUJlY29tZXNSZWFkeSwga0NN
VGltZVplcm8sIE5VTEwpOworCisgICAgbV9pc0VuY29kaW5nID0gdHJ1ZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCit7
CisgICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGF1
dG8gZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzKG1fdnRTZXNzaW9u
LmdldCgpLCBrQ01UaW1lSW52YWxpZCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVy
cm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNz
aW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAg
ICAgIGVycm9yID0gQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1
ZS5nZXQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVh
bSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0
YSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgICAgICBtX2lzRW5jb2RpbmcgPSBmYWxz
ZTsKKyAgICB9KTsKK30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnZpZGVv
Q29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cyBzdGF0dXMs
IFZURW5jb2RlSW5mb0ZsYWdzLCBDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUYoc3RhdHVzLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sgc3RhdHVzIGlzICVkIiwgc3RhdHVz
KTsKKyAgICBpZiAoc3RhdHVzICE9IG5vRXJyKQorICAgICAgICByZXR1cm47CisKKyAgICBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgKmNvbXByZXNzb3IgPSBzdGF0aWNfY2FzdDxWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IqPihyZWZDb24pOworCisgICAgYXV0byBlcnJvciA9IENNQnVm
ZmVyUXVldWVFbnF1ZXVlKGNvbXByZXNzb3ItPm1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1
ZmZlcik7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVFbnF1ZXVlIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworfQorCitib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5p
dENvbXByZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVz
Y3JpcHRpb24pCit7CisgICAgQ01WaWRlb0RpbWVuc2lvbnMgZGltZW5zaW9ucyA9IENNVmlkZW9G
b3JtYXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworI2lmIFBM
QVRGT1JNKElPUykKKyAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJTcGVjaWZpY2F0aW9ucyA9IG5p
bDsKKyNlbHNlCisgICAgTlNEaWN0aW9uYXJ5ICplbmNvZGVyU3BlY2lmaWNhdGlvbnMgPSBAeyhf
X2JyaWRnZSBOU1N0cmluZyAqKWtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFy
ZHdhcmVBY2NlbGVyYXRlZFZpZGVvRW5jb2RlcjpAWUVTfTsKKyNlbmRpZgorCisgICAgVlRDb21w
cmVzc2lvblNlc3Npb25SZWYgdnRTZXNzaW9uOworICAgIGF1dG8gZXJyb3IgPSBWVENvbXByZXNz
aW9uU2Vzc2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkaW1lbnNpb25zLndpZHRoLCBk
aW1lbnNpb25zLmhlaWdodCwgbV9vdXRwdXRDb2RlY1R5cGUsIChfX2JyaWRnZSBDRkRpY3Rpb25h
cnlSZWYpZW5jb2RlclNwZWNpZmljYXRpb25zLCBOVUxMLCBOVUxMLCB2aWRlb0NvbXByZXNzaW9u
Q2FsbGJhY2ssIHRoaXMsICZ2dFNlc3Npb24pOworICAgIGlmIChlcnJvcikgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIE5POworICAgIH0KKyAgICBtX3Z0U2Vzc2lvbiA9IGFkb3B0Q0YodnRTZXNz
aW9uKTsKKworICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0
KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUsIGtDRkJvb2xlYW5UcnVlKTsK
KyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9w
ZXJ0eUtleV9SZWFsVGltZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICBlcnJvciA9IFZU
U2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3Bl
cnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgKF9fYnJpZGdlIENGVHlwZVJlZilA
KG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vz
c2lvblNldFByb3BlcnR5IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRl
cnZhbER1cmF0aW9uIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgIGVycm9yID0gVlRTZXNz
aW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlL
ZXlfRXhwZWN0ZWRGcmFtZVJhdGUsIChfX2JyaWRnZSBDRlR5cGVSZWYpQChtX2V4cGVjdGVkRnJh
bWVSYXRlKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAi
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENvbXBy
ZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0ZWRGcmFtZVJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CisKKyAgICAvLyBGSVhNRTogU2V0IHZpZGVvIGNvbXByZXNzaW9uIHJhdGUuCisgICAgZXJy
b3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyhtX3Z0U2Vzc2lv
bi5nZXQoKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAi
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRv
RW5jb2RlRnJhbWVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgcmV0dXJuIFlFUzsK
K30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZm
ZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGlmICghbV92dFNlc3Npb24pIHsK
KyAgICAgICAgaWYgKCFpbml0Q29tcHJlc3Npb25TZXNzaW9uKENNU2FtcGxlQnVmZmVyR2V0Rm9y
bWF0RGVzY3JpcHRpb24oYnVmZmVyKSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIoYnVmZmVy
KTsKKyAgICBhdXRvIHByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNU2FtcGxlQnVmZmVyR2V0UHJl
c2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlcik7CisgICAgYXV0byBkdXJhdGlvbiA9IENNU2FtcGxl
QnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsKKyAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lv
blNlc3Npb25FbmNvZGVGcmFtZShtX3Z0U2Vzc2lvbi5nZXQoKSwgaW1hZ2VCdWZmZXIsIHByZXNl
bnRhdGlvblRpbWVTdGFtcCwgZHVyYXRpb24sIE5VTEwsIHRoaXMsIE5VTEwpOworICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxl
QnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1f
c2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKCFtX2lzRW5jb2RpbmcpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihidWZmZXIpOwor
ICAgIH0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZl
clJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZUdldEhlYWQobV9vdXRwdXRCdWZm
ZXJRdWV1ZS5nZXQoKSkpKTsKK30KKworUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAg
IHJldHVybiBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01C
dWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7
Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGE2Y2VlNTRjOTdjOTIxNWE2ODczZjRk
Y2IxMmJkZTQ3YzFkYzQwZWMuLmYzMTBmNDhlZDdlZGU1OGZlMmU1Yjc4NDY0ZjYyYzkwZTJkMDEx
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTE0OSw2ICsxNDksNyBAQCBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1c2VyTWVkaWFDYXB0dXJlTWFu
YWdlcgogICAgIHJldHVybiAqbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OwogfQogCisj
aWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFSZWNvcmRlck1hbmFnZXIoKQogewog
ICAgIGlmICghbV9yZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcikKQEAgLTE1Niw2ICsxNTcsNyBA
QCBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
bWVkaWFSZWNvcmRlck1hbmFnZXIoKQogCiAgICAgcmV0dXJuICptX3JlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyOwogfQorI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmF1ZGlvVHJhY2tSZW5kZXJlck1hbmFnZXIoKQpAQCAtMTc0LDcgKzE3Niw3IEBAIFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNhbXBsZUJ1ZmZlckRpCiAgICAgcmV0dXJuICptX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXI7CiB9CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vICBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0Uo
TElCV0VCUlRDKQogTGliV2ViUlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmxpYldlYlJUQ0NvZGVjc1Byb3h5KCkKQEAgLTIwMyw2ICsyMDUsNyBAQCB2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSQogICAgICAgICB1c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCkuZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgbWVkaWFS
ZWNvcmRlck1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CkBAIC0yMTEsNiArMjE0LDcgQEAgdm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIEkKICAgICAgICAgbWVkaWFSZWNvcmRlck1hbmFnZXIoKS5kaWRSZWNl
aXZlUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisjZW5kaWYgLy8gSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUp
CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAg
ICAgIGF1ZGlvVHJhY2tSZW5kZXJlck1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQ
cm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwpAQCAtMjI4LDggKzIzMiw4IEBAIHZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJCiAgICAgICAgIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIo
KS5kaWRSZWNlaXZlTGF5ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGxpYldlYlJUQ0NvZGVjc1Byb3h5KCkuZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDJiOWJkMWY4ODdiYWRhZmE0ZWE1YzRiYTM0MTY5ZDhiOTc4ZmQ2MmQuLjc4NjYzYmNk
YmEwNzMyZWZmNWIxMWI5NGM1ZGNhMjM4ODJlZTliODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNzksNyArNzks
OSBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgdXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eSgpOworI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAg
IFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyJiBtZWRpYVJlY29yZGVyTWFuYWdlcigpOworI2Vu
ZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlciYgYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcigpOwogICAgIFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIHNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXIoKTsKQEAgLTEwMiw3ICsxMDQsOSBAQCBwcml2YXRlOgogICAgIFBBTDo6U2Vz
c2lvbklEIG1fc2Vzc2lvbklEOwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
PiBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2Vy
PiBtX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOworI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXI+IG1fYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggY2IyNGRkYmYyNzlm
YjI2NTk0NmFhMTIxY2IwNzIyYjYyYjhjNmFmNy4uNTY4YzI4MDE3MThmZTkwYjhiZTA4MmZlYTM1
ZWU3NTBkNjNkZGI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZWNvcmRlci5oIgogCi0jaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUg
IlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZm
ZXIuaD4KQEAgLTEzNiw0ICsxMzYsNCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnN0b3BS
ZWNvcmRpbmcoKQogCiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NF
VFdSSVRFUkRFTEVHQVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCBmZjVhODI5ODRmYjM5NjQxZWQxZTU2MTU0
ODk4Zjk1MjZjOWJkNTJhLi5hODNkYTMwNTUyZWI0MWVmOTU5NDRkYjNhYTUwNGZmY2EzZjY4Mzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRl
ICJNZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgpAQCAtODIsNCArODIsNCBAQCBwcml2YXRlOgogCiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3Nh
Z2VzLmluCmluZGV4IDU0YmE2NGQ1NmZiZWEzMGZjYmIzOTZkYWQ1ZWEzZmMzMGM5OTVkZWUuLmNl
MzJiNzA0ZTdlYzhjNDc3YmUwNTFlMjBkN2QyN2FmMGM0ZjgyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhB
VkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlY29y
ZGVyIE5vdFJlZkNvdW50ZWQgewogICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKaW5kZXggMzcwY2Q5YjM4NzU2OWE5OGU4NGUxNzgwOWYw
ODVkNjJiM2I2ZTlkNi4uMDE5ZTRiODVmMGVlYmI2MjRlNTY5NTg4YTdhYWU0ODQyMTI1ODZkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oIgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyLmgKaW5kZXggNTQ3MWJiZDQ4NGRkOWIzZDBjOGVlM2RkNjExYzA1ZTkwZDAzNmM3
Yy4uYWI4MDFiYzExNGM0OTIzZWE5ZDc5MGY5MjNjNTJkZjQ5YWExMWU3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXIuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRl
ICJNZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMzg3YTQx
MzYxY2RiZDliN2VhZTJjMzM3MzY1MmE5OGY0OTM0ZTE3NC4uYzUxODQxMGNiNDlmYWRhNjg4ZDM3
N2QxZDdhMDZjZGUzYmFjNzk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKICMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFW
QVNTRVRXUklURVJERUxFR0FURSkKIAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIgTm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlUmVjb3JkZXIoV2ViS2l0OjpNZWRpYVJl
Y29yZGVySWRlbnRpZmllciBpZCwgYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gY3JlYXRpb25FcnJvcikgQXN5
bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgKaW5kZXggOWY5
YjMwYzc2MTYyM2RkOTQ4ZDI5YmUwZjM3ZjBhZDBmNDdlNWE5YS4uZTM4YzVkNmMwNWQwZGZhZjQy
NjgxOTk1YjllMDRmNGU3NjQ3ZjBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVz
c2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4IGRk
NDA5MTk4OGMxMjY4OTc1YmI5NzkyZTgzMzdjNmUwNjUzN2YzYzguLjY3ZTNlZTY1MTNkOGZhNDNl
ODFlOGIyMmM2NThkZjg5NjQwNzY4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTI2
LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVy
UHJpdmF0ZS5oIgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJE
RUxFR0FURSkKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXJNZXNzYWdlcy5oIgpAQCAtMTQ2LDQgKzE0Niw0IEBA
IHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnN0b3BSZWNvcmRpbmcoKQogCiB9CiAKLSNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggNmQ5ZmFiZTNlYTcyNDczZjQ1OTkwY2U4YWQxNzJk
MGNkMDNhODEyNi4uZDgwZmNkN2YxOTg4OTc1MjVjOWVmZmM5MTc1N2QyMmZjMzIzZWZmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2lu
Y2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1
ZmZlclN0b3JhZ2UuaCIKQEAgLTczLDUgKzczLDUgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKaW5kZXggYmNlNzc0YTg4MWRjZWM3OTQyNjM3OTY4
NTUyZTNjY2M3YmIzNzQwYi4uZDk1OWM5MjVmZGQzYTIyMWEzN2IxYTM3MDdjNmRmMWFkMDJhMGU4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoY29u
c3QgTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCiB7Ci0jaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUp
CiAgICAgaWYgKG1fdXNlR1BVUHJvY2VzcykKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVk
aWFSZWNvcmRlclByaXZhdGU+KHN0cmVhbSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMGU3MmY0YTUzMDU5
NzhiYTdiYzhiY2FmODA5YWM2NGUzMDQxZjM5Li5mMDJhZWVkNjFiNzhhODliOWQxMjE3YThmZGNj
NDM0NmI4Y2Q0MGJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDItMDMgIHlvdWVubiBm
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRX
cml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIERpc2FibGUgdGVzdHMgb24gYWxsIHBsYXRm
b3JtcyBleGNlcHQgdGhlIG9uZXMgc3VwcG9ydGluZyBBVkFzc2V0V3JpdGVyRGVsZWdhdGUuCisK
KyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGh0dHAvd3B0L21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nl
c3MuaHRtbDoKKyAgICAgICAgUmVtb3ZlIHdlYiBhdWRpbyBnZW5lcmF0aW9uIHNpbmNlIHRoZXJl
IHNlZW1zIHRvIGJlIHNvbWUgdW5zdGFiaWxpdHkgaW4gd2ViIGF1ZGlvIC0+IHN0cmVhbSAtPiBt
ZWRpYSByZWNvcmRlci4KKyAgICAgICAgd2hpY2ggc2hvdWxkIGJlIGZpeGVkIGFzIGZvbGxvdy11
cCBzcGVjaWZpYyBwYXRjaGVzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTAy
LTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIGVk
aXRpbmcvaW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sIGZhaWxzIG9uIG9wZW4gc291
cmNlIE1vamF2ZSBib3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3MTFiMzJjODg1NWU0NDZkYzBh
NTc0NTQ1MjcwOGJjN2M1MDYwNjdlLi5kNzRmNjBlYWRmMTg5NDgzZjBlNzM4ZGQyZTdhNDVlZTUy
ZjY5MGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMzMjQsNyArMzMyNCw5IEBAIHdlYmdsLzEu
MC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NvcHktdGV4LWltYWdlLTJkLWZvcm1hdHMuaHRtbCBb
IFNraXAgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvY2FudmFzL3JhcGlkLXJlc2l6aW5nLmh0
bWwgWyBTa2lwIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZHJh
dy1idWZmZXJzLmh0bWwgWyBTa2lwIF0KIAotd2Via2l0Lm9yZy9iLzE5NzY3MyBodHRwL3dwdC9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS5o
dG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQorIyBOb3Qgc3VwcG9ydGVkIGJ5IGRlZmF1bHQK
K2h0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAgXQogCiAjIFRvIGFpZCB0cmFuc2l0
aW9uIHRvIEFOR0xFIGJhY2tlbmQgZm9yIFdlYkdMLCBza2lwIGFsbCBvZiBXZWJHTCAyIHRlc3Rz
IGZvciBub3cuIAogIyBSZS1lbmFibGUgYXMgZWFjaCBjaHVuayBvZiB0ZXN0cyBhcmUgdmVyaWZp
ZWQgd2l0aCBBTkdMRSBiYWNrZW5kLgpAQCAtMzQ5NSw0ICszNDk3LDQgQEAgd2Via2l0Lm9yZy9i
LzIwNjc1MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYmFja2dyb3Vu
ZHMvZmlyc3QtbGUKIAogd2Via2l0Lm9yZy9iLzIwNjU3OCBbIERlYnVnIF0gaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWJhY2tncm91bmRzL2FuaW1hdGlvbnMvYm9yZGVy
LWltYWdlLXdpZHRoLWludGVycG9sYXRpb24uaHRtbCBbIENyYXNoIF0KIHdlYmtpdC5vcmcvYi8y
MDY1NzkgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1i
YWNrZ3JvdW5kcy9iYWNrZ3JvdW5kLXNpemUvdmVjdG9yL3plcm8taGVpZ2h0LXJhdGlvLWF1dG8t
NXB4Lmh0bWwgWyBDcmFzaCBdCi13ZWJraXQub3JnL2IvMjA2NTc5IFsgRGVidWcgXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYmFja2dyb3VuZHMvYmFja2dyb3VuZC1z
aXplL3ZlY3Rvci96ZXJvLXdpZHRoLXJhdGlvLWF1dG8tNXB4Lmh0bWwgWyBDcmFzaCBdClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQord2Via2l0Lm9yZy9iLzIwNjU3OSBbIERlYnVnIF0gaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWJhY2tncm91bmRzL2JhY2tncm91
bmQtc2l6ZS92ZWN0b3IvemVyby13aWR0aC1yYXRpby1hdXRvLTVweC5odG1sIFsgQ3Jhc2ggXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVv
LWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sCmluZGV4IDMzMzA2ZGU3OTQ3YmJiOTI1NzM5
NGMzYmExOTYyMDFiMDU4NDc4OGIuLjg4MDE0ODY1N2UyNWRkZTMzY2IxMDkzNDZkNmNiZWFhYjdm
OWNlZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYt
YXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwKQEAgLTU2LDE3ICs1Niw3
IEBACiAgICAgfQogCiAgICAgYXN5bmNfdGVzdCh0ID0+IHsKLSAgICAgICAgY29uc3QgYWMgPSBu
ZXcgQXVkaW9Db250ZXh0KCk7Ci0gICAgICAgIGNvbnN0IG9zYyA9IGFjLmNyZWF0ZU9zY2lsbGF0
b3IoKTsKLSAgICAgICAgY29uc3QgZGVzdCA9IGFjLmNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRp
b24oKTsKLSAgICAgICAgY29uc3QgYXVkaW8gPSBkZXN0LnN0cmVhbTsKLSAgICAgICAgb3NjLmNv
bm5lY3QoZGVzdCk7Ci0KICAgICAgICAgY29uc3QgdmlkZW8gPSBjcmVhdGVWaWRlb1N0cmVhbSgp
OwotICAgICAgICBhc3NlcnRfZXF1YWxzKHZpZGVvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAw
LCAidmlkZW8gbWVkaWFzdHJlYW0gc3RhcnRzIHdpdGggbm8gYXVkaW8gdHJhY2siKTsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyhhdWRpby5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwgMSwgImF1ZGlv
IG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRoIG9uZSBhdWRpbyB0cmFjayIpOwotICAgICAgICB2aWRl
by5hZGRUcmFjayhhdWRpby5nZXRBdWRpb1RyYWNrcygpWzBdKTsKLSAgICAgICAgYXNzZXJ0X2Vx
dWFscyh2aWRlby5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwgMSwgInZpZGVvIG1lZGlhc3RyZWFt
IHN0YXJ0cyB3aXRoIG9uZSBhdWRpbyB0cmFjayIpOwogICAgICAgICBjb25zdCByZWNvcmRlciA9
IG5ldyBNZWRpYVJlY29yZGVyKHZpZGVvKTsKICAgICAgICAgbGV0IG1vZGUgPSAwOwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDVkNGI4Yjg2MjA0MTJk
YmIxNDI2YTBiYTA3MDEzZDc4NmYyOTBmMDMuLjUxNDJhZDgyYTZkODQ2MjQyOGRlYWFmNzY1YmYw
ZDRmZDEzNzYyY2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0zMjc1LDYgKzMyNzUsOSBAQCBmYXN0L2F0dGFjaG1lbnQvYXR0YWNobWVudC10aXRsZS13
aXRoLXJ0bC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIGZhc3QvZm9ybXMvdGV4dGZpZWxk
LW5vLWxpbmVicmVhay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKK2h0dHAvd3B0L21lZGlh
cmVjb3JkZXIgWyBQYXNzIF0gCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlh
Y2FwdHVyZS1yZWNvcmQgWyBQYXNzIF0KKwogIyA8cmRhcjovL3Byb2JsZW0vNDc4NTUxNzQ+IFJF
R1JFU1NJT04gKGlPUyAxMz8pOiBMYXlvdXQgdGVzdHMgaHR0cC93cHQvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLWRhdGFhdmFpbGFibGUuaHRtbCBhbmQgaHR0cC93cHQvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLW1vY2stZGF0YWF2YWlsYWJsZS5odG1sIGFyZSBmYWlsaW5nCiBodHRw
L3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItZGF0YWF2YWlsYWJsZS5odG1sIFsgRmFp
bHVyZSBdCiBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItbW9jay1kYXRhYXZh
aWxhYmxlLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTM0NzIsNCArMzQ3NSw0IEBAIHdlYmtpdC5vcmcv
Yi8yMDY4OTcgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1iYWNrZ3JvdW5kCiB3ZWJraXQub3JnL2IvMjA2ODk3IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYmFja2dyb3VuZHMvYmFja2dyb3VuZC1zaXplL3Zl
Y3Rvci90YWxsLS1hdXRvLTMycHgtLW5vbnBlcmNlbnQtd2lkdGgtcGVyY2VudC1oZWlnaHQtdmll
d2JveC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjA2ODk3IFsgRGVidWcgXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYmFja2dyb3VuZHMvYmFja2dyb3VuZC1z
aXplL3ZlY3Rvci90YWxsLS1hdXRvLTMycHgtLW5vbnBlcmNlbnQtd2lkdGgtb21pdHRlZC1oZWln
aHQuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMjA3MDU3IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2tleXBhdGgtc3BlY2lhbC1pZGVudGlmaWVycy5odG0g
WyBQYXNzIEZhaWx1cmUgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcv
Yi8yMDcwNTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIva2V5cGF0
aC1zcGVjaWFsLWlkZW50aWZpZXJzLmh0bSBbIFBhc3MgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDgyNGVlN2Y0YTc1ZDM4MGNjODZjMmZl
MzFjZGM3ZDMxNjVmMTQ4YmIuLjhmYWM3ZGQ0ODFlN2M2NjEyNmUyZDUxNDE5ZGZkMTkyZTdmMDBh
YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODI4
LDYgKzE4MjgsOSBAQCB3ZWJraXQub3JnL2IvMTk1NjM1IHNjcm9sbGluZ2Nvb3JkaW5hdG9yL21h
Yy9tdWx0aXBsZS1maXhlZC5odG1sIFsgUGFzcyBUaW1lb3V0CiBbIENhdGFsaW5hKyBdIGZhc3Qv
dGV4dC9kZXNpZ24tc3lzdGVtLXVpLTE1Lmh0bWwgWyBQYXNzIF0KIFsgQ2F0YWxpbmErIF0gZmFz
dC90ZXh0L2Rlc2lnbi1zeXN0ZW0tdWktMTYuaHRtbCBbIFBhc3MgXQogCitbIENhdGFsaW5hKyBd
IGh0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBQYXNzIF0gCitbIENhdGFsaW5hKyBdIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFBhc3MgXQorCiB3
ZWJraXQub3JnL2IvMjAwMTI4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtdmlkZW8tZWxlbWVudC92aWRlb190aW1ldXBk
YXRlX29uX3NlZWsuaHRtbCBbIFRpbWVvdXQgUGFzcyBdCiAKICMgcmRhcjovLzU1NDA1ODUxIChb
IG1hY09TIF0gTGF5b3V0IHRlc3RzIHdlYmdwdS8qLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYXJlIGZs
YWt5IGZhaWx1cmVzLiAoMjAxODI3KSkKQEAgLTE5NzIsNCArMTk3NSw0IEBAIHdlYmtpdC5vcmcv
Yi8yMDcwNTcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIva2V5cGF0
aC1zcGVjaWFsLWlkCiAKIHdlYmtpdC5vcmcvYi8yMDcwNjIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcmVwbGF5Lmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA2NDg0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2Vic29ja2V0cy9jb29raWVzLzAwNy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJraXQub3JnL2IvMjA2NDg0IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9jb29raWVzLzAwNy5odG1sIFsgUGFzcyBGYWls
dXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389637</attachid>
            <date>2020-02-04 01:39:07 -0800</date>
            <delta_ts>2020-02-04 01:54:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206582-20200204103905.patch</filename>
            <type>text/plain</type>
            <size>150447</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5MzIzNTdhNDkxNWZlYzc3YjRmM2Fk
M2FjMTFmOTNiMmNjMTRhNzcuLmRjNjZmODhmMWQ1NmY1NzRiY2ZmMGMxMDYzYzNhMDI2NGU0ZmZj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDItMDQgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTAyLTAzICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVk
dWNlIHNpemUgb2YgSGFzaE1hcCBhbmQgSGFzaFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRhMGUxNDBiOTQ4
YWFkM2E2YTI1NTFlYTcyNWYyMGQ2YWUxMTFlMjMuLjI3ODlhMzRmZTE4YzdhNmFiODZlMzM0YTYz
OTdhMjJhMDM0NTBiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OSBAQAorMjAyMC0wMi0wNCAg
eW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2Ug
QVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4OTg1MzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBhbGxvd3MgdG8gZ3JhYiBy
ZWNvcmRlZCBkYXRhIHdoZW5ldmVyIHdhbnRlZC4KKyAgICAgICAgVGhpcyBkZWxlZ2F0ZSByZXF1
aXJlcyBwYXNzaW5nIGNvbXByZXNzZWQgc2FtcGxlcyB0byBBVkFzc2V0V3JpdGVyLgorICAgICAg
ICBJbXBsZW1lbnQgdmlkZW8gZW5jb2RpbmcgYW5kIGF1ZGlvIGVuY29kaW5nIGluIGRlZGljYXRl
ZCBjbGFzc2VzIGFuZCB1c2UgdGhlc2UgY2xhc3NlcyBiZWZvcmUgYWRkaW5nIGJ1ZmZlcnMgdG8g
QVZBc3NldFdyaXRlci4KKyAgICAgICAgSW5zdGFudGlhdGUgcmVhbCB3cml0ZXIgb25seSBmb3Ig
cGxhdGZvcm1zIHN1cHBvcnRpbmcgQVZBc3NldFdyaXRlckRlbGVnYXRlLCBzaW5jZSBpdCBpcyBu
b3Qgc3VwcG9ydGVkIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJv
dmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVh
dGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OjpzZXRTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Zmlu
aXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5p
dEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZvckF1
ZGlvRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjpncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldp
dGhOdW1QYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0
cHV0UGFja2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OnByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
aW5pdFdpdGhXcml0ZXI6XSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBk
ZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBhc3NldFdyaXRl
cjpkaWRQcm9kdWNlRnJhZ21lbnRlZEhlYWRlckRhdGE6XSk6CisgICAgICAgICgtW1dlYkFWQXNz
ZXRXcml0ZXJEZWxlZ2F0ZSBhc3NldFdyaXRlcjpkaWRQcm9kdWNlRnJhZ21lbnRlZE1lZGlhRGF0
YTpmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0Ol0pOgorICAgICAgICAoLVtXZWJBVkFzc2V0V3Jp
dGVyRGVsZWdhdGUgY2xvc2VdKToKKyAgICAgICAgKC1bV2ViQVZBc3NldFdyaXRlckRlbGVnYXRl
IGZpbmlzaF0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
Y29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nl
c3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkQXVkaW9T
YW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25N
YXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFw
cGVuZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZFZp
ZGVvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF1ZGlvRm9ybWF0RGVz
Y3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZEF1ZGlv
U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5oLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6flZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0Q29tcHJlc3Npb25TZXNzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFk
ZFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIpOgorCiAyMDIwLTAy
LTA0ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYURl
dmljZXMgc2hvdWxkIGhhbmRsZSBjaGFuZ2VzIG9mIGlmcmFtZSBhbGxvdyBhdHRyaWJ1dGUgdmFs
dWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDdiYTUyMzE0ZjQzZjI0NDY2ZGMwNjEzMTBkNjU4YjAx
NDYwZTExMDQuLjZkOGE1NmVlNmZlMTlhNzg2OTRkZjVhYmU1ZDE1NGYyNTlkODg0MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAyLTA0ICB5b3Vlbm4gZmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVy
RGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBZGQgc29mdCBsaW5rIG1hY3JvcyBmb3IgVmlkZW9U
b29sYm94IGFuZCBBdWRpb1Rvb2xib3guCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaDogQWRkZWQuCisg
ICAgICAgICogcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcDoKKyAgICAgICAgKiBwYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvY2YvVmlkZW9Ub29sYm94U29mdExp
bmsuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaDog
QWRkZWQuCisKIDIwMjAtMDItMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBQYXNzIGEgaGludCBmcm9tIHRoZSBleHRlbnNpb24gdG8gZGVjaWRlUG9saWN5
Rm9yU09BdXRob3JpemF0aW9uTG9hZFdpdGhDdXJyZW50UG9saWN5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3YmZl
OWE2MjZmZjMzZjJkYjIyYzgzYjkxYTZlMTE1ZTE1ZjM3M2UuLjEwNGUzNmIzNTNkYjg2ZTQxYzdi
ZDZhZmIzZmU4YzU5NDAxMmQ4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDIt
MDQgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
VXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81ODk4NTM2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgUmVtb3RlTWVkaWFSZWNvcmRlciBvbmx5IGZv
ciBzeXN0ZW1zIHN1cHBvcnRpbmcgQVZBc3NldFdyaXRlckRlbGVnYXRlLgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oOgorICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNv
cmRlclByaXZhdGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVJlY29yZGVyUHJvdmlk
ZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKToKKwogMjAyMC0wMi0wMyAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBXZWJLaXRBZGRp
dGlvbnMgaG9vayB0byBwcm92aWRlIGFkZGl0aW9uYWwgY3VzdG9taXphdGlvbnMgdG8gVUlEcmFn
SW50ZXJhY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMTc1YjZmNWVhOGVkYzdhZDFmZDJj
MWYyZTdmODhmMGVlN2IyNmY2OC4uM2NiOWJiNTQzOWNiZWU3MmZlYmE4MDcxMzM2YmJiMDZjOWYw
ZjgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTU2Niw2ICs1NjYsMTAgQEAKICNkZWZpbmUg
SEFWRV9PU19TSUdOUE9TVCAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykpCisjZGVmaW5lIEhBVkVfQVZBU1NFVFdS
SVRFUkRFTEVHQVRFIDEKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBM
QVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX1NZU1RF
TV9GT05UX1NUWUxFX1RJVExFXzAgMQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxFX1RJ
VExFXzQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCBmY2IwOTdlZTc1OWZmNWRm
Yjc2NDk4ZDUwOTBlNGNjY2MwYzlkNWE2Li5mNTRkZjcxYTRmNDNiM2U2ZjlkNDhiYzFjZDc0NDM3
Njg3MWU5YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzQsNyArMzQsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclBy
aXZhdGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUo
Y29uc3QgTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCiB7CisjaWYgSEFWRShBVkFTU0VUV1JJ
VEVSREVMRUdBVEUpCiAgICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3Jl
YXRlKHN0cmVhbSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOworICAgIHJldHVy
biBudWxscHRyOworI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNDE5YWM5OGI0ZDE5MmM5ZjM2MWRiMTk3
NzNmMmI2ZmI4ZTBjOWNhLi4zZjgxNDZhZDE1NWFmY2MwODU4ZDY4YjNkMjc0ZTM5MmUwZmY0N2U4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMTUsNiArMTE1LDEwIEBACiAJCTJFMTM0MkNDMjE1QUExMEEwMDcxOTlEMiAvKiBV
SUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTEzNDJDQTIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5oICovOyB9Owog
CQkyRTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNCMjE1QUExMEEwMDcx
OTlEMiAvKiBVSUtpdFNvZnRMaW5rLm1tICovOyB9OwogCQkzMTMwOEIxNDIwQTIxNzA1MDAzRkI5
MjkgLyogU3lzdGVtUHJldmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzEzMDhCMTMyMEEyMTcwNTAwM0ZCOTI5IC8qIFN5c3RlbVByZXZpZXdT
UEkuaCAqLzsgfTsKKwkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNv
ZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi87
IH07CisJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTIy
M0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi87IH07CisJCTQxNkU5
OTU3MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1NTIzREFFRkY3MDBF
ODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovOyB9OworCQk0MTZFOTk1ODIzREFF
RkY4MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBW
aWRlb1Rvb2xib3hTb2Z0TGluay5oICovOyB9OwogCQk0NDI5NTZDRDIxOEE3MkRGMDA4MERCNTQg
LyogUmV2ZWFsU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2ZWFsU1BJLmggKi87IH07CiAJCTQ0
NTBGQzlGMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlEMjFGNUY2MDIwMDRE
RkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLzsgfTsKIAkJNDQ1MEZDQTAyMUY1RjYwMjAw
NERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29r
U29mdExpbmsuaCAqLzsgfTsKQEAgLTI5MSw2ICsyOTUsMTAgQEAKIAkJMkUxMzQyQ0IyMTVBQTEw
QTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBVSUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMTMwOEIxMzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTeXN0ZW1QcmV2aWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM3MTE5QTc4MjBDQ0I1RkYwMDJDNkRDOSAvKiBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViS2l0VGFyZ2V0Q29uZGl0aW9uYWxzLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0Ig
LyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNC
IC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5r
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5r
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Mjk1NkNDMjE4QTcyREUwMDgwREI1
NCAvKiBSZXZlYWxTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV2ZWFs
U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlEMjFGNUY2MDIwMDRE
RkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFF1aWNrTG9va1NvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tMb29rU29mdExpbmsuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNCw4ICs1MzIsMTIgQEAKIAkJMENGOTlDQTUx
RjczODQxQzAwN0VFNzkzIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29m
dExpbmsuY3BwICovLAorCQkJCTQxNkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xi
b3hTb2Z0TGluay5oICovLAogCQkJCTBDRjk5Q0E2MUY3Mzg0MzYwMDdFRTc5MyAvKiBDb3JlTWVk
aWFTb2Z0TGluay5jcHAgKi8sCiAJCQkJMENGOTlDQTcxRjczODQzNzAwN0VFNzkzIC8qIENvcmVN
ZWRpYVNvZnRMaW5rLmggKi8sCisJCQkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVv
VG9vbGJveFNvZnRMaW5rLmNwcCAqLywKKwkJCQk0MTZFOTk1NjIzREFFRkY3MDBFODcxQ0IgLyog
VmlkZW9Ub29sYm94U29mdExpbmsuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzE1LDYgKzcyNyw3IEBACiAJCQlmaWxlcyA9ICgKIAkJ
CQk1N0ZEMzE4QjIyQjM1OTg5MDA4RDBFOEIgLyogQXBwU1NPU29mdExpbmsuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3NkNBOUQ2MjJCODU0QUIwMDMwMTQzQyAvKiBBcHBTU09TUEkuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0
TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwMkU5M0MyMDU2RkFBNzAwQTEzNzk3IC8qIEF1
ZGlvVG9vbGJveFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTEwNzgyMkI0NTZGNTAwRjQx
MEM4IC8qIEF1dGhLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3N0U4N0IyMjI2QTQ2MDMw
MEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCkBAIC04Mzgs
NiArODUxLDcgQEAKIAkJCQkyRTEzNDJDQzIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MjIxRjQzQTRDNzAwMkVBQzAyIC8qIFVJS2l0
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE0NzFGM0JFQjQ5MDBEQkMzMTcgLyogVVJM
Rm9ybWF0dGluZ1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTk5NTgyM0RBRUZGODAwRTg3
MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1
OTFGM0JFQjQ5MDBEQkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTA4MjZGOTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKQEAgLTkzMCw2ICs5NDQsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThBMjJCMzU5M0UwMDhEMEU4QiAvKiBB
cHBTU09Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNkU5OTUzMjNEQUU2QkUwMEU4
NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzdF
ODdCMTIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsubW0gaW4gU291cmNl
cyAqLywKIAkJCQkwQzVGRkYwRjFGNzhEOURBMDA5RUZGMUEgLyogQ2xvY2tDTS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTBDRjk5Q0E4MUY3Mzg0MzcwMDdFRTc5MyAvKiBDb3JlTWVkaWFTb2Z0TGlu
ay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk1Niw2ICs5NzEsNyBAQAogCQkJCUEzQUI2RTU3MUYz
RDFEREIwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkUxMzQyQ0QyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29m
dExpbmsubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTZFOTk1NzIzREFFRkY4MDBFODcxQ0IgLyog
VmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwODI2RkExRjU3
NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjZjU1
MDU2YWNkYTZmNTY1M2FkYzdlMTdlYzAyYTJkODI2ZTQ0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcApAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShB
VkZPVU5EQVRJT04pCisKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4K
KyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQuaD4KKworI2luY2x1ZGUgPHd0Zi9T
b2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBBdWRp
b1Rvb2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29s
Ym94LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVy
dHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGlu
U3BlY2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlE
YXRhKSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9w
ZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNv
bnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252
ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0
aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSwgT1NTdGF0
dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclBy
b3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5Qcm9wZXJ0eURhdGFTaXplLCBjb25zdCB2
b2lkKiBpblByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlu
UHJvcGVydHlEYXRhU2l6ZSwgaW5Qcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHksIE9T
U3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0
ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZv
aWQqIG91dFByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlv
UHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKworI2VuZGlmIC8vIFVTRShBVkZP
VU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9v
bGJveFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNv
ZnRMaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDczMTE4NzE3NGFjMTU1NDQzNzFkZWUwM2IxNDMyZTNlNjU2
MzJlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9U
b29sYm94U29mdExpbmsuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gp
CisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRp
b0NvbnZlcnRlckdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVk
aW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQz
MiogaW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0Nv
bnZlcnRlciwgaW5Qcm9wZXJ0eUlELCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0
YSkpCisjZGVmaW5lIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29s
Ym94X0F1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NTdGF0dXMsIChjb25z
dCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0LCBjb25zdCBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQsIEF1ZGlvQ29udmVy
dGVyUmVmKiBvdXRBdWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwgaW5EZXN0aW5hdGlv
bkZvcm1hdCwgb3V0QXVkaW9Db252ZXJ0ZXIpKQorI2RlZmluZSBBdWRpb0NvbnZlcnRlck5ldyBz
b2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJOZXcKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5
LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlvQ29u
dmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblByb3BlcnR5RGF0YVNpemUs
IGNvbnN0IHZvaWQqIGluUHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVy
dHlJRCwgaW5Qcm9wZXJ0eURhdGFTaXplLCBpblByb3BlcnR5RGF0YSkpCisjZGVmaW5lIEF1ZGlv
Q29udmVydGVyU2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29udmVydGVy
U2V0UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29s
Ym94LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVy
dHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGlu
U3BlY2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlE
YXRhKSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9w
ZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorI2RlZmluZSBBdWRpb0Zvcm1hdEdldFBy
b3BlcnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0Zvcm1hdEdldFByb3BlcnR5CisKKwor
I2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCmluZGV4IDJiODIzMTM2NWNiOWFhZjkzNTk3ZjE4N2Zh
MjJjMTQ5YmU0MmZiM2EuLmRjOGFiNDFjYmM3OGJhMTljZWNkZGE3ZmNmYTcwZDkzNTA5M2MyM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3Bw
CkBAIC00Niw2ICs0Niw3IEBAIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSkKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEs
IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYg
dGhlU291cmNlQnVmZmVyLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwg
dm9pZCogZGVzdGluYXRpb24pLCAodGhlU291cmNlQnVmZmVyLCBvZmZzZXRUb0RhdGEsIGRhdGFM
ZW5ndGgsIGRlc3RpbmF0aW9uKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aCwgc2l6ZV90LCAoQ01CbG9ja0J1
ZmZlclJlZiB0aGVCdWZmZXIpLCAodGhlQnVmZmVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcywgT1NT
dGF0dXMsIChjb25zdCB2b2lkKiBzb3VyY2VCeXRlcywgQ01CbG9ja0J1ZmZlclJlZiBkZXN0aW5h
dGlvbkJ1ZmZlciwgc2l6ZV90IG9mZnNldEludG9EZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5n
dGgpLCAoc291cmNlQnl0ZXMsIGRlc3RpbmF0aW9uQnVmZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRp
b24sIGRhdGFMZW5ndGgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRpY3Rpb25hcnlSZWYs
IChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRUeXBlSUQsIENG
VHlwZUlELCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBD
b3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciwgQ01CbG9ja0J1ZmZlclJlZiwg
KENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCkBAIC0xMzYsNiArMTM3LDcgQEAgU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVH
ZXRCdWZmZXJDb3VudCwgQ01JdGUKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25UaW1lU3RhbXAsIENN
VGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRFbmRQcmVzZW50
YXRpb25UaW1lU3RhbXAsIENNVGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUp
KQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVy
UXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVm
ZmVyUXVldWVSZWYgcXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNh
bGxiYWNrLCB2b2lkKiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlv
biB0cmlnZ2VyQ29uZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZl
clF1ZXVlVHJpZ2dlclRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxs
YmFjaywgdHJpZ2dlclJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwg
dHJpZ2dlclRva2VuT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1
ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKIAogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Uo
UEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5LCBDRlN0
cmluZ1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBr
Q01TYW1wbGVBdHRhY2htZW50S2V5X05vdFN5bmMsIENGU3RyaW5nUmVmKQpAQCAtMTYzLDYgKzE2
NSw5IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1
ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tlCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlv
QnVmZmVyTGlzdCwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDRkFsbG9jYXRv
clJlZiBiYnVmU3RydWN0QWxsb2NhdG9yLCBDRkFsbG9jYXRvclJlZiBiYnVmTWVtb3J5QWxsb2Nh
dG9yLCB1aW50MzJfdCBmbGFncywgY29uc3QgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0KSwg
KHNidWYsIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIGJidWZNZW1vcnlBbGxvY2F0b3IsIGZsYWdzLCBi
dWZmZXJMaXN0KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlh
LCBDTVNhbXBsZUJ1ZmZlclNldERhdGFSZWFkeSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJl
ZiBzYnVmKSwgKHNidWYpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogYXNi
ZCwgc2l6ZV90IGxheW91dFNpemUsIGNvbnN0IEF1ZGlvQ2hhbm5lbExheW91dCogbGF5b3V0LCBz
aXplX3QgbWFnaWNDb29raWVTaXplLCBjb25zdCB2b2lkKiBtYWdpY0Nvb2tpZSwgQ0ZEaWN0aW9u
YXJ5UmVmIGV4dGVuc2lvbnMsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiogb3V0RGVzYyks
IChhbGxvY2F0b3IsIGFzYmQsIGxheW91dFNpemUsIGxheW91dCwgbWFnaWNDb29raWVTaXplLCBt
YWdpY0Nvb2tpZSwgZXh0ZW5zaW9ucywgb3V0RGVzYykpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWND
b29raWUsIGNvbnN0IHZvaWQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MsIHNp
emVfdCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0
RGVjb2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICosIChDTUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKKwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrLCBDTUNsb2Nr
UmVmLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNQ2xvY2tHZXRUaW1lLCBDTVRpbWUsIChDTUNsb2NrUmVmIGNsb2NrKSwgKGNsb2Nr
KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBs
ZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlLCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNi
dWYsIE9TU3RhdHVzICgqIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBjYWxsYmFjaykoIENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgQ01JdGVtQ291bnQgaW5kZXgsIHZvaWQgKnJl
ZmNvbiksIHZvaWQgKnJlZmNvbiksIChzYnVmLCBjYWxsYmFjaywgcmVmY29uKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRleCAyNjhkMTY3ZjI3
ZDZkM2FiYmZmNTkzNTI2N2ZjMjIyMzkxMDEwZTNkLi5hMGM3MzI5MjYyZTBiMDZjYmI2YzM2ZDgy
ODQyZjJmZDZmMWY4NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5oCkBAIC00OSw2ICs0OSw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcywgT1NTdGF0CiAj
ZGVmaW5lIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJs
b2NrQnVmZmVyQ29weURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXplX3QsIChDTUJsb2Nr
QnVmZmVyUmVmIHRoZUJ1ZmZlciksICh0aGVCdWZmZXIpKQogI2RlZmluZSBDTUJsb2NrQnVmZmVy
R2V0RGF0YUxlbmd0aCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckdldERhdGFMZW5n
dGgKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyUmVwbGFjZURhdGFCeXRlcywgT1NTdGF0dXMsIChjb25zdCB2b2lkKiBzb3VyY2VCeXRl
cywgQ01CbG9ja0J1ZmZlclJlZiBkZXN0aW5hdGlvbkJ1ZmZlciwgc2l6ZV90IG9mZnNldEludG9E
ZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5ndGgpLCAoc291cmNlQnl0ZXMsIGRlc3RpbmF0aW9u
QnVmZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRpb24sIGRhdGFMZW5ndGgpKQorI2RlZmluZSBDTUJs
b2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZl
clJlcGxhY2VEYXRhQnl0ZXMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9uYXJ5UmVm
LCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQogI2RlZmluZSBDTUZvcm1h
dERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucyBzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3JtYXREZXNj
cmlwdGlvbkdldEV4dGVuc2lvbnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwg
Q29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQsICh2b2lkKSwgKCkp
CkBAIC0yMjcsNiArMjI5LDggQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBD
b3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRFbmRQcmVzZW50YXRpb25UaW0KICNkZWZpbmUgQ01C
dWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3JlTWVkaWFf
Q01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcAogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dl
cldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUs
IENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNrLCB2b2lkKiB0cmln
Z2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmlnZ2VyQ29uZGl0aW9u
LCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2Vu
KiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywgdHJpZ2dlclJlZmNv
biwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dlclRva2VuT3V0KSkK
ICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQg
c29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2Vy
VGhyZXNob2xkCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBx
dWV1ZSksIChxdWV1ZSkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIHNvZnRM
aW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YQogCiBTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9E
b05vdERpc3BsYXksIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVBdHRhY2htZW50S2V5
X0RvTm90RGlzcGxheSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3RE
aXNwbGF5KCkKQEAgLTI1Niw2ICsyNjAsOSBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwga0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZAogI2Rl
ZmluZSBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkIGdldF9Db3JlTWVkaWFfa0NN
VGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRp
b25fQnVmZmVyQ29uc3VtZWQsIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVCdWZmZXJD
b25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCBnZXRfQ29yZU1lZGlhX2tDTVNhbXBs
ZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkKCkKKworU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkdldE1hZ2ljQ29va2llLCBjb25zdCB2b2lkKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlv
blJlZiBkZXNjLCBzaXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCkpCisjZGVmaW5lIENN
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llIHNvZnRMaW5rX0NvcmVNZWRpYV9D
TUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZQogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0
cmVhbUJhc2ljRGVzY3JpcHRpb24sIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiAq
LCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVmaW5lIENN
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24gc29mdExpbmtf
Q29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRp
b24KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIHN0
cnVjdHVyZUFsbG9jYXRvciwgdm9pZCogbWVtb3J5QmxvY2ssIHNpemVfdCBibG9ja0xlbmd0aCwg
Q0ZBbGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tCdWZmZXJDdXN0b21C
bG9ja1NvdXJjZSogY3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZmZXJSZWYq
IGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgbWVtb3J5QmxvY2ssIGJsb2Nr
TGVuZ3RoLCBibG9ja0FsbG9jYXRvciwgY3VzdG9tQmxvY2tTb3VyY2UsIG9mZnNldFRvRGF0YSwg
ZGF0YUxlbmd0aCwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSkKQEAgLTI2NCw2ICsyNzEsOCBAQCBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZm
ZXJHZXRBdWRpb0J1ZmZlckxpc3RXaQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVm
ZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBs
ZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRO
dW1TYW1wbGVzLCBDTUl0ZW1Db3VudCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1Zikp
CiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcyBzb2Z0TGlua19Db3JlTWVkaWFf
Q01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29k
YWJsZUZvcm1hdCwgY29uc3QgQXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01BdWRpb0Zvcm1hdERl
c2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCisjZGVmaW5lIENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9G
b3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQKIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVC
dWZmZXJGb3JSYW5nZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNU2Ft
cGxlQnVmZmVyUmVmIHNidWYsIENGUmFuZ2Ugc2FtcGxlUmFuZ2UsIENNU2FtcGxlQnVmZmVyUmVm
KiBzQnVmT3V0KSwgKGFsbG9jYXRvciwgc2J1Ziwgc2FtcGxlUmFuZ2UsIHNCdWZPdXQpKQogI2Rl
ZmluZSBDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZSBzb2Z0TGlua19Db3Jl
TWVkaWFfQ01TYW1wbGVCdWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2UKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFNhbXBs
ZVNpemVBcnJheSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDTUl0ZW1Db3Vu
dCBzaXplQXJyYXlFbnRyaWVzLCBzaXplX3QqIHNpemVBcnJheU91dCwgQ01JdGVtQ291bnQqIHNp
emVBcnJheUVudHJpZXNOZWVkZWRPdXQpLCAoc2J1Ziwgc2l6ZUFycmF5RW50cmllcywgc2l6ZUFy
cmF5T3V0LCBzaXplQXJyYXlFbnRyaWVzTmVlZGVkT3V0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZlNjkz
Y2E5ZTQxZmQ4NTk3YTgyYjdjNzk2NjAxYjhhNzBjYWE0OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwCkBAIC0wLDAg
KzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFW
Rk9VTkRBVElPTikKKworI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25TZXNzaW9u
Lmg+CisKKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09S
S19GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94KQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUsIE9T
U3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgQ01WaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUsIENGRGljdGlvbmFyeVJlZiBlbmNv
ZGVyU3BlY2lmaWNhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUltYWdlQnVmZmVyQXR0cmli
dXRlcywgQ0ZBbGxvY2F0b3JSZWYgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIFZUQ29tcHJlc3Np
b25PdXRwdXRDYWxsYmFjayBvdXRwdXRDYWxsYmFjaywgdm9pZCogb3V0cHV0Q2FsbGJhY2tSZWZD
b24sIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmKiBjb21wcmVzc2lvblNlc3Npb25PdXQpLCAoYWxs
b2NhdG9yLCB3aWR0aCwgaGVpZ2h0LCBjb2RlY1R5cGUsIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBz
b3VyY2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMsIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBvdXRw
dXRDYWxsYmFjaywgb3V0cHV0Q2FsbGJhY2tSZWZDb24sIGNvbXByZXNzaW9uU2Vzc2lvbk91dCkp
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21w
cmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vz
c2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFt
cCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9u
U2Vzc2lvbkVuY29kZUZyYW1lLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNl
c3Npb24sIENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGltZSBwcmVzZW50YXRpb25U
aW1lU3RhbXAsIENNVGltZSBkdXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIGZyYW1lUHJvcGVydGll
cywgdm9pZCogc291cmNlRnJhbWVSZWZjb24sIFZURW5jb2RlSW5mb0ZsYWdzKiBpbmZvRmxhZ3NP
dXQpLCAoc2Vzc2lvbiwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZHVyYXRp
b24sIGZyYW1lUHJvcGVydGllcywgc291cmNlRnJhbWVSZWZjb24sIGluZm9GbGFnc091dCkpCitT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVz
c2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lv
blNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKworI2VuZGlmIC8vIFVTRShBVkZPVU5E
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJv
eFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRM
aW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjUwODM4YTNhZmRlZDJlZDdkNmY4ZTM0OGZmZGY2ZGQxMTUxYmM0
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29s
Ym94U29mdExpbmsuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5o
PgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gpCisK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXBy
ZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVvQ29kZWNUeXBlIGNvZGVjVHlw
ZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBDRkRpY3Rpb25hcnlSZWYg
c291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRvclJlZiBjb21wcmVzc2VkRGF0
YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNrIG91dHB1dENhbGxiYWNrLCB2
b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lvblNlc3Npb25SZWYqIGNvbXBy
ZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBoZWlnaHQsIGNvZGVjVHlwZSwg
ZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgY29tcHJl
c3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRwdXRDYWxsYmFja1JlZkNvbiwg
Y29tcHJlc3Npb25TZXNzaW9uT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25DcmVh
dGUgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlCitTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lv
blNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJl
ZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCksIChz
ZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKKyNkZWZpbmUgVlRD
b21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRD
b21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUs
IE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1ZmZl
clJlZiBpbWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lIGR1
cmF0aW9uLCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lkKiBzb3VyY2VGcmFt
ZVJlZmNvbiwgVlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChzZXNzaW9uLCBpbWFn
ZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJhbWVQcm9wZXJ0aWVz
LCBzb3VyY2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lv
blNlc3Npb25FbmNvZGVGcmFtZSBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNl
c3Npb25FbmNvZGVGcmFtZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRl
b1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzLCBPU1N0
YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikpCisjZGVm
aW5lIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzIHNvZnRMaW5rX1Zp
ZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcworCisj
ZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZjA0NDEyNDE4ZTZkYmIwZjBiM2IxN2E2
ZDlhOGNhNmJhODExNmI0Li4zNmVmNTgxOGYzMmIyZjg2YTU5YzcwYzhhNzdmZGM1YTYyNTVkNTQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04MzMsMTcgKzgzMywxNyBAQAogCQkyREFDQjlFOTIzNzU1RDAwMDBCNEMxODUgLyog
R3JhcGhpY3NDb250ZXh0SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwMDEyM0YxRkFEODdENjAwNTMxRDc2IC8qIEdyYXBoaWNzQ29udGV4dElt
cGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
REFGMzQzRDFFQTdFMEYxMDAzODJDRDMgLyogQ29uc3RhbnRQcm9wZXJ0eU1hcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjM0M0IxRUE3RTBGMTAw
MzgyQ0QzIC8qIENvbnN0YW50UHJvcGVydHlNYXAuaCAqLzsgfTsKIAkJMkRENUE3MjcxRUJFRTQ3
RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ1QTcyNjFFQkVFNDdEMDA5QkE1OTcgLyogQ29t
cG9zaXRpb25VbmRlcmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQkyRERFMUNFMzFGNTc0QUU1MDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZWaWV3
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNF
MDFGNTc0QUQxMDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZWaWV3LmggKi87IH07Ci0JCTJEREUxQ0U0
MUY1NzRBRTkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDREUxRjU3NEFBQjAwRDFBMzY1IC8qIEpTVlJE
aXNwbGF5LmggKi87IH07Ci0JCTJEREUxQ0Y4MUY1NzRDMzkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxh
eUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRERTFDRTYxRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJEaXNwbGF5Q2FwYWJpbGl0aWVz
LmggKi87IH07Ci0JCTJEREUxQ0ZBMUY1NzRDM0UwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNF
ODFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUkRpc3BsYXlFdmVudC5oICovOyB9OwotCQkyRERFMUNG
QzFGNTc0Q0VFMDBEMUEzNjUgLyogSlNWUkRpc3BsYXlFdmVudFJlYXNvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRUExRjU3NEJGRjAwRDFB
MzY1IC8qIEpTVlJEaXNwbGF5RXZlbnRSZWFzb24uaCAqLzsgfTsKLQkJMkRERTFDRkUxRjU3NENG
MzAwRDFBMzY1IC8qIEpTVlJFeWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEREUxQ0VDMUY1NzRCRkYwMEQxQTM2NSAvKiBKU1ZSRXllLmggKi87IH07
Ci0JCTJEREUxRDAwMUY1NzRDRjcwMEQxQTM2NSAvKiBKU1ZSRXllUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRUUxRjU3NEJG
RjAwRDFBMzY1IC8qIEpTVlJFeWVQYXJhbWV0ZXJzLmggKi87IH07Ci0JCTJEREUxRDAyMUY1NzRE
MDAwMEQxQTM2NSAvKiBKU1ZSRnJhbWVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNGMDFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUkZyYW1l
RGF0YS5oICovOyB9OwotCQkyRERFMUQwNDFGNTc0RDA1MDBEMUEzNjUgLyogSlNWUkxheWVySW5p
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFD
RjIxRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJMYXllckluaXQuaCAqLzsgfTsKLQkJMkRERTFEMDYx
RjU3NEQwQTAwRDFBMzY1IC8qIEpTVlJQb3NlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNGNDFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUlBvc2Uu
aCAqLzsgfTsKLQkJMkRERTFEMDgxRjU3NEQwRTAwRDFBMzY1IC8qIEpTVlJTdGFnZVBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUx
Q0Y2MUY1NzRCRkYwMEQxQTM2NSAvKiBKU1ZSU3RhZ2VQYXJhbWV0ZXJzLmggKi87IH07CisJCTJE
REUxQ0UzMUY1NzRBRTUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0U0MUY1NzRBRTkwMEQxQTM2NSAvKiAobnVsbCkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0Y4MUY1NzRDMzkw
MEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07
CisJCTJEREUxQ0ZBMUY1NzRDM0UwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0ZDMUY1NzRDRUUwMEQxQTM2NSAvKiAobnVs
bCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0ZFMUY1
NzRDRjMwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IH07CisJCTJEREUxRDAwMUY1NzRDRjcwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDAyMUY1NzREMDAwMEQxQTM2NSAv
KiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUx
RDA0MUY1NzREMDUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IH07CisJCTJEREUxRDA2MUY1NzREMEEwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDA4MUY1NzREMEUwMEQx
QTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CiAJ
CTJERTcwMDIzMTkyRkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTcwMDIyMTky
RkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCAqLzsgfTsKIAkJMkRG
NTEyQ0UxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGNTEyQ0MxRDg3
M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oICovOyB9OwogCQky
REZBNDg4RjFEQjU0MUQwMDAzNjJCOTkgLyogQnVmZmVyU291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREZBNDg4RTFEQjU0MUMyMDAzNjJCOTkg
LyogQnVmZmVyU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEwOTcsNiArMTA5Nyw3IEBACiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1
MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyog
V3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBS
ZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1C
dWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFC
QjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxNkY3OTkwMjNENzUwQ0YwMDgy
OUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyog
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9OwogCQk0MTcyNTNBQjEzNTRCQkJD
MDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRp
YUNvbnRyb2xFbGVtZW50cy5oICovOyB9OwogCQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyog
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQjFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAgKi87IH07CiAJCTQxNzYxMkIwMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRw
b2ludC5oICovOyB9OwpAQCAtMTEzNyw2ICsxMTM4LDcgQEAKIAkJNDFCODc3NjIyM0RFMTA0NTAw
MzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI4Nzc2MDIzREUxMDQyMDAzNjM4Qjgg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUJGMjA0OTIyQkE3QkU4MDAwNEY4MTIgLyog
UmVhbHRpbWVWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3Vy
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAv
KiBTY3JpcHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQxQ0Q2RjhDMjNENkU4MjEwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tICovOyB9OwogCQk0MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0
QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRDEyOUNFMUYzRDBFRjYwMEQxNUU0NyAvKiBXb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGQjI3OEQxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3Bl
Q2FjaGVzLmggKi87IH07CiAJCTQxRDEyOUQwMUYzRDBGMDUwMEQxNUU0NyAvKiBDYWNoZVF1ZXJ5
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGQjI3OUIxRjM0Q0VGMDAwNzk1NDg3IC8qIENhY2hlUXVlcnlPcHRpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI1ODAsNyArMjU4Miw2
IEBACiAJCThBRjRFNTVDMTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1NTkxMURD
NUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmggKi87IH07CiAJCThCRDM3QTY4MjAx
QkIzOUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNodW5rLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkQzN0E2NzIwMUJCMzlDMDAxMTczNEEgLyog
UmVhZGFibGVTdHJlYW1DaHVuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCThFNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9u
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhFNEM5
NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCAqLzsgfTsKLQkJOEU2MjBF
ODEyMEVFNjAyNDAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RTYyMEU4MDIwRUU1RkZDMDA3
QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4RUM2Qzk2MzIwMUEyNTE2MDBGQkZBNTMgLyog
R2FwTGVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4RUM2Qzk2MTIwMUEyNTAxMDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEY2NzU2MUIxMjg4QjE3QjAwNDdB
Q0EzIC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTAwMTc3NDExMkUw
MzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMDE3NzNFMTJFMDM0NzgwMDY0ODQ2MiAv
KiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi87IH07CkBAIC03MzYxLDYgKzczNjIsOCBAQAog
CQk0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAv
KiBGZXRjaElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0
Y2hJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAy
RkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZG
Nzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcwQTJFOTFEOEMw
Q0MwMDAzMTg0NTIgLyogSlNET01XcmFwcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRE9NV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxNzI1M0E4MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E5MTM1NEJCQkMwMDM2
MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzQ2OCw2ICs3NDcxLDggQEAKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENh
bnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxQzdFMTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW1UcmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4OTIzRDZF
ODFDMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUNGOEJFNTFENDYy
MjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMDU0NCw4ICsxMDU0OSw2IEBACiAJCThFMzNDRDkzMjAxQTI5QzEwMEUz
OTA5MyAvKiBHYXBMZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2FwTGVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDgx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4RTRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmV0Y2hSZXNwb25zZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4RTYyMEU3RTIwRUU1RkUyMDA3QkM1RUYgLyog
VlJQbGF0Zm9ybURpc3BsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVlJQbGF0Zm9ybURpc3BsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4
RTYyMEU4MDIwRUU1RkZDMDA3QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEVDNkM5NjEyMDFBMjUwMTAwRkJGQTUzIC8q
IEdhcExlbmd0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHYXBMZW5ndGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0Ez
IC8qIEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRR
dWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RjkzNEQ4MzExODlGMUVFMDA1
MDhENUQgLyogSlNFeGVjU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNFeGVjU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODkyLDggKzE4
ODk1LDEyIEBACiAJCTREM0MwNUQ0MjFBRjQ4MDkwMEYyODkwQSAvKiBjb2NvYSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDE2Rjc5OEQyM0Q3NTBDQTAw
ODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovLAorCQkJCTQxNkY3OThG
MjNENzUwQ0IwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8sCiAJ
CQkJNEQ3M0Y5NEMyMThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EuaCAqLywKIAkJCQk0RDczRjk0RDIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbSAqLywKKwkJCQk0MUNENkY4OTIzRDZFODFDMDBCMTY0MjEg
LyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8sCisJCQkJNDFDRDZGOEIyM0Q2RTgx
RDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjU4MjMsNyAr
MjU4MzAsNiBAQAogCQkJCTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3b3JrICovLAog
CQkJCTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAw
NkMxRDAwRUY2RjI2IC8qIHRleHQgKi8sCi0JCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8q
IHZyICovLAogCQkJCURGREI5MTJDRjhFODhBNkRBMUFEMjY0RiAvKiBBYm9ydGFibGVUYXNrUXVl
dWUuaCAqLywKIAkJCQk0OUFFMkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1
ZS5jcHAgKi8sCiAJCQkJNDlBRTJEOTUxMzRFRTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFs
dWUuaCAqLywKQEAgLTMxMTY1LDE3ICszMTE3MSwxNyBAQAogCQkJCUJFOEVGMDREMTcxQzkwMTQw
MDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkU3OTE0
OTFGOTdFMDFBMDAxOTk3MzkgLyogSlNWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTc3NzlCRDk2MUYzMjI0NkEwMEMyMTQxNyAvKiBKU1Zpc3VhbFZpZXdwb3J0LmggaW4gSGVh
ZGVycyAqLywKLQkJCQkyRERFMUNFNDFGNTc0QUU5MDBEMUEzNjUgLyogSlNWUkRpc3BsYXkuaCBp
biBIZWFkZXJzICovLAotCQkJCTJEREUxQ0Y4MUY1NzRDMzkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxh
eUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFDRkExRjU3NEMzRTAwRDFB
MzY1IC8qIEpTVlJEaXNwbGF5RXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUxQ0ZDMUY1
NzRDRUUwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUV2ZW50UmVhc29uLmggaW4gSGVhZGVycyAqLywK
LQkJCQkyRERFMUNGRTFGNTc0Q0YzMDBEMUEzNjUgLyogSlNWUkV5ZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMkRERTFEMDAxRjU3NENGNzAwRDFBMzY1IC8qIEpTVlJFeWVQYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLywKLQkJCQkyRERFMUNFMzFGNTc0QUU1MDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZW
aWV3LmggaW4gSGVhZGVycyAqLywKLQkJCQkyRERFMUQwMjFGNTc0RDAwMDBEMUEzNjUgLyogSlNW
UkZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFEMDQxRjU3NEQwNTAwRDFBMzY1
IC8qIEpTVlJMYXllckluaXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUxRDA2MUY1NzREMEEw
MEQxQTM2NSAvKiBKU1ZSUG9zZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFEMDgxRjU3NEQw
RTAwRDFBMzY1IC8qIEpTVlJTdGFnZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJE
REUxQ0U0MUY1NzRBRTkwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERF
MUNGODFGNTc0QzM5MDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFD
RkExRjU3NEMzRTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxQ0ZD
MUY1NzRDRUUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUNGRTFG
NTc0Q0YzMDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFEMDAxRjU3
NENGNzAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxQ0UzMUY1NzRB
RTUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUQwMjFGNTc0RDAw
MDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFEMDQxRjU3NEQwNTAw
RDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxRDA2MUY1NzREMEEwMEQx
QTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUQwODFGNTc0RDBFMDBEMUEz
NjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJQkUyMDUwODIxOEE0NjBDMzAwODA2NDdF
IC8qIEpTVlRUQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUY5QjIwRDE4Q0ZCNUY0MDBDNjRC
RUYgLyogSlNWVFRSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRjlCMjBGMThDRkI1RjQw
MEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1NDIsNiAr
MzM1NDgsNyBAQAogCQkJCUE5Nzg3Q0I0MUY1RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5
TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VB
RkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1NTk2
OTExNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTZGNzk5MDIzRDc1MENGMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8q
IEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEOEE3QkJCMTk3NzM1RkUw
MENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzQyNzQsNiArMzQyODEsNyBAQAogCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2
MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTNGQkM0QUYzMTg5ODgxNTYwMDQ2RUUzOCAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBWaWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDFDRDZG
OEMyM0Q2RTgyMTAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1Ry
YWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2NzE3RkEwQUM2MDBERERDRDAg
LyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQubW0KaW5kZXggZmE4ZWUwYjEwMGNmMjE0MDg1NjUwNTE2YmM0ZTIzYTFkYjE1
YmYzNS4uZmMyOTA4Y2ViZTNkNzRlNWYxNTEwNGE1ZDc4MjMwY2JmOWVkNTMzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRy
YW5zZmVyU2Vzc2lvblZULm1tCkBAIC05NSw2ICs5NSw3IEBAIGJvb2wgSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVDo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAoX19icmlkZ2Ug
TlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXkgOiBAeyAvKmVt
cHR5IGRpY3Rpb25hcnkqLyB9LAogICAgIH07CiAKKwogICAgIE5TRGljdGlvbmFyeSogcGl4ZWxC
dWZmZXJQb29sT3B0aW9ucyA9IEB7CiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBp
eGVsQnVmZmVyUG9vbE1pbmltdW1CdWZmZXJDb3VudEtleTogQCg2KQogICAgIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggNzNmMWQwYTE1MTlmMmMwM2I5
MWQ2OTUxMDUxMzVhNGYyMGQxZGE2NC4uZjFmNjgwNDUyMjkzNjVkOGZjM2IwNzk2NzJkMmMyMDMz
ZmJlYTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAt
MjYsOSArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuaCIKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNs
dWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAi
TWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC02OCw3
ICs2OSwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBN
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6Y3JlYXRlKGF1ZGlvVHJhY2ssIHZpZGVvVHJhY2spOworCisgICAgaW50IHdpZHRoID0g
MCwgaGVpZ2h0ID0gMDsKKyAgICBpZiAodmlkZW9UcmFjaykgeworICAgICAgICBhdXRvJiBzZXR0
aW5ncyA9IHZpZGVvVHJhY2stPnNldHRpbmdzKCk7CisgICAgICAgIHdpZHRoID0gc2V0dGluZ3Mu
d2lkdGgoKTsKKyAgICAgICAgaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7CisgICAgfQorICAg
IGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSghIWF1ZGlv
VHJhY2ssIHdpZHRoLCBoZWlnaHQpOwogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApAQCAtMTE5LDQgKzEyNyw0IEBAIGNvbnN0IFN0cmluZyYgTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsOjptaW1lVHlwZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaAppbmRleCAwY2YwZGYzYzY0Y2M5NzEzZTMwNTliZTM2Y2FjYzlmYzdj
Y2MwYjM2Li4zNGUyYTk2Yzc5NDE4ZDRlODY2YzFhYzIxMDQwOThjYzkzOGY0NGI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTI0LDcgKzI0LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiTWVkaWFS
ZWNvcmRlclByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLmgiCkBAIC01Niw0ICs1Niw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDdiZjgxZTFk
NDU2YzcwYzJkOTQ0ZjcwNDVhOGUxNmUwNTliY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9y
dCA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBs
ZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0Nv
bnZlcnRlciogQXVkaW9Db252ZXJ0ZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrT2JqZWN0KTsKKyAgICB+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisK
KyAgICB2b2lkIGZpbmlzaCgpOworICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVm
ZmVyUmVmKTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsK
KyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIo
KTsKKworcHJpdmF0ZToKKyAgICBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKyAgICBi
b29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tPYmplY3QpOworCisgICAgc3RhdGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElu
cHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCos
IEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKiwgdm9pZCopOworCisgICAgdm9pZCBwcm9j
ZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRBdWRpb0Nv
bnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYs
IEF1ZGlvRm9ybWF0SUQpOworICAgIHNpemVfdCBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9y
bWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgVUludDMyLCBGbG9hdDMyKTsKKyAgICB2
b2lkIGF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBS
ZXRhaW5QdHI8TlNOdW1iZXI+IGdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCk7CisgICAgQ01T
YW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tl
dHMsIEF1ZGlvQnVmZmVyTGlzdCk7CisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGls
TG93V2F0ZXJUaW1lKENNVGltZSk7CisgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1P
dXRwdXRQYWNrZXRzKFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0
RGVzY3JpcHRpb24qKik7CisKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRw
dXRCdWZmZXJRdWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9pbnB1dEJ1
ZmZlclF1ZXVlOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwor
ICAgIENNVGltZSBtX2xvd1dhdGVyVGltZTsKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNl
IH07CisKKyAgICBSZXRhaW5QdHI8QXVkaW9Db252ZXJ0ZXJSZWY+IG1fY29udmVydGVyOworICAg
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX3NvdXJjZUZvcm1hdDsKKyAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gbV9kZXN0aW5hdGlvbkZvcm1hdDsKKyAgICBSZXRhaW5QdHI8
Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOwor
ICAgIFJldGFpblB0cjxOU051bWJlcj4gbV9nZHJDb3VudE51bTsKKyAgICBVSW50MzIgbV9tYXhP
dXRwdXRQYWNrZXRTaXplOworICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9u
PiBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zOworCisgICAgQ01UaW1lIG1fY3VycmVu
dE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAgICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0
UHJlc2VudGF0aW9uVGltZVN0YW1wOworICAgIENNVGltZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRp
b247CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9zb3VyY2VCdWZmZXI7CisgICAgVmVjdG9yPGNoYXI+
IG1fZGVzdGluYXRpb25CdWZmZXI7CisKKyAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4g
bV9zYW1wbGVCbG9ja0J1ZmZlcjsKKyAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7
CisgICAgc2l6ZV90IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXI7CisgICAgQXVk
aW9Gb3JtYXRJRCBtX291dHB1dENvZGVjVHlwZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MzMzNzQ2YWRmYjAw
M2RjNjYyMGEwMmQxMDZjOGQ0MGIxY2ZkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQpAQCAtMCwwICsxLDQ5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvZGVjLmg+CisjaW5jbHVkZSA8QXVk
aW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlv
Rm9ybWF0Lmg+CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQg
PHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oPgorCisjZGVmaW5lIExPV19XQVRFUl9USU1F
X0lOX1NFQ09ORCAwLjEKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxi
YWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBhdXRvIGNvbXByZXNz
b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcgQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkpOworICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlh
bGl6ZShjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gY29tcHJlc3NvcjsKK30KKworQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1
ZXVlIHsgZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSB9CisgICAgLCBtX2xvd1dhdGVyVGlt
ZSB7IENNVGltZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQsIDEwMDAp
IH0KKyAgICAsIG1fb3V0cHV0Q29kZWNUeXBlIHsga0F1ZGlvRm9ybWF0TVBFRzRBQUMgfQorewor
fQorCitBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoKQoreworICAgIGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAgICAgIGRpc3Bh
dGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKK30KKworYm9vbCBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFj
ayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgQ01CdWZmZXJRdWV1ZVJl
ZiBpbnB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9y
VW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZpbnB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBDTUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX2lucHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9pbnB1dEJ1
ZmZlclF1ZXVlID0gYWRvcHRDRihpbnB1dEJ1ZmZlclF1ZXVlKTsKKworICAgIENNQnVmZmVyUXVl
dWVSZWYgb3V0cHV0QnVmZmVyUXVldWU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1
ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFj
a3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBDTUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX291dHB1dEJ1ZmZlclF1ZXVlIGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1f
b3V0cHV0QnVmZmVyUXVldWUgPSBhZG9wdENGKG91dHB1dEJ1ZmZlclF1ZXVlKTsKKyAgICBDTUJ1
ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgY2FsbGJh
Y2ssIGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hlbkRhdGFCZWNvbWVz
UmVhZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKKworICAgIG1faXNFbmNvZGluZyA9IHRydWU7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpm
aW5pc2goKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeewor
ICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKGtDTVRpbWVJbnZh
bGlkKTsKKyAgICAgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1f
b3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihl
cnJvciwgTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJR
dWV1ZU1hcmtFbmRPZkRhdGEgZmFpbGVkICVkIiwgZXJyb3IpOworICAgICAgICBtX2lzRW5jb2Rp
bmcgPSBmYWxzZTsKKyAgICB9KTsKK30KKworYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24sIEF1ZGlvRm9ybWF0SUQgb3V0cHV0Rm9y
bWF0SUQpCit7CisgICAgY29uc3QgYXV0byAqYXVkaW9Gb3JtYXRMaXN0SXRlbSA9IENNQXVkaW9G
b3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQoZm9ybWF0RGVzY3JpcHRp
b24pOworICAgIG1fc291cmNlRm9ybWF0ID0gYXVkaW9Gb3JtYXRMaXN0SXRlbS0+bUFTQkQ7CisK
KyAgICBtZW1zZXQoJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIHNpemVvZihBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24pKTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9IG91
dHB1dEZvcm1hdElEOworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPSBtX3Nv
dXJjZUZvcm1hdC5tU2FtcGxlUmF0ZTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1DaGFubmVs
c1BlckZyYW1lID0gbV9zb3VyY2VGb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisKKyAgICBVSW50
MzIgc2l6ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJv
ciA9IEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkoa0F1ZGlvRm9ybWF0UHJvcGVydHlfRm9ybWF0SW5m
bywgMCwgTlVMTCwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBB
dWRpb0Zvcm1hdEdldFByb3BlcnR5IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgY29udmVydGVyOwor
ICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJOZXcoJm1fc291cmNlRm9ybWF0LCAm
bV9kZXN0aW5hdGlvbkZvcm1hdCwgJmNvbnZlcnRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252
ZXJ0ZXJOZXcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgbV9jb252ZXJ0ZXIgPSBhZG9wdENGKGNvbnZlcnRlcik7CisKKyAgICBzaXpl
X3QgY29va2llU2l6ZSA9IDA7CisgICAgY29uc3Qgdm9pZCAqY29va2llID0gQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUoZm9ybWF0RGVzY3JpcHRpb24sICZjb29raWVTaXpl
KTsKKyAgICBpZiAoY29va2llU2l6ZSkgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlv
Q29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckRl
Y29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgKFVJbnQzMiljb29raWVTaXplLCBjb29raWUpKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nv
b2tpZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9zb3VyY2VGb3JtYXQpOwor
ICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRl
ci5nZXQoKSwga0F1ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24sICZz
aXplLCAmbV9zb3VyY2VGb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVy
dGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fc291cmNlRm9ybWF0
Lm1CeXRlc1BlclBhY2tldCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIm1CeXRlc1BlclBhY2tldCBzaG91bGQgbm90IGJlIHplcm8iKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlvbkZvcm1hdCk7
CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVy
dGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24s
ICZzaXplLCAmbV9kZXN0aW5hdGlvbkZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVk
aW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobV9kZXN0
aW5hdGlvbkZvcm1hdC5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TVBFRzRBQUMpIHsKKyAgICAg
ICAgLy8gRklYTUU6IFNldCBvdXRwdXRCaXRSYXRlIGFjY29yZGluZyBNZWRpYVJlY29yZGVyT3B0
aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQuCisgICAgICAgIFVJbnQzMiBvdXRwdXRCaXRSYXRlID0g
NjQwMDA7CisgICAgICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlID49IDQ0
MTAwKQorICAgICAgICAgICAgb3V0cHV0Qml0UmF0ZSA9IDE5MjAwMDsKKyAgICAgICAgZWxzZSBp
ZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA8IDIyMDAwKQorICAgICAgICAgICAg
b3V0cHV0Qml0UmF0ZSA9IDMyMDAwOworCisgICAgICAgIHNpemUgPSBzaXplb2Yob3V0cHV0Qml0
UmF0ZSk7CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0
eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSwgc2l6ZSwg
Jm91dHB1dEJpdFJhdGUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRl
ckVuY29kZUJpdFJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3Jt
YXQubUJ5dGVzUGVyUGFja2V0KSB7CisgICAgICAgIC8vIElmIHRoZSBkZXN0aW5hdGlvbiBmb3Jt
YXQgaXMgVkJSLCB3ZSBuZWVkIHRvIGdldCBtYXggc2l6ZSBwZXIgcGFja2V0IGZyb20gdGhlIGNv
bnZlcnRlci4KKyAgICAgICAgc2l6ZSA9IHNpemVvZihtX21heE91dHB1dFBhY2tldFNpemUpOwor
CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2Nv
bnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVtT3V0cHV0UGFja2V0
U2l6ZSwgJnNpemUsICZtX21heE91dHB1dFBhY2tldFNpemUpKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBn
ZXR0aW5nIGtBdWRpb0NvbnZlcnRlclByb3BlcnR5TWF4aW11bU91dHB1dFBhY2tldFNpemUgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBtX2Rlc3RpbmF0aW9uQnVmZmVyLnJlc2VydmVDYXBhY2l0eShjb21w
dXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KG1fZGVzdGluYXRpb25Gb3JtYXQsIG1fbWF4T3V0
cHV0UGFja2V0U2l6ZSwgTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EKSk7CisgICAgaWYgKCFtX2Rl
c3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkKKyAgICAgICAgbV9kZXN0aW5hdGlvblBh
Y2tldERlc2NyaXB0aW9ucy5yZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBh
Y2l0eSgpIC8gbV9tYXhPdXRwdXRQYWNrZXRTaXplKTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitzaXplX3QgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZv
ckF1ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBmb3JtYXQsIFVJbnQzMiBt
YXhPdXRwdXRQYWNrZXRTaXplLCBGbG9hdDMyIGR1cmF0aW9uKQoreworICAgIFVJbnQzMiBudW1Q
YWNrZXRzID0gKGZvcm1hdC5tU2FtcGxlUmF0ZSAqIGR1cmF0aW9uKSAvIGZvcm1hdC5tRnJhbWVz
UGVyUGFja2V0OworICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gZm9ybWF0Lm1CeXRlc1Bl
clBhY2tldCA/IGZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtYXhPdXRwdXRQYWNrZXRTaXplOwor
ICAgIFVJbnQzMiBidWZmZXJTaXplID0gbnVtUGFja2V0cyAqIG91dHB1dFBhY2tldFNpemU7CisK
KyAgICByZXR1cm4gYnVmZmVyU2l6ZTsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZl
cikKK3sKKyAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQobV9yZW1haW5pbmdQcmltZUR1cmF0aW9u
KSkgeworICAgICAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07
CisgICAgICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKHByaW1lSW5mbyk7CisKKyAgICAgICAgaWYg
KGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgp
LCBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8sICZzaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3Jl
bWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVNYWtlKHByaW1lSW5mby5sZWFkaW5nRnJhbWVz
LCBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlKTsKKyAgICB9CisKKyAgICBpZiAoQ01U
SU1FX0NPTVBBUkVfSU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRp
b24pKSB7CisgICAgICAgIENNVGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0
RHVyYXRpb24oYnVmZmVyKTsKKyAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1p
bmltdW0oc2FtcGxlRHVyYXRpb24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7CisgICAgICAg
IENGRGljdGlvbmFyeVJlZiB0cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5
KHRyaW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgICAgIENNU2V0QXR0YWNo
bWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRT
dGFydCwgdHJpbUF0U3RhcnREaWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUp
OworICAgICAgICBDRlJlbGVhc2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAgbV9yZW1haW5p
bmdQcmltZUR1cmF0aW9uID0gQ01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQcmltZUR1cmF0aW9u
LCB0cmltRHVyYXRpb24pOworICAgIH0KK30KKworUmV0YWluUHRyPE5TTnVtYmVyPiBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCkKK3sKKyAg
ICBVSW50MzIgZGVsYXlTaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICB1aW50MzJfdCBvcmln
aW5hbERlbGF5TW9kZSA9IDA7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdl
dFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2Rl
LCAmZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcg
a0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICB1aW50MzJfdCBvcHRpbWFsRGVsYXlNb2Rl
ID0ga0F1ZGlvQ29kZWNEZWxheU1vZGVfT3B0aW1hbDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1
ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJv
cGVydHlEZWxheU1vZGUsIGRlbGF5U2l6ZSwgJm9wdGltYWxEZWxheU1vZGUpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIHNldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBVSW50MzIgcHJpbWVT
aXplID0gc2l6ZW9mKEF1ZGlvQ29kZWNQcmltZUluZm8pOworICAgIEF1ZGlvQ29kZWNQcmltZUlu
Zm8gcHJpbWVJbmZvIHsgMCwgMCB9OworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0
ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1l
SW5mbywgJnByaW1lU2l6ZSwgJnByaW1lSW5mbykpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVk
aW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZvIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAg
ICByZXR1cm4gbmlsOworICAgIH0KKworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0
ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5
TW9kZSwgZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRp
bmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0TlMoW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6KHByaW1lSW5mby5sZWFkaW5nRnJhbWVzIC8gbV9kZXN0aW5hdGlvbkZv
cm1hdC5tRnJhbWVzUGVyUGFja2V0KV0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKFVJbnQzMiBu
dW1QYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3QpCit7CisgICAgVmVjdG9y
PGNoYXI+IGNvb2tpZTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbikg
eworICAgICAgICBVSW50MzIgY29va2llU2l6ZSA9IDA7CisKKyAgICAgICAgYXV0byBlcnJvciA9
IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHlJbmZvKG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9D
b252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgTlVMTCk7CisgICAg
ICAgIGlmICgoZXJyb3IgPT0gbm9FcnIpICYmICEhY29va2llU2l6ZSkgeworICAgICAgICAgICAg
Y29va2llLnJlc2VydmVDYXBhY2l0eShjb29raWVTaXplKTsKKworICAgICAgICAgICAgaWYgKGF1
dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBr
QXVkaW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgY29va2ll
LmRhdGEoKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckNv
bXByZXNzaW9uTWFnaWNDb29raWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICAg
ICAgaWYgKGF1dG8gZXJyb3IgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIE5VTEwsIGNvb2tpZVNpemUs
IGNvb2tpZS5kYXRhKCksIE5VTEwsICZkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSkgewor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAgICAg
ICBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24gPSBhZG9wdENGKGRlc3RpbmF0aW9uRm9y
bWF0RGVzY3JpcHRpb24pOworICAgICAgICBtX2dkckNvdW50TnVtID0gZ3JhZHVhbERlY29kZXJS
ZWZyZXNoQ291bnQoKTsKKyAgICB9CisKKyAgICBjaGFyICpkYXRhID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhKTsKKyAgICBzaXplX3QgZGF0YVNp
emUgPSBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplOworCisgICAgQ01C
bG9ja0J1ZmZlclJlZiBibG9ja0J1ZmZlcjsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tC
dWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZGF0
YVNpemUsIGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIDAsIGRhdGFTaXplLCBrQ01CbG9ja0J1
ZmZlckFzc3VyZU1lbW9yeU5vd0ZsYWcsICZibG9ja0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01C
bG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKGJs
b2NrQnVmZmVyKTsKKworICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlclJlcGxhY2VE
YXRhQnl0ZXMoZGF0YSwgYnVmZmVyLmdldCgpLCAwLCBkYXRhU2l6ZSkpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
Q01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
QnVmZmVyOworICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBh
Y2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIuZ2V0KCksIHRydWUs
IE5VTEwsIE5VTEwsIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgbnVtUGFj
a2V0cywgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wLCBtX2Rlc3RpbmF0aW9u
UGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9y
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3Jp
cHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAg
IH0KKworICAgIGlmIChbbV9nZHJDb3VudE51bSBpbnRWYWx1ZV0pCisgICAgICAgIENNU2V0QXR0
YWNobWVudChzYW1wbGVCdWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVh
bERlY29kZXJSZWZyZXNoLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKW1fZ2RyQ291bnROdW0uZ2V0KCks
IGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisKKyAgICByZXR1cm4gc2FtcGxl
QnVmZmVyOworfQorCitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlv
Q29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiAq
bnVtT3V0cHV0UGFja2V0c1B0ciwgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0LCBBdWRpb1N0
cmVhbVBhY2tldERlc2NyaXB0aW9uICoqcGFja2V0RGVzY3JpcHRpb25PdXQsIHZvaWQgKmF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvcikKK3sKKyAgICBhdXRvICpjb21wcmVzc29yID0gc3RhdGlj
X2Nhc3Q8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4oYXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yKTsKKyAgICByZXR1cm4gY29tcHJlc3Nvci0+cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRw
dXRQYWNrZXRzKG51bU91dHB1dFBhY2tldHNQdHIsIGJ1ZmZlckxpc3QsIHBhY2tldERlc2NyaXB0
aW9uT3V0KTsKK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm92
aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKiBudW1PdXRwdXRQYWNrZXRzUHRy
LCBBdWRpb0J1ZmZlckxpc3QqIGF1ZGlvQnVmZmVyTGlzdCwgQXVkaW9TdHJlYW1QYWNrZXREZXNj
cmlwdGlvbioqIHBhY2tldERlc2NyaXB0aW9uT3V0KQoreworICAgIGlmIChwYWNrZXREZXNjcmlw
dGlvbk91dCkKKyAgICAgICAgKnBhY2tldERlc2NyaXB0aW9uT3V0ID0gTlVMTDsKKworICAgIGNv
bnN0IFVJbnQzMiBudW1QYWNrZXRzVG9Db3B5ID0gKm51bU91dHB1dFBhY2tldHNQdHI7CisgICAg
c2l6ZV90IG51bUJ5dGVzVG9Db3B5ID0gKG51bVBhY2tldHNUb0NvcHkgKiBtX3NvdXJjZUZvcm1h
dC5tQnl0ZXNQZXJQYWNrZXQpOworCisgICAgaWYgKGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1
ZmZlcnMgPT0gMSkgeworICAgICAgICBzaXplX3QgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVy
ID0gMDsKKworICAgICAgICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobnVtQnl0ZXNU
b0NvcHkpOworCisgICAgICAgIHdoaWxlIChudW1CeXRlc1RvQ29weSkgeworICAgICAgICAgICAg
aWYgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxv
Y2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgewor
ICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0
QnVmZmVyUXVldWUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRC
dWZmZXJRdWV1ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZl
ciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWlu
KENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAg
ICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9z
YW1wbGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX3NhbXBs
ZUJsb2NrQnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNh
bXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1f
c2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0Nv
cHlGcm9tU2FtcGxlQmJ1ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVCbG9j
a0J1ZmZlclNpemUgLSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSk7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyht
X3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVm
ZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAobV9zb3VyY2VCdWZmZXIuZGF0YSgp
ICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1
ZjsKKyAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgKz0gbnVtQnl0
ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJ
blNhbXBsZUJsb2NrQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sw
XS5tRGF0YSA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0
LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVy
OworICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9
IG1fc291cmNlRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lOworCisgICAgICAgICpudW1PdXRwdXRQ
YWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAv
IG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisgICAgICAgIHJldHVybiBub0VycjsK
KyAgICB9CisKKyAgICBBU1NFUlQoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAy
KTsKKworICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVybGVhdmVkIGRhdGEgYnkgdW5pbnRlcmxl
YXZpbmcgbV9zb3VyY2VCdWZmZXIgaWYgbmVlZGVkLgorICAgIEFTU0VSVChtX3NvdXJjZUZvcm1h
dC5tRm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZCk7CisKKyAg
ICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkoMiAqIG51bUJ5dGVzVG9Db3B5KTsKKyAg
ICBhdXRvKiBmaXJzdENoYW5uZWwgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7CisgICAgYXV0byog
c2Vjb25kQ2hhbm5lbCA9IG1fc291cmNlQnVmZmVyLmRhdGEoKSArIG51bUJ5dGVzVG9Db3B5Owor
CisgICAgc2l6ZV90IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciA9IDA7CisgICAgd2hpbGUg
KG51bUJ5dGVzVG9Db3B5KSB7CisgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA8
PSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICBpZiAo
bV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZm
ZXIgPSBudWxscHRyOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0g
MDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5
KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRC
dWZmZXJRdWV1ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0g
YWRvcHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01T
YW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAg
ICAgICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01T
YW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIG1fc2Ft
cGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJ
blNhbXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gQ01CbG9ja0J1
ZmZlckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSkgLyAyOworICAgICAg
ICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgc2l6ZV90
IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1CeXRlc1RvQ29weSwg
KG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIC0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1
ZmZlcikpOworICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURh
dGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBs
ZUJsb2NrQnVmZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoZmlyc3RDaGFubmVs
ICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBD
TUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBmaXJzdCBjaGFubmVsIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9z
YW1wbGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZl
ciArIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVm
LCAoc2Vjb25kQ2hhbm5lbCArIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcikpKSB7CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc2Vjb25kIGNoYW5uZWwg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0Nv
cHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZl
ciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgbV9jdXJyZW50
T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVm
OworICAgICAgICB9CisgICAgfQorCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5t
RGF0YSA9IGZpcnN0Q2hhbm5lbDsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1E
YXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7CisgICAgYXVkaW9CdWZm
ZXJMaXN0LT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgYXVkaW9CdWZm
ZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YSA9IHNlY29uZENoYW5uZWw7CisgICAgYXVkaW9CdWZm
ZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNl
QnVmZmVyOworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxz
ID0gMTsKKworICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1
ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7
CisgICAgcmV0dXJuIG5vRXJyOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUgbG93V2F0ZXJU
aW1lKQoreworICAgIGlmICghbV9jb252ZXJ0ZXIpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSAo
Q01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFk
KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlcik7CisK
KyAgICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVC
dWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50
T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVz
ZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKworICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0
aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpOworICAgICAg
ICBpZiAoIWluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKGZvcm1h
dERlc2NyaXB0aW9uLCBtX291dHB1dENvZGVjVHlwZSkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgd2hpbGUgKENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVyVGltZSkgfHwgQ01U
SU1FX0NPTVBBUkVfSU5MSU5FKGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJRdWV1ZUdldER1cmF0
aW9uKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSB7CisgICAgICAgIEF1ZGlvQnVmZmVyTGlz
dCBmaWxsQnVmZmVyTGlzdDsKKworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVy
cyA9IDE7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVs
cyA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisgICAgICAgIGZpbGxC
dWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSAoVUludDMyKW1fZGVzdGluYXRp
b25CdWZmZXIuY2FwYWNpdHkoKTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0u
bURhdGEgPSBtX2Rlc3RpbmF0aW9uQnVmZmVyLmRhdGEoKTsKKworICAgICAgICBVSW50MzIgb3V0
cHV0UGFja2V0U2l6ZSA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gbV9k
ZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtX21heE91dHB1dFBhY2tldFNpemU7
CisgICAgICAgIFVJbnQzMiBudW1PdXRwdXRQYWNrZXRzID0gKFVJbnQzMiltX2Rlc3RpbmF0aW9u
QnVmZmVyLmNhcGFjaXR5KCkgLyBvdXRwdXRQYWNrZXRTaXplOworCisgICAgICAgIGF1dG8gZXJy
b3IgPSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyKG1fY29udmVydGVyLmdldCgpLCBh
dWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jLCB0aGlzLCAmbnVtT3V0cHV0UGFja2V0
cywgJmZpbGxCdWZmZXJMaXN0LCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLmRhdGEo
KSk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJG
aWxsQ29tcGxleEJ1ZmZlciBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbnVtT3V0cHV0UGFja2V0cykKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gYnVmZmVyID0gc2FtcGxlQnVmZmVyV2l0aE51
bVBhY2tldHMobnVtT3V0cHV0UGFja2V0cywgZmlsbEJ1ZmZlckxpc3QpOworCisgICAgICAgIGF0
dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKGJ1ZmZlcik7CisKKyAgICAgICAgZXJyb3IgPSBDTVNh
bXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIsIG1fY3VycmVu
dE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBDTVRpbWUgbmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0
aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFt
cCA9IENNVGltZUFkZChtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG5hdGl2
ZUR1cmF0aW9uKTsKKworICAgICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24gPSBDTVNhbXBsZUJ1
ZmZlckdldE91dHB1dER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1dFBy
ZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRp
b25UaW1lU3RhbXAsIG91dHB1dER1cmF0aW9uKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVy
UXVldWVFbnF1ZXVlKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAg
IGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVm
ZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGVycm9yID0gQ01CdWZm
ZXJRdWV1ZUVucXVldWUobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KworICAgIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUobV9sb3dXYXRlclRp
bWUpOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVm
ZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykKKyAgICAgICAg
ICAgIHByb2Nlc3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVC
dWZmZXJSZWYgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZm
ZXIoKQoreworICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+
KENNQnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisK
K1JldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Ojp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1w
bGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0
YWluKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworfQorCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCBiMTQ3Y2EyODgy
OWIwZjEwMzBiZGE3NGEwODQyNmM0NTY1ZTk4NzFlLi5iMjViNDRkMjgzM2FkMDVmMWE2MjIzMzBi
YjI2ZGNiN2EyMWZjZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMjQsNyArMjQsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFW
RShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0
aW9uLmgiCiAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KQEAgLTM0LDExICszNiwxNiBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRp
b1R5cGVzLmg+CisjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogCiB0eXBlZGVmIHN0cnVj
dCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIGNvbnN0
IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVm
OwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiAqQ01CdWZm
ZXJRdWV1ZVRyaWdnZXJUb2tlbjsKIAogT0JKQ19DTEFTUyBBVkFzc2V0V3JpdGVyOwogT0JKQ19D
TEFTUyBBVkFzc2V0V3JpdGVySW5wdXQ7CitPQkpDX0NMQVNTIFdlYkFWQXNzZXRXcml0ZXJEZWxl
Z2F0ZTsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNZWRpYVRpbWU7CkBAIC00Niw1MSArNTMs
NzIgQEAgY2xhc3MgTWVkaWFUaW1lOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcjsKIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247
CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRh
OworY2xhc3MgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOwogCi1jbGFzcyBXRUJDT1JFX0VY
UE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6
TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4g
eworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdURjo6
RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXIsIFdlYWtQdHJGYWN0b3J5SW5pdGlhbGl6YXRpb246OkVhZ2VyPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4g
Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBhdWRpb1RyYWNrLCBjb25zdCBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdmlkZW9UcmFjayk7CiAgICAgc3RhdGljIFJlZlB0cjxN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0
aCwgaW50IGhlaWdodCk7CiAgICAgfk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCk7Ci0gICAg
Ci0gICAgYm9vbCBzZXR1cFdyaXRlcigpOwotICAgIGJvb2wgc2V0VmlkZW9JbnB1dChpbnQgd2lk
dGgsIGludCBoZWlnaHQpOwotICAgIGJvb2wgc2V0QXVkaW9JbnB1dCgpOworCiAgICAgdm9pZCBh
cHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CiAgICAgdm9pZCBhcHBl
bmRBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAg
dm9pZCBzdG9wUmVjb3JkaW5nKCk7CiAgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJik7CiAKKyAgICB2b2lkIGFwcGVuZERh
dGEoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmREYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworCiBwcml2YXRlOgotICAgIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJl
dGFpblB0cjxBVkFzc2V0V3JpdGVyPiYmLCBTdHJpbmcmJiBwYXRoKTsKKyAgICBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcihib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKTsKICAgICB2b2lk
IGNsZWFyKCk7CiAKLSAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7Ci0gICAg
UmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV92aWRlb0lucHV0OwotICAgIFJldGFpblB0
cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fYXVkaW9JbnB1dDsKLQotICAgIFN0cmluZyBtX3BhdGg7
Ci0gICAgTG9jayBtX3ZpZGVvTG9jazsKLSAgICBMb2NrIG1fYXVkaW9Mb2NrOwotICAgIEJpbmFy
eVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmU7Ci0gICAgQmluYXJ5U2VtYXBob3Jl
IG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlOwotICAgIEJpbmFyeVNlbWFwaG9yZSBtX2Zp
bmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZTsKKyAgICBib29sIGluaXRpYWxpemUoKTsKKworICAg
IHN0YXRpYyB2b2lkIGNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBD
TUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkQXVk
aW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7
CisKKyAgICB2b2lkIHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICB2b2lkIGFwcGVuZENvbXByZXNz
ZWRTYW1wbGVCdWZmZXJzKCk7CisKKyAgICBib29sIGFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBs
ZUJ1ZmZlcigpOworICAgIGJvb2wgYXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKCk7
CisKKyAgICB2b2lkIHByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCk7Cisg
ICAgdm9pZCBwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpOworCisgICAg
dm9pZCBmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAgICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0
aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKLSAgICBib29s
IG1faXNGaXJzdEF1ZGlvU2FtcGxlIHsgdHJ1ZSB9OwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9h
dWRpb1B1bGxRdWV1ZTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fdmlkZW9QdWxsUXVldWU7Ci0g
ICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV92aWRlb0J1ZmZlclBvb2w7
Ci0gICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV9hdWRpb0J1ZmZlclBv
b2w7CisKKyAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBib29s
IG1faXNTdG9wcGluZyB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+IG1f
ZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBib29sIG1faGFzQXVkaW87CisgICAg
Ym9vbCBtX2hhc1ZpZGVvOworCisgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+
IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKKyAgICBSZXRhaW5QdHI8QVZB
c3NldFdyaXRlcklucHV0PiBtX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dDsKKworICAgIFJldGFpblB0
cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb247CisgICAg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV92aWRlb0NvbXBy
ZXNzb3I7CisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV92aWRlb0Fzc2V0V3Jp
dGVySW5wdXQ7CisgICAgQ01UaW1lIG1fbGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZTsKKyAgICBD
TVRpbWUgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWU7CisgICAgYm9vbCBtX2hhc0VuY29kZWRWaWRl
b1NhbXBsZXMgeyBmYWxzZSB9OworCisgICAgUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxl
Z2F0ZT4gbV93cml0ZXJEZWxlZ2F0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggMjMzNTRmNDc4NGRl
MDkyZjA0ODdjMTg1NGZjNWIyNmE1ZTIyMTFhYy4uMDA1ZWViMzc4MmVmYmNmYmJkNzliMjVmY2Y3
NjMzOWZhOTIzNWM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMjYsMTExICsyNiwxMjggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCiAKLSNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCisjaW5jbHVkZSAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCiAjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgog
I2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9B
VkFzc2V0V3JpdGVyLmg+CiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJJbnB1
dC5oPgorI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyX1ByaXZhdGUuaD4KKyNp
bmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2luY2x1
ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHd0Zi9CbG9ja1B0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKICNpbXBvcnQgPHBh
bC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCi0jdW5kZWYgQVZFbmNvZGVyQml0UmF0
ZUtleQotI2RlZmluZSBBVkVuY29kZXJCaXRSYXRlS2V5IGdldEFWRW5jb2RlckJpdFJhdGVLZXlX
aXRoRmFsbGJhY2soKQotI3VuZGVmIEFWRm9ybWF0SURLZXkKLSNkZWZpbmUgQVZGb3JtYXRJREtl
eSBnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBBVk51bWJlck9mQ2hhbm5l
bHNLZXkKLSNkZWZpbmUgQVZOdW1iZXJPZkNoYW5uZWxzS2V5IGdldEFWTnVtYmVyT2ZDaGFubmVs
c0tleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZTYW1wbGVSYXRlS2V5Ci0jZGVmaW5lIEFWU2Ft
cGxlUmF0ZUtleSBnZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJhY2soKQorQGludGVyZmFjZSBX
ZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgOiBOU09iamVjdCA8QVZBc3NldFdyaXRlckRlbGVnYXRl
PiB7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gbV93
cml0ZXI7Cit9CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqKXdyaXRlcjsKKy0g
KHZvaWQpY2xvc2U7CistICh2b2lkKWZpbmlzaDsKIAotdXNpbmcgbmFtZXNwYWNlIFBBTDsKK0Bl
bmQKIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKK0Bp
bXBsZW1lbnRhdGlvbiBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgeworfTsKKworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoV3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciopd3JpdGVyCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJ
REtleSgpKQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURL
ZXkoKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07CisgICAgaWYgKHNlbGYpCisgICAgICAgIHNlbGYtPm1fd3JpdGVyID0gbWFrZVdlYWtQdHIo
d3JpdGVyKTsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQg
QVZGb3JtYXRJREtleSIpOwotICAgIHJldHVybiBAIkFWRm9ybWF0SURLZXkiOworICAgIHJldHVy
biBzZWxmOwogfQogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdp
dGhGYWxsYmFjaygpCistICh2b2lkKWRlYWxsb2MKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FW
Rm91bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5lbHNLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6
Z2V0X0FWRm91bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5lbHNLZXkoKTsKLQotICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZOdW1iZXJPZkNoYW5uZWxzS2V5Iik7
Ci0gICAgcmV0dXJuIEAiQVZOdW1iZXJPZkNoYW5uZWxzS2V5IjsKKyAgICBbc3VwZXIgZGVhbGxv
Y107CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNr
KCkKKy0gKHZvaWQpYXNzZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQ
cm9kdWNlRnJhZ21lbnRlZEhlYWRlckRhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRIZWFkZXJEYXRh
CiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkp
Ci0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCk7
CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgp
KSB7CisgICAgICAgIGlmIChhdXRvIHNpemUgPSBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3Ro
XSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFp
blB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRI
ZWFkZXJEYXRhIGJ5dGVzXSksIHNpemUpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlm
IChwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlcikKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVk
U2VsZi0+bV93cml0ZXItPmFwcGVuZERhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWU2FtcGxlUmF0ZUtleSIpOwotICAgIHJl
dHVybiBAIkFWU2FtcGxlUmF0ZUtleSI7CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dy
aXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFk
ZXJEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkSGVhZGVyRGF0YSBsZW5ndGhdKTsKIH0KIAotc3Rh
dGljIE5TU3RyaW5nICpnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZv
aWQpYXNzZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQcm9kdWNlRnJh
Z21lbnRlZE1lZGlhRGF0YTooTlNEYXRhICopZnJhZ21lbnRlZE1lZGlhRGF0YSBmcmFnbWVudGVk
TWVkaWFEYXRhUmVwb3J0OihBVkZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQgKilmcmFnbWVudGVk
TWVkaWFEYXRhUmVwb3J0CiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZF
bmNvZGVyQml0UmF0ZUtleSgpKQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9u
X0FWRW5jb2RlckJpdFJhdGVLZXkoKTsKKyAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0ZXIpOwor
ICAgIFVOVVNFRF9QQVJBTShmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0KTsKKyAgICBpZiAoIWlz
TWFpblRocmVhZCgpKSB7CisgICAgICAgIGlmIChhdXRvIHNpemUgPSBbZnJhZ21lbnRlZE1lZGlh
RGF0YSBsZW5ndGhdKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4oc2VsZiksIGJ1ZmZlciA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihb
ZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAg
IHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyLT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkVuY29kZXJCaXRSYXRl
S2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZFbmNvZGVyQml0UmF0ZUtleSI7CisgICAgaWYgKG1fd3Jp
dGVyKQorICAgICAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oW2ZyYWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVu
Z3RoXSk7CiB9CiAKLVJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSog
YXVkaW9UcmFjaywgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHZpZGVvVHJhY2spCist
ICh2b2lkKWNsb3NlCiB7Ci0gICAgaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKLSAgICBpZiAo
dmlkZW9UcmFjaykgewotICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IHZpZGVvVHJhY2stPnNldHRp
bmdzKCk7Ci0gICAgICAgIHdpZHRoID0gc2V0dGluZ3Mud2lkdGgoKTsKLSAgICAgICAgaGVpZ2h0
ID0gc2V0dGluZ3MuaGVpZ2h0KCk7Ci0gICAgfQotICAgIHJldHVybiBjcmVhdGUoISFhdWRpb1Ry
YWNrLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBtX3dyaXRlciA9IG51bGxwdHI7CiB9CiAKLVJlZlB0
cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCistICh2b2lkKWZp
bmlzaAogewotICAgIE5TU3RyaW5nICpkaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkoQCJ2aWRlb3MiKTsKLSAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIi8lbGxkLm1wNCIsIENNQ2xvY2tHZXRUaW1lKENNQ2xv
Y2tHZXRIb3N0VGltZUNsb2NrKCkpLnZhbHVlXTsKLSAgICBOU1N0cmluZyAqcGF0aCA9IFtkaXJl
Y3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6ZmlsZW5hbWVdOworICAgIG1fd3JpdGVyID0g
bnVsbHB0cjsKK30KIAotICAgIE5TVVJMICpvdXRwdXRVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOnBhdGhdOwotICAgIFN0cmluZyBmaWxlUGF0aCA9IFtwYXRoIFVURjhTdHJpbmddOwotICAg
IE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIGF1dG8gYXZBc3NldFdyaXRlciA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0aFVSTDpvdXRwdXRVUkwg
ZmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOwotICAgIGlmIChlcnJvcikg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0
V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpZXJyb3Iu
Y29kZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KK0BlbmQKIAotICAgIGF1dG8g
d3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihXVEZNb3Zl
KGF2QXNzZXRXcml0ZXIpLCBXVEZNb3ZlKGZpbGVQYXRoKSkpOworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit1c2luZyBuYW1lc3BhY2UgUEFMOwogCi0gICAgaWYgKGhhc0F1ZGlvICYmICF3cml0ZXIt
PnNldEF1ZGlvSW5wdXQoKSkKK1JlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpCit7CisgICAgYXV0byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKGhhc0F1ZGlvLCB3aWR0aCAmJiBoZWlnaHQpKTsKKyAgICBpZiAo
IXdyaXRlci0+aW5pdGlhbGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gd3JpdGVyOworfQogCi0gICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewotICAgICAgICBpZiAo
IXdyaXRlci0+c2V0VmlkZW9JbnB1dCh3aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBy
ZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQgKm1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKQoreworICAgIGF1dG8gKndyaXRlciA9
IHN0YXRpY19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKj4obWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIpOworICAgIHdyaXRlci0+cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBs
ZUJ1ZmZlcnMoKTsKK30KIAotICAgIHJldHVybiBXVEZNb3ZlKHdyaXRlcik7Cit2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFj
ayh2b2lkICptZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJU
b2tlbikKK3sKKyAgICBhdXRvICp3cml0ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcio+KG1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKTsKKyAgICB3cml0ZXItPnBy
b2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCk7CiB9CiAKLU1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRhaW5QdHI8QVZB
c3NldFdyaXRlcj4mJiBhdkFzc2V0V3JpdGVyLCBTdHJpbmcmJiBmaWxlUGF0aCkKLSAgICA6IG1f
d3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRlcikpCi0gICAgLCBtX3BhdGgoV1RGTW92ZShmaWxl
UGF0aCkpCitNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbykKKyAgICA6IG1faGFzQXVkaW8oaGFz
QXVkaW8pCisgICAgLCBtX2hhc1ZpZGVvKGhhc1ZpZGVvKQogewogfQogCkBAIC0xMzksMTQwICsx
NTYsMjI5IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoKQogICAgIGNsZWFyKCk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNsZWFyKCkKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmluaXRpYWxp
emUoKQogewotICAgIGlmIChtX3ZpZGVvSW5wdXQpIHsKLSAgICAgICAgbV92aWRlb0lucHV0LmNs
ZWFyKCk7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV92aWRlb1B1bGxRdWV1ZSk7CisgICAg
TlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgbV93cml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
QVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhGaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQg
ZXJyb3I6JmVycm9yXSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdp
dGggZXJyb3IgY29kZSAlbGQiLCAobG9uZyllcnJvci5jb2RlKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICBpZiAobV9hdWRpb0lucHV0KSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1
dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fYXVkaW9QdWxsUXVldWUpOwor
CisgICAgbV93cml0ZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJBVkFzc2V0V3JpdGVyRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoV3JpdGVyOiB0aGlzXSk7CisgICAgW21fd3JpdGVyLmdldCgpIHNl
dERlbGVnYXRlOm1fd3JpdGVyRGVsZWdhdGUuZ2V0KCldOworCisgICAgaWYgKG1faGFzQXVkaW8p
IHsKKyAgICAgICAgbV9hdWRpb0NvbXByZXNzb3IgPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmNyZWF0ZShjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7Cisg
ICAgICAgIGlmICghbV9hdWRpb0NvbXByZXNzb3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIGlmIChtX3dyaXRlcikKLSAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKyAg
ICBpZiAobV9oYXNWaWRlbykgeworICAgICAgICBtX3ZpZGVvQ29tcHJlc3NvciA9IFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQsIGNvbXBy
ZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgaWYgKCFtX3Zp
ZGVvQ29tcHJlc3NvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOwotICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpCit7Cisg
ICAgQVNTRVJUKG1faGFzVmlkZW8pOworICAgIGlmICghbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9u
KSB7CisgICAgICAgIG1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0
Rm9ybWF0RGVzY3JpcHRpb24obV92aWRlb0NvbXByZXNzb3ItPmdldE91dHB1dFNhbXBsZUJ1ZmZl
cigpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgdGhpc10geworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChtX2hhc0F1ZGlvICYmICFtX2F1ZGlvRm9ybWF0
RGVzY3JpcHRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFy
dEFzc2V0V3JpdGVyKCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRl
ZFdyaXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVm
ZmVycygpOwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRWaWRlb0lu
cHV0KGludCB3aWR0aCwgaW50IGhlaWdodCkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCkKIHsKLSAgICBBU1NF
UlQoIW1fdmlkZW9JbnB1dCk7Ci0gICAgCi0gICAgTlNEaWN0aW9uYXJ5ICpjb21wcmVzc2lvblBy
b3BlcnRpZXMgPSBAewotICAgICAgICBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgOiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDp3aWR0aCAqIGhlaWdodCAqIDEyXSwKLSAgICAgICAgQVZWaWRlb0V4
cGVjdGVkU291cmNlRnJhbWVSYXRlS2V5IDogQCgzMCksCi0gICAgICAgIEFWVmlkZW9NYXhLZXlG
cmFtZUludGVydmFsS2V5IDogQCgxMjApLAotICAgICAgICBBVlZpZGVvUHJvZmlsZUxldmVsS2V5
IDogQVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xldmVsCi0gICAgfTsKLQotICAgIE5T
RGljdGlvbmFyeSAqdmlkZW9TZXR0aW5ncyA9IEB7Ci0gICAgICAgIEFWVmlkZW9Db2RlY0tleTog
QVZWaWRlb0NvZGVjSDI2NCwKLSAgICAgICAgQVZWaWRlb1dpZHRoS2V5OiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDp3aWR0aF0sCi0gICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6IFtOU051bWJlciBu
dW1iZXJXaXRoSW50OmhlaWdodF0sCi0gICAgICAgIEFWVmlkZW9Db21wcmVzc2lvblByb3BlcnRp
ZXNLZXk6IGNvbXByZXNzaW9uUHJvcGVydGllcwotICAgIH07CisgICAgQVNTRVJUKG1faGFzQXVk
aW8pOworICAgIGlmICghbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIG1fYXVk
aW9Gb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24o
bV9hdWRpb0NvbXByZXNzb3ItPmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpKTsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10geworICAg
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChtX2hhc1ZpZGVvICYmICFtX3ZpZGVvRm9ybWF0RGVzY3Jp
cHRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFydEFzc2V0
V3JpdGVyKCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRp
bmcpCisgICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygp
OworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVy
KCkKK3sKKyAgICBpZiAobV9oYXNWaWRlbykgeworICAgICAgICBtX3ZpZGVvQXNzZXRXcml0ZXJJ
bnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGlu
aXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6bmlsIHNvdXJj
ZUZvcm1hdEhpbnQ6bV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7CisgICAgICAgIFtt
X3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVl
XTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV92aWRlb0Fzc2V0
V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZh
aWxlZCBjYW5BZGRJbnB1dCBmb3IgdmlkZW8iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVy
SW5wdXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBtX3ZpZGVvSW5wdXQgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpB
Vk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOnZpZGVvU2V0dGluZ3Mgc291cmNlRm9ybWF0
SGludDpuaWxdKTsKLSAgICBbbV92aWRlb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxU
aW1lOnRydWVdOworICAgIGlmIChtX2hhc0F1ZGlvKSB7CisgICAgICAgIG1fYXVkaW9Bc3NldFdy
aXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNl
KCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczpuaWwg
c291cmNlRm9ybWF0SGludDptX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCldKTsKKyAgICAg
ICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1l
OnRydWVdOworICAgICAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBjYW5BZGRJbnB1dDptX2F1ZGlv
QXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0
ZXIgZmFpbGVkIGNhbkFkZElucHV0IGZvciBhdWRpbyIpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIFttX3dyaXRlci5nZXQoKSBhZGRJbnB1dDptX2F1ZGlvQXNzZXRX
cml0ZXJJbnB1dC5nZXQoKV07CisgICAgfQogICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFk
ZElucHV0Om1fdmlkZW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV92aWRlb0lucHV0ID0gbnVs
bHB0cjsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgdmlkZW8g
aW5wdXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBzdGFydFdyaXRpbmdd
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIHN0YXJ0V3JpdGluZyIpOwor
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFttX3dyaXRlciBhZGRJbnB1dDptX3ZpZGVvSW5w
dXQuZ2V0KCldOwotICAgIG1fdmlkZW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUo
IldlYkNvcmVWaWRlb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCk7CisKKyAgICBbbV93cml0ZXIuZ2V0KCkgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOmtD
TVRpbWVaZXJvXTsKKworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisKKyAg
ICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKK30KKworYm9vbCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKCkKK3sKKyAgICBp
ZiAoIW1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IVttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gYnVmZmVyID0gbV9hdWRpb0NvbXByZXNzb3It
PnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNh
bXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRBdWRpb0lucHV0KCkKK2Jvb2wgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpCiB7
Ci0gICAgQVNTRVJUKCFtX2F1ZGlvSW5wdXQpOworICAgIGlmICghbV92aWRlb0NvbXByZXNzb3Ip
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5TRGljdGlvbmFyeSAqYXVkaW9TZXR0aW5n
cyA9IEB7Ci0gICAgICAgIEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4MDAwKSwKLSAgICAgICAg
QVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAotICAgICAgICBBVk51bWJl
ck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAotICAgICAgICBBVlNhbXBsZVJhdGVLZXkgOiBAKDIyMDUw
KQotICAgIH07CisgICAgaWYgKCFbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1v
cmVNZWRpYURhdGFdKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2F1ZGlvSW5wdXQg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0
aE1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdzOmF1ZGlvU2V0dGluZ3Mg
c291cmNlRm9ybWF0SGludDpuaWxdKTsKLSAgICBbbV9hdWRpb0lucHV0IHNldEV4cGVjdHNNZWRp
YURhdGFJblJlYWxUaW1lOnRydWVdOwotICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElu
cHV0Om1fYXVkaW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV9hdWRpb0lucHV0ID0gbnVsbHB0
cjsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgYXVkaW8gaW5w
dXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7CisgICAgYXV0
byBidWZmZXIgPSBtX3ZpZGVvQ29tcHJlc3Nvci0+dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOwor
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFttX3dy
aXRlciBhZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldOwotICAgIG1fYXVkaW9QdWxsUXVldWUg
PSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVBdWRpb1JlY29yZGluZ1B1bGxCdWZmZXJR
dWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisKKyAgICBtX2xhc3RWaWRlb1ByZXNlbnRh
dGlvblRpbWUgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIu
Z2V0KCkpOworICAgIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lID0gQ01TYW1wbGVCdWZmZXJHZXRE
ZWNvZGVUaW1lU3RhbXAoYnVmZmVyLmdldCgpKTsKKyAgICBtX2hhc0VuY29kZWRWaWRlb1NhbXBs
ZXMgPSB0cnVlOworCisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNh
bXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygp
Cit7CisgICAgd2hpbGUgKGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpIHx8IGFw
cGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpKSB7IH07Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3Jp
dGVySW5wdXQgKmFzc2V0V3JpdGVySW5wdXQsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAs
IENNVGltZSBkZWNvZGluZ1RpbWVTdGFtcCkKK3sKKyAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGlt
aW5nSW5mbyA9IHsga0NNVGltZUludmFsaWQsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZGVjb2Rp
bmdUaW1lU3RhbXB9OworCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyID0gTlVMTDsKKyAg
ICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
TlVMTCwgdHJ1ZSwgTlVMTCwgTlVMTCwgTlVMTCwgMCwgMSwgJnRpbWluZ0luZm8sIDAsIE5VTEws
ICZidWZmZXIpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZEVuZHNQcmV2aW91
c1NhbXBsZUR1cmF0aW9uTWFya2VyIGZhaWxlZCBDTVNhbXBsZUJ1ZmZlckNyZWF0ZSB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gc2FtcGxlQnVmZmVy
ID0gYWRvcHRDRihidWZmZXIpOworCisgICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlci5n
ZXQoKSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJh
dGlvbiwga0NGQm9vbGVhblRydWUsIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7
CisgICAgaWYgKCFbYXNzZXRXcml0ZXJJbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6c2FtcGxlQnVm
ZmVyLmdldCgpXSkKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRTYW1wbGVCdWZmZXIgdG8gd3JpdGVyIGlucHV0
IGZhaWxlZCIpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRF
bmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2hhc0VuY29kZWRWaWRlb1NhbXBs
ZXMpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFE
YXRhXSkgeworICAgICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlciht
X3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1l
LCBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2NrID0gbWFrZUJsb2NrUHRy
KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAod2Vh
a1RoaXMpIHsKKyAgICAgICAgICAgIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFy
a2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpLCBtX2xhc3RWaWRlb1ByZXNlbnRhdGlv
blRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsKKyAgICAgICAgICAgIFttX3ZpZGVvQXNz
ZXRXcml0ZXJJbnB1dCBtYXJrQXNGaW5pc2hlZF07CisgICAgICAgIH0KKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKyAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgcmVx
dWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1
c2luZ0Jsb2NrOmJsb2NrLmdldCgpXTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1
ZmZlcnMoKTsKKyAgICBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNsZWFyKCkKK3sKKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLmNs
ZWFyKCk7CisKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKKwogc3RhdGljIGlubGluZSBSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFt
cChDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikKIHsKICAgICBDTVRpbWUgc3RhcnRU
aW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7CiAgICAgQ01J
dGVtQ291bnQgY291bnQgPSAwOwogICAgIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5m
b0FycmF5KG9yaWdpbmFsQnVmZmVyLCAwLCBuaWwsICZjb3VudCk7Ci0gICAgCisKICAgICBWZWN0
b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3VudCk7CiAgICAgQ01TYW1wbGVCdWZm
ZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5m
by5kYXRhKCksICZjb3VudCk7Ci0gICAgCi0gICAgZm9yIChDTUl0ZW1Db3VudCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKKworICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK
ICAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1wID0ga0NNVGltZUludmFsaWQ7CiAg
ICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IHN0YXJ0VGltZTsKICAg
ICB9Ci0gICAgCisKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdCdWZmZXIgPSBudWxscHRyOwot
ICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgp
LCAmbmV3QnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTVNh
bXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9y
aWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAmbmV3QnVmZmVyKSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyIENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1cm4g
YWRvcHRDRihuZXdCdWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIp
CiB7Ci0gICAgQVNTRVJUKG1fdmlkZW9JbnB1dCk7Ci0gICAgaWYgKG1faXNTdG9wcGVkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpIHsKLSAgICAgICAg
aWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewotICAgICAgICAgICAgbV9pc1N0b3BwZWQg
PSB0cnVlOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVh
dGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChs
b25nKVttX3dyaXRlciBlcnJvcl0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUo
Q01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5n
ID0gdHJ1ZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBwcm90
ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fdmlkZW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRh
V2hlblJlYWR5T25RdWV1ZTptX3ZpZGVvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRh
XSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdmlkZW9C
dWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBtX3ZpZGVvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsKLSAg
ICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAgICAgICAgICAgICBpZiAo
IVttX3ZpZGVvSW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV0pCi0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAg
ICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgW21fdmlkZW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAg
ICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH1dOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gYnVmZmVy
V2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNh
bXBsZUJ1ZmZlcik7Ci0gICAgaWYgKCFidWZmZXJXaXRoQ3VycmVudFRpbWUpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOwotICAgIG1f
dmlkZW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcldpdGhDdXJyZW50VGltZSkpOwor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHNldCB0aGUgdGltZXN0YW1wcyBpZiB0aGV5IGFy
ZSBhbHJlYWR5IHNldC4KKyAgICBpZiAoYXV0byBidWZmZXJXaXRoQ3VycmVudFRpbWUgPSBjb3B5
U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSkKKyAgICAgICAg
bV92aWRlb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihidWZmZXJXaXRoQ3VycmVudFRpbWUu
Z2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9u
UmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uKQpAQCAtMjgwLDY4ICszODYsMzkgQEAgc3RhdGljIGlubGluZSBS
ZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbihjb24KICAgICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25zdCBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9u
KCkuZGVzY3JpcHRpb24pOwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0ID0gbnVs
bHB0cjsKICAgICBhdXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24sIDAsIE5VTEwsIDAsIE5VTEwsIE5V
TEwsICZmb3JtYXQpOwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihmb3Jt
YXQpOwogfQogCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3Jl
YXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZm9ybWF0LCBzaXplX3Qgc2FtcGxlQ291bnQpCi17Ci0gICAgQ01UaW1lIHN0YXJ0
VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOwotICAgIENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgYXV0byBlcnJvciA9
IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9j
YXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQsIHNhbXBsZUNvdW50
LCBzdGFydFRpbWUsIE5VTEwsICZzYW1wbGVCdWZmZXIpOwotICAgIGlmIChlcnJvcikKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKLX0K
LQotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZm
ZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVD
b3VudCkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVB
dWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0
aW1lLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7Ci0gICAgQVNTRVJUKG1fYXVkaW9JbnB1dCk7Ci0g
ICAgaWYgKCghbV9oYXNTdGFydGVkV3JpdGluZyAmJiBtX3ZpZGVvSW5wdXQpIHx8IG1faXNTdG9w
cGVkKQotICAgICAgICByZXR1cm47CiAgICAgYXV0byBmb3JtYXQgPSBjcmVhdGVBdWRpb0Zvcm1h
dERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKICAgICBpZiAoIWZvcm1hdCkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmIChtX2lzRmlyc3RBdWRpb1NhbXBsZSkgewotICAgICAgICBpZiAoIW1fdmlk
ZW9JbnB1dCkgewotICAgICAgICAgICAgLy8gYXVkaW8tb25seSByZWNvcmRpbmcuCi0gICAgICAg
ICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7Ci0gICAgICAgICAgICAgICAgbV9p
c1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dl
dFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICAgICAgbV9oYXNTdGFy
dGVkV3JpdGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1w
bGUgPSBmYWxzZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBw
cm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fYXVkaW9JbnB1dCByZXF1ZXN0TWVkaWFE
YXRhV2hlblJlYWR5T25RdWV1ZTptX2F1ZGlvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBkbyB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV9hdWRpb0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFE
YXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXVk
aW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsK
LSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAgICAgICAgICAgICBb
bV9hdWRpb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwotICAgICAgICAg
ICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV9hdWRp
b0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBt
YXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1h
cGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxw
dHI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0
RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxM
LCBmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50LCB0b0NNVGltZSh0aW1lKSwgTlVMTCwgJnNhbXBs
ZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgY3JlYXRlQXVkaW9TYW1wbGVC
dWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKHNh
bXBsZUJ1ZmZlcik7CiAKLSAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxl
QnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50KTsK
LSAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gZXJyb3Ig
PSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0KHNhbXBsZUJ1
ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
ZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkpOwotICAgIGlmIChlcnJv
cikKLSAgICAgICAgcmV0dXJuOworICAgIGVycm9yID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVm
ZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdChidWZmZXIuZ2V0KCksIGtDRkFsbG9jYXRvckRlZmF1bHQs
IGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0
YSkubGlzdCgpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTVNhbXBsZUJ1ZmZlclNl
dERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KIAot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb0xvY2spOwotICAgIG1fYXVkaW9CdWZm
ZXJQb29sLmFwcGVuZChXVEZNb3ZlKHNhbXBsZUJ1ZmZlcikpOwordm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRp
b0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBj
b25zdCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgc2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIGlm
IChhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGRhdGEsIGRlc2Ny
aXB0aW9uLCB0aW1lLCBzYW1wbGVDb3VudCkpCisgICAgICAgIG1fYXVkaW9Db21wcmVzc29yLT5h
ZGRTYW1wbGVCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKTsKIH0KIAogdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCkBAIC0zNTAsMzUgKzQyNyw0MCBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworCisgICAgaWYgKG1fdmlkZW9Db21w
cmVzc29yKQorICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+ZmluaXNoKCk7CisgICAgaWYgKG1f
YXVkaW9Db21wcmVzc29yKQorICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nvci0+ZmluaXNoKCk7CisK
ICAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NF
UlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZBc3NldFdyaXRlclN0YXR1c1dyaXRpbmcpOwotICAg
IGlmIChtX3ZpZGVvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3Jl
LndhaXQoKTsKLQotICAgIGlmIChtX2F1ZGlvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGlu
Z0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKIAogICAgIG1faXNTdG9wcGluZyA9IHRydWU7Ci0gICAg
W21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtQ
dHIgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3ZlKHdlYWtQdHIpLCBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpXSgpIG11dGFibGUgewotICAg
ICAgICAgICAgaWYgKCF3ZWFrUHRyKQotICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAobV9mZXRjaERhdGFD
b21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1
ZmZlcnMoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
IG1faXNTdG9wcGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0g
ZmFsc2U7Ci0gICAgICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IHRydWU7Ci0gICAgICAg
ICAgICBjbGVhcigpOwotICAgICAgICB9KTsKLSAgICAgICAgbV9maW5pc2hXcml0aW5nU2VtYXBo
b3JlLnNpZ25hbCgpOwotICAgIH1dOwotICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZS53YWl0
KCk7CisgICAgICAgIFttX3dyaXRlciBmbHVzaF07CisgICAgICAgIFttX3dyaXRlciBmaW5pc2hX
cml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
d2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobV9mZXRj
aERhdGFDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFdURk1vdmUobV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgbV9mZXRjaERhdGFDb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbV9oYXNT
dGFydGVkV3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfV07CisgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMzkyLDYgKzQ3NCwyNCBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8U2hhcmVkQgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVm
ZmVyKSk7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3Zv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gV1RG
TW92ZShidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZGF0YS0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NDE0ZGJiNTQ5Y2Y1YTJlNTE1N2U5MjBjNmM1YWU0YmEwNjBlNjgwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikK
KworI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbmNsdWRlIDxWaWRlb1Rvb2xi
b3gvVlRFcnJvcnMuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNN
U2FtcGxlQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRDb21wcmVzc2lvblNlc3Np
b24qICBWVENvbXByZXNzaW9uU2Vzc2lvblJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yPiBjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRy
aWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworICAgIH5WaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IoKTsKKworICAgIHZvaWQgZmluaXNoKCk7CisgICAgdm9pZCBhZGRTYW1w
bGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOworICAgIENNU2FtcGxlQnVmZmVyUmVmIGdldE91
dHB1dFNhbXBsZUJ1ZmZlcigpOworICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gdGFr
ZU91dHB1dFNhbXBsZUJ1ZmZlcigpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlKTsKKworICAgIGJvb2wgaW5pdGlh
bGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7
CisKKyAgICB2b2lkIHByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOworICAg
IGJvb2wgaW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYp
OworCisgICAgc3RhdGljIHZvaWQgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNv
biwgdm9pZCosIE9TU3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJSZWYp
OworCisgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgUmV0
YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CisgICAgUmV0YWlu
UHRyPFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmPiBtX3Z0U2Vzc2lvbjsKKworICAgIGJvb2wgbV9p
c0VuY29kaW5nIHsgZmFsc2UgfTsKKworICAgIENNVmlkZW9Db2RlY1R5cGUgbV9vdXRwdXRDb2Rl
Y1R5cGU7CisgICAgZmxvYXQgbV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24geyAyLjAgfTsK
KyAgICB1bnNpZ25lZCBtX2V4cGVjdGVkRnJhbWVSYXRlIHsgMzAgfTsKK307CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIwOGZlNDMyOTVlZjUyYTY3OTBmZjFkZWNhY2E2ZjMwZDliYmJhZmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElP
TikKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVNZWRpYS5o
PgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxWaWRlb1Rvb2xi
b3gvVlRDb21wcmVzc2lvblNlc3Npb24uaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgor
CisjaW1wb3J0IDxwYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yPiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0
ZShDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJD
YWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgYXV0byBjb21w
cmVzc29yID0gc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4obmV3
IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihvdXRwdXRDb2RlY1R5cGUpKTsKKyAgICBpZiAo
IWNvbXByZXNzb3ItPmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0KSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbXByZXNzb3I7Cit9CisKK1ZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKENNVmlkZW9D
b2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlKQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsg
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSB9CisgICAgLCBtX291dHB1dENvZGVjVHlwZSB7
IG91dHB1dENvZGVjVHlwZSB9Cit7Cit9CisKK1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
flZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCit7CisgICAgaWYgKG1fc2VyaWFsRGlzcGF0
Y2hRdWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVldWUp
OworfQorCitib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShDTUJ1
ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkK
K3sKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRv
IGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1
ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZvdXRwdXRC
dWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgcXVldWUg
JWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9vdXRwdXRC
dWZmZXJRdWV1ZSA9IG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIENNQnVmZmVyUXVldWVJbnN0YWxs
VHJpZ2dlcihtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBjYWxsYmFjaywgY2FsbGJhY2tPYmpl
Y3QsIGtDTUJ1ZmZlclF1ZXVlVHJpZ2dlcl9XaGVuRGF0YUJlY29tZXNSZWFkeSwga0NNVGltZVpl
cm8sIE5VTEwpOworCisgICAgbV9pc0VuY29kaW5nID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCit7CisgICAg
ZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGF1dG8gZXJy
b3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzKG1fdnRTZXNzaW9uLmdldCgp
LCBrQ01UaW1lSW52YWxpZCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBN
ZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vz
c2lvbkNvbXBsZXRlRnJhbWVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgICAgIGVy
cm9yID0gQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQo
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgICAgICBtX2lzRW5jb2RpbmcgPSBmYWxzZTsKKyAg
ICB9KTsKK30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnZpZGVvQ29tcHJl
c3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cyBzdGF0dXMsIFZURW5j
b2RlSW5mb0ZsYWdzLCBDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUYoc3RhdHVzLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sgc3RhdHVzIGlzICVkIiwgc3RhdHVzKTsKKyAg
ICBpZiAoc3RhdHVzICE9IG5vRXJyKQorICAgICAgICByZXR1cm47CisKKyAgICBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgKmNvbXByZXNzb3IgPSBzdGF0aWNfY2FzdDxWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IqPihyZWZDb24pOworCisgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVl
dWVFbnF1ZXVlKGNvbXByZXNzb3ItPm1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7
CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVFbnF1ZXVlIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworfQorCitib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXBy
ZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRp
b24pCit7CisgICAgQ01WaWRlb0RpbWVuc2lvbnMgZGltZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworI2lmIFBMQVRGT1JN
KElPUykKKyAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJTcGVjaWZpY2F0aW9ucyA9IG5pbDsKKyNl
bHNlCisgICAgTlNEaWN0aW9uYXJ5ICplbmNvZGVyU3BlY2lmaWNhdGlvbnMgPSBAeyhfX2JyaWRn
ZSBOU1N0cmluZyAqKWtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVB
Y2NlbGVyYXRlZFZpZGVvRW5jb2RlcjpAWUVTfTsKKyNlbmRpZgorCisgICAgVlRDb21wcmVzc2lv
blNlc3Npb25SZWYgdnRTZXNzaW9uOworICAgIGF1dG8gZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vz
c2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNp
b25zLmhlaWdodCwgbV9vdXRwdXRDb2RlY1R5cGUsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
ZW5jb2RlclNwZWNpZmljYXRpb25zLCBOVUxMLCBOVUxMLCB2aWRlb0NvbXByZXNzaW9uQ2FsbGJh
Y2ssIHRoaXMsICZ2dFNlc3Npb24pOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENv
bXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAg
cmV0dXJuIE5POworICAgIH0KKyAgICBtX3Z0U2Vzc2lvbiA9IGFkb3B0Q0YodnRTZXNzaW9uKTsK
KworICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtW
VENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUsIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9SZWFsVGltZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICBlcnJvciA9IFZUU2Vzc2lv
blNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5
X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1fbWF4
S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJy
b3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNl
dFByb3BlcnR5IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1
cmF0aW9uIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgIGVycm9yID0gVlRTZXNzaW9uU2V0
UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhw
ZWN0ZWRGcmFtZVJhdGUsIChfX2JyaWRnZSBDRlR5cGVSZWYpQChtX2V4cGVjdGVkRnJhbWVSYXRl
KSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENvbXByZXNzaW9u
UHJvcGVydHlLZXlfRXhwZWN0ZWRGcmFtZVJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisK
KyAgICAvLyBGSVhNRTogU2V0IHZpZGVvIGNvbXByZXNzaW9uIHJhdGUuCisgICAgZXJyb3IgPSBW
VENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyhtX3Z0U2Vzc2lvbi5nZXQo
KSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2Rl
RnJhbWVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgcmV0dXJuIFlFUzsKK30KKwor
dm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIoQ01T
YW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGlmICghbV92dFNlc3Npb24pIHsKKyAgICAg
ICAgaWYgKCFpbml0Q29tcHJlc3Npb25TZXNzaW9uKENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVz
Y3JpcHRpb24oYnVmZmVyKSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIoYnVmZmVyKTsKKyAg
ICBhdXRvIHByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0
aW9uVGltZVN0YW1wKGJ1ZmZlcik7CisgICAgYXV0byBkdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVy
R2V0RHVyYXRpb24oYnVmZmVyKTsKKyAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Np
b25FbmNvZGVGcmFtZShtX3Z0U2Vzc2lvbi5nZXQoKSwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlv
blRpbWVTdGFtcCwgZHVyYXRpb24sIE5VTEwsIHRoaXMsIE5VTEwpOworICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVy
KENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFs
RGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKCFtX2lzRW5jb2RpbmcpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihidWZmZXIpOworICAgIH0p
OworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6Omdl
dE91dHB1dFNhbXBsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZlclJlZiko
Y29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZUdldEhlYWQobV9vdXRwdXRCdWZmZXJRdWV1
ZS5nZXQoKSkpKTsKK30KKworUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVy
biBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJR
dWV1ZURlcXVldWVBbmRSZXRhaW4obV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Cit9CisK
K30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGE2Y2VlNTRjOTdjOTIxNWE2ODczZjRkY2IxMmJk
ZTQ3YzFkYzQwZWMuLmYzMTBmNDhlZDdlZGU1OGZlMmU1Yjc4NDY0ZjYyYzkwZTJkMDExNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTE0OSw2ICsxNDksNyBAQCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1c2VyTWVkaWFDYXB0dXJlTWFuYWdlcgog
ICAgIHJldHVybiAqbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OwogfQogCisjaWYgSEFW
RShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciYgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFSZWNvcmRlck1hbmFnZXIoKQogewogICAgIGlm
ICghbV9yZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcikKQEAgLTE1Niw2ICsxNTcsNyBAQCBSZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFS
ZWNvcmRlck1hbmFnZXIoKQogCiAgICAgcmV0dXJuICptX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyOwogfQorI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmF1ZGlvVHJhY2tSZW5kZXJlck1hbmFnZXIoKQpAQCAtMTc0LDcgKzE3Niw3IEBAIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnNhbXBsZUJ1ZmZlckRpCiAgICAgcmV0dXJuICptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXI7CiB9CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vICBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VC
UlRDKQogTGliV2ViUlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omxp
YldlYlJUQ0NvZGVjc1Byb3h5KCkKQEAgLTIwMyw2ICsyMDUsNyBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSQogICAgICAgICB1c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCkuZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tR1BVUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKyNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgbWVkaWFSZWNvcmRl
ck1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwogICAgICAgICByZXR1cm47CkBAIC0yMTEsNiArMjE0LDcgQEAgdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIEkKICAgICAgICAgbWVkaWFSZWNvcmRlck1hbmFnZXIoKS5kaWRSZWNlaXZlUmVt
b3RlTWVkaWFSZWNvcmRlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisjZW5kaWYgLy8gSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGF1
ZGlvVHJhY2tSZW5kZXJlck1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNz
KGNvbm5lY3Rpb24sIGRlY29kZXIpOwpAQCAtMjI4LDggKzIzMiw4IEBAIHZvaWQgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJCiAgICAgICAgIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKS5kaWRS
ZWNlaXZlTGF5ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKFZJREVPX1RSQUNLKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGxpYldlYlJUQ0NvZGVjc1Byb3h5KCkuZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IDJiOWJkMWY4ODdiYWRhZmE0ZWE1YzRiYTM0MTY5ZDhiOTc4ZmQ2MmQuLjc4NjYzYmNkYmEwNzMy
ZWZmNWIxMWI5NGM1ZGNhMjM4ODJlZTliODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNzksNyArNzksOSBAQCBw
cml2YXRlOgogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgdXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eSgpOworI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIFJlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyJiBtZWRpYVJlY29yZGVyTWFuYWdlcigpOworI2VuZGlmCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlciYgYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcigpOwogICAgIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIoKTsKQEAgLTEwMiw3ICsxMDQsOSBAQCBwcml2YXRlOgogICAgIFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PiBtX3Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdB
VEUpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyPiBtX3Jl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOworI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1hbmFnZXI+IG1fYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggY2IyNGRkYmYyNzlmYjI2NTk0
NmFhMTIxY2IwNzIyYjYyYjhjNmFmNy4uNTY4YzI4MDE3MThmZTkwYjhiZTA4MmZlYTM1ZWU3NTBk
NjNkZGI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZWNvcmRlci5oIgogCi0jaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNp
ZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUgIlNoYXJl
ZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4K
QEAgLTEzNiw0ICsxMzYsNCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnN0b3BSZWNvcmRp
bmcoKQogCiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRF
UkRFTEVHQVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCBmZjVhODI5ODRmYjM5NjQxZWQxZTU2MTU0ODk4Zjk1
MjZjOWJkNTJhLi5hODNkYTMwNTUyZWI0MWVmOTU5NDRkYjNhYTUwNGZmY2EzZjY4MzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJNZWRp
YVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgpAQCAt
ODIsNCArODIsNCBAQCBwcml2YXRlOgogCiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmlu
CmluZGV4IDU0YmE2NGQ1NmZiZWEzMGZjYmIzOTZkYWQ1ZWEzZmMzMGM5OTVkZWUuLmNlMzJiNzA0
ZTdlYzhjNDc3YmUwNTFlMjBkN2QyN2FmMGM0ZjgyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVz
c2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZB
U1NFVFdSSVRFUkRFTEVHQVRFKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlY29yZGVyIE5v
dFJlZkNvdW50ZWQgewogICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyTWFuYWdlci5jcHAKaW5kZXggMzcwY2Q5YjM4NzU2OWE5OGU4NGUxNzgwOWYwODVkNjJi
M2I2ZTlkNi4uMDE5ZTRiODVmMGVlYmI2MjRlNTY5NTg4YTdhYWU0ODQyMTI1ODZkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oIgogCi0jaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmgKaW5kZXggNTQ3MWJiZDQ4NGRkOWIzZDBjOGVlM2RkNjExYzA1ZTkwZDAzNmM3Yy4uYWI4
MDFiYzExNGM0OTIzZWE5ZDc5MGY5MjNjNTJkZjQ5YWExMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJNZWRp
YVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMzg3YTQxMzYxY2Ri
ZDliN2VhZTJjMzM3MzY1MmE5OGY0OTM0ZTE3NC4uYzUxODQxMGNiNDlmYWRhNjg4ZDM3N2QxZDdh
MDZjZGUzYmFjNzk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKICMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRX
UklURVJERUxFR0FURSkKIAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIg
Tm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlUmVjb3JkZXIoV2ViS2l0OjpNZWRpYVJlY29yZGVy
SWRlbnRpZmllciBpZCwgYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSAtPiAo
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gY3JlYXRpb25FcnJvcikgQXN5bmMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgKaW5kZXggOWY5YjMwYzc2
MTYyM2RkOTQ4ZDI5YmUwZjM3ZjBhZDBmNDdlNWE5YS4uZTM4YzVkNmMwNWQwZGZhZjQyNjgxOTk1
YjllMDRmNGU3NjQ3ZjBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXNS
ZXBsaWVzLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4IGRkNDA5MTk4
OGMxMjY4OTc1YmI5NzkyZTgzMzdjNmUwNjUzN2YzYzguLjY3ZTNlZTY1MTNkOGZhNDNlODFlOGIy
MmM2NThkZjg5NjQwNzY4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0
ZS5oIgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FU
RSkKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXJNZXNzYWdlcy5oIgpAQCAtMTQ2LDQgKzE0Niw0IEBAIHZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGU6OnN0b3BSZWNvcmRpbmcoKQogCiB9CiAKLSNlbmRpZiAvLyBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVj
b3JkZXJQcml2YXRlLmgKaW5kZXggNmQ5ZmFiZTNlYTcyNDczZjQ1OTkwY2U4YWQxNzJkMGNkMDNh
ODEyNi4uZDgwZmNkN2YxOTg4OTc1MjVjOWVmZmM5MTc1N2QyMmZjMzIzZWZmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUg
Ik1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2UuaCIKQEAgLTczLDUgKzczLDUgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8gUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcm92aWRlci5jcHAKaW5kZXggYmNlNzc0YTg4MWRjZWM3OTQyNjM3OTY4NTUyZTNj
Y2M3YmIzNzQwYi4uZDk1OWM5MjVmZGQzYTIyMWEzN2IxYTM3MDdjNmRmMWFkMDJhMGU4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGU+IE1l
ZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoY29uc3QgTWVk
aWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCiB7Ci0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAg
aWYgKG1fdXNlR1BVUHJvY2VzcykKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFSZWNv
cmRlclByaXZhdGU+KHN0cmVhbSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjYmVjMjg1NDlmNTM1MDVjNDU5
YzQ1YWJiNGU4NGJjYTA0MjZhZDhiLi41M2IxM2ViY2VjMDk1YzU1NDI5ZjM4N2U1ZTIzNzk4YmZk
OTExYmY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDItMDQgIHlvdWVubiBmYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJE
ZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgIERpc2FibGUgdGVzdHMgb24gYWxsIHBsYXRmb3JtcyBl
eGNlcHQgdGhlIG9uZXMgc3VwcG9ydGluZyBBVkFzc2V0V3JpdGVyRGVsZWdhdGUuCisKKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRt
bDoKKyAgICAgICAgUmVtb3ZlIHdlYiBhdWRpbyBnZW5lcmF0aW9uIHNpbmNlIHRoZXJlIHNlZW1z
IHRvIGJlIHNvbWUgdW5zdGFiaWxpdHkgaW4gd2ViIGF1ZGlvIC0+IHN0cmVhbSAtPiBtZWRpYSBy
ZWNvcmRlci4KKyAgICAgICAgd2hpY2ggc2hvdWxkIGJlIGZpeGVkIGFzIGZvbGxvdy11cCBzcGVj
aWZpYyBwYXRjaGVzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTAyLTA0ICB5
b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYURldmljZXMg
c2hvdWxkIGhhbmRsZSBjaGFuZ2VzIG9mIGlmcmFtZSBhbGxvdyBhdHRyaWJ1dGUgdmFsdWUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDM2ZWYwNTRiYWY1NDkzNGNmNjA3ZGRlYjAwYmNkNmE5OGVmNDE2
ZDcuLjViN2JmYWJhNjgxYjYxMGQ5Y2FjOTBlZTQ5ZWE2YWM3ZDQ2M2I1ZmYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMzMyNiw3ICszMzI2LDEwIEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL2NvcHktdGV4LWltYWdlLTJkLWZvcm1hdHMuaHRtbCBbIFNraXAgXQogd2ViZ2wvMS4w
LjMvY29uZm9ybWFuY2UvY2FudmFzL3JhcGlkLXJlc2l6aW5nLmh0bWwgWyBTa2lwIF0KIHdlYmds
LzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZHJhdy1idWZmZXJzLmh0bWwgWyBT
a2lwIF0KIAotd2Via2l0Lm9yZy9iLzE5NzY3MyBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS5odG1sIFsgUGFzcyBGYWlsdXJl
IFRpbWVvdXQgXQorIyBOb3Qgc3VwcG9ydGVkIGJ5IGRlZmF1bHQKK2h0dHAvd3B0L21lZGlhcmVj
b3JkZXIgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0
dXJlLXJlY29yZCBbIFNraXAgXQorZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3Jk
ZXIuaHRtbCBbIFNraXAgXQogCiAjIFRvIGFpZCB0cmFuc2l0aW9uIHRvIEFOR0xFIGJhY2tlbmQg
Zm9yIFdlYkdMLCBza2lwIGFsbCBvZiBXZWJHTCAyIHRlc3RzIGZvciBub3cuIAogIyBSZS1lbmFi
bGUgYXMgZWFjaCBjaHVuayBvZiB0ZXN0cyBhcmUgdmVyaWZpZWQgd2l0aCBBTkdMRSBiYWNrZW5k
LgpAQCAtMzQ5Nyw0ICszNTAwLDQgQEAgd2Via2l0Lm9yZy9iLzIwNjc1MyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYmFja2dyb3VuZHMvZmlyc3QtbGUKIAogd2Via2l0
Lm9yZy9iLzIwNjU3OCBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWJhY2tncm91bmRzL2FuaW1hdGlvbnMvYm9yZGVyLWltYWdlLXdpZHRoLWludGVycG9s
YXRpb24uaHRtbCBbIENyYXNoIF0KIHdlYmtpdC5vcmcvYi8yMDY1NzkgWyBEZWJ1ZyBdIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1iYWNrZ3JvdW5kcy9iYWNrZ3JvdW5k
LXNpemUvdmVjdG9yL3plcm8taGVpZ2h0LXJhdGlvLWF1dG8tNXB4Lmh0bWwgWyBDcmFzaCBdCi13
ZWJraXQub3JnL2IvMjA2NTc5IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtYmFja2dyb3VuZHMvYmFja2dyb3VuZC1zaXplL3ZlY3Rvci96ZXJvLXdpZHRo
LXJhdGlvLWF1dG8tNXB4Lmh0bWwgWyBDcmFzaCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQord2Via2l0Lm9yZy9iLzIwNjU3OSBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWJhY2tncm91bmRzL2JhY2tncm91bmQtc2l6ZS92ZWN0b3IvemVyby13
aWR0aC1yYXRpby1hdXRvLTVweC5odG1sIFsgQ3Jhc2ggXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRh
dGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJv
Y2Vzcy5odG1sCmluZGV4IDMzMzA2ZGU3OTQ3YmJiOTI1NzM5NGMzYmExOTYyMDFiMDU4NDc4OGIu
Ljg4MDE0ODY1N2UyNWRkZTMzY2IxMDkzNDZkNmNiZWFhYjdmOWNlZmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12
aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWls
YWJsZS1ncHVwcm9jZXNzLmh0bWwKQEAgLTU2LDE3ICs1Niw3IEBACiAgICAgfQogCiAgICAgYXN5
bmNfdGVzdCh0ID0+IHsKLSAgICAgICAgY29uc3QgYWMgPSBuZXcgQXVkaW9Db250ZXh0KCk7Ci0g
ICAgICAgIGNvbnN0IG9zYyA9IGFjLmNyZWF0ZU9zY2lsbGF0b3IoKTsKLSAgICAgICAgY29uc3Qg
ZGVzdCA9IGFjLmNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKLSAgICAgICAgY29uc3Qg
YXVkaW8gPSBkZXN0LnN0cmVhbTsKLSAgICAgICAgb3NjLmNvbm5lY3QoZGVzdCk7Ci0KICAgICAg
ICAgY29uc3QgdmlkZW8gPSBjcmVhdGVWaWRlb1N0cmVhbSgpOwotICAgICAgICBhc3NlcnRfZXF1
YWxzKHZpZGVvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAwLCAidmlkZW8gbWVkaWFzdHJlYW0g
c3RhcnRzIHdpdGggbm8gYXVkaW8gdHJhY2siKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhdWRp
by5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwgMSwgImF1ZGlvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3
aXRoIG9uZSBhdWRpbyB0cmFjayIpOwotICAgICAgICB2aWRlby5hZGRUcmFjayhhdWRpby5nZXRB
dWRpb1RyYWNrcygpWzBdKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWRlby5nZXRBdWRpb1Ry
YWNrcygpLmxlbmd0aCwgMSwgInZpZGVvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRoIG9uZSBhdWRp
byB0cmFjayIpOwogICAgICAgICBjb25zdCByZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHZp
ZGVvKTsKICAgICAgICAgbGV0IG1vZGUgPSAwOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDRhMzZhZDM2M2EwODBjMzQ2ZTY0MTE3MWUzMjY5ZDBjOWIz
ZWIzYzIuLmYyNGVmYjkyNDBiYTQ5NDQ4ODdmMTBmODViM2Q5MjkxNTY3MTdhMGEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODI4LDYgKzE4MjgsMTAg
QEAgd2Via2l0Lm9yZy9iLzE5NTYzNSBzY3JvbGxpbmdjb29yZGluYXRvci9tYWMvbXVsdGlwbGUt
Zml4ZWQuaHRtbCBbIFBhc3MgVGltZW91dAogWyBDYXRhbGluYSsgXSBmYXN0L3RleHQvZGVzaWdu
LXN5c3RlbS11aS0xNS5odG1sIFsgUGFzcyBdCiBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9kZXNp
Z24tc3lzdGVtLXVpLTE2Lmh0bWwgWyBQYXNzIF0KIAorWyBDYXRhbGluYSsgXSBodHRwL3dwdC9t
ZWRpYXJlY29yZGVyIFsgUGFzcyBdIAorWyBDYXRhbGluYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1yZWNvcmQgWyBQYXNzIF0KK1sgQ2F0YWxpbmErIF0g
ZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIFBhc3MgXQorCiB3
ZWJraXQub3JnL2IvMjAwMTI4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtdmlkZW8tZWxlbWVudC92aWRlb190aW1ldXBk
YXRlX29uX3NlZWsuaHRtbCBbIFRpbWVvdXQgUGFzcyBdCiAKICMgcmRhcjovLzU1NDA1ODUxIChb
IG1hY09TIF0gTGF5b3V0IHRlc3RzIHdlYmdwdS8qLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYXJlIGZs
YWt5IGZhaWx1cmVzLiAoMjAxODI3KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389642</attachid>
            <date>2020-02-04 01:54:26 -0800</date>
            <delta_ts>2020-02-04 05:17:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206582-20200204105424.patch</filename>
            <type>text/plain</type>
            <size>150504</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5MzIzNTdhNDkxNWZlYzc3YjRmM2Fk
M2FjMTFmOTNiMmNjMTRhNzcuLmRjNjZmODhmMWQ1NmY1NzRiY2ZmMGMxMDYzYzNhMDI2NGU0ZmZj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDItMDQgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTAyLTAzICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVk
dWNlIHNpemUgb2YgSGFzaE1hcCBhbmQgSGFzaFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRhMGUxNDBiOTQ4
YWFkM2E2YTI1NTFlYTcyNWYyMGQ2YWUxMTFlMjMuLjI3ODlhMzRmZTE4YzdhNmFiODZlMzM0YTYz
OTdhMjJhMDM0NTBiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OSBAQAorMjAyMC0wMi0wNCAg
eW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2Ug
QVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4OTg1MzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBhbGxvd3MgdG8gZ3JhYiBy
ZWNvcmRlZCBkYXRhIHdoZW5ldmVyIHdhbnRlZC4KKyAgICAgICAgVGhpcyBkZWxlZ2F0ZSByZXF1
aXJlcyBwYXNzaW5nIGNvbXByZXNzZWQgc2FtcGxlcyB0byBBVkFzc2V0V3JpdGVyLgorICAgICAg
ICBJbXBsZW1lbnQgdmlkZW8gZW5jb2RpbmcgYW5kIGF1ZGlvIGVuY29kaW5nIGluIGRlZGljYXRl
ZCBjbGFzc2VzIGFuZCB1c2UgdGhlc2UgY2xhc3NlcyBiZWZvcmUgYWRkaW5nIGJ1ZmZlcnMgdG8g
QVZBc3NldFdyaXRlci4KKyAgICAgICAgSW5zdGFudGlhdGUgcmVhbCB3cml0ZXIgb25seSBmb3Ig
cGxhdGZvcm1zIHN1cHBvcnRpbmcgQVZBc3NldFdyaXRlckRlbGVnYXRlLCBzaW5jZSBpdCBpcyBu
b3Qgc3VwcG9ydGVkIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJv
dmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVh
dGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OjpzZXRTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Zmlu
aXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5p
dEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZvckF1
ZGlvRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjpncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldp
dGhOdW1QYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0
cHV0UGFja2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OnByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
aW5pdFdpdGhXcml0ZXI6XSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBk
ZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBhc3NldFdyaXRl
cjpkaWRQcm9kdWNlRnJhZ21lbnRlZEhlYWRlckRhdGE6XSk6CisgICAgICAgICgtW1dlYkFWQXNz
ZXRXcml0ZXJEZWxlZ2F0ZSBhc3NldFdyaXRlcjpkaWRQcm9kdWNlRnJhZ21lbnRlZE1lZGlhRGF0
YTpmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0Ol0pOgorICAgICAgICAoLVtXZWJBVkFzc2V0V3Jp
dGVyRGVsZWdhdGUgY2xvc2VdKToKKyAgICAgICAgKC1bV2ViQVZBc3NldFdyaXRlckRlbGVnYXRl
IGZpbmlzaF0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
Y29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nl
c3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkQXVkaW9T
YW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25N
YXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFw
cGVuZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZFZp
ZGVvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF1ZGlvRm9ybWF0RGVz
Y3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZEF1ZGlv
U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5oLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6flZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0Q29tcHJlc3Npb25TZXNzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFk
ZFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIpOgorCiAyMDIwLTAy
LTA0ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYURl
dmljZXMgc2hvdWxkIGhhbmRsZSBjaGFuZ2VzIG9mIGlmcmFtZSBhbGxvdyBhdHRyaWJ1dGUgdmFs
dWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDdiYTUyMzE0ZjQzZjI0NDY2ZGMwNjEzMTBkNjU4YjAx
NDYwZTExMDQuLjZkOGE1NmVlNmZlMTlhNzg2OTRkZjVhYmU1ZDE1NGYyNTlkODg0MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAyLTA0ICB5b3Vlbm4gZmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVy
RGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBZGQgc29mdCBsaW5rIG1hY3JvcyBmb3IgVmlkZW9U
b29sYm94IGFuZCBBdWRpb1Rvb2xib3guCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaDogQWRkZWQuCisg
ICAgICAgICogcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcDoKKyAgICAgICAgKiBwYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvY2YvVmlkZW9Ub29sYm94U29mdExp
bmsuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaDog
QWRkZWQuCisKIDIwMjAtMDItMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBQYXNzIGEgaGludCBmcm9tIHRoZSBleHRlbnNpb24gdG8gZGVjaWRlUG9saWN5
Rm9yU09BdXRob3JpemF0aW9uTG9hZFdpdGhDdXJyZW50UG9saWN5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3YmZl
OWE2MjZmZjMzZjJkYjIyYzgzYjkxYTZlMTE1ZTE1ZjM3M2UuLjEwNGUzNmIzNTNkYjg2ZTQxYzdi
ZDZhZmIzZmU4YzU5NDAxMmQ4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDIt
MDQgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
VXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81ODk4NTM2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgUmVtb3RlTWVkaWFSZWNvcmRlciBvbmx5IGZv
ciBzeXN0ZW1zIHN1cHBvcnRpbmcgQVZBc3NldFdyaXRlckRlbGVnYXRlLgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oOgorICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNv
cmRlclByaXZhdGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVJlY29yZGVyUHJvdmlk
ZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKToKKwogMjAyMC0wMi0wMyAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBXZWJLaXRBZGRp
dGlvbnMgaG9vayB0byBwcm92aWRlIGFkZGl0aW9uYWwgY3VzdG9taXphdGlvbnMgdG8gVUlEcmFn
SW50ZXJhY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMTc1YjZmNWVhOGVkYzdhZDFmZDJj
MWYyZTdmODhmMGVlN2IyNmY2OC4uNTNmYWU1OTIwNWY1OWRjYjI0ZmJkNTgwMmEzYzliMWZhYTU0
MjQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTU2Niw2ICs1NjYsMTAgQEAKICNkZWZpbmUg
SEFWRV9PU19TSUdOUE9TVCAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgKGRlZmluZWQgX19oYXNfaW5jbHVkZSAmJiBfX2hhc19pbmNsdWRlKDxBVkZvdW5k
YXRpb24vQVZBc3NldFdyaXRlcl9Qcml2YXRlLmg+KSkpCisjZGVmaW5lIEhBVkVfQVZBU1NFVFdS
SVRFUkRFTEVHQVRFIDEKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBM
QVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX1NZU1RF
TV9GT05UX1NUWUxFX1RJVExFXzAgMQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxFX1RJ
VExFXzQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCBmY2IwOTdlZTc1OWZmNWRm
Yjc2NDk4ZDUwOTBlNGNjY2MwYzlkNWE2Li5mNTRkZjcxYTRmNDNiM2U2ZjlkNDhiYzFjZDc0NDM3
Njg3MWU5YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzQsNyArMzQsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclBy
aXZhdGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUo
Y29uc3QgTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCiB7CisjaWYgSEFWRShBVkFTU0VUV1JJ
VEVSREVMRUdBVEUpCiAgICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3Jl
YXRlKHN0cmVhbSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOworICAgIHJldHVy
biBudWxscHRyOworI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNDE5YWM5OGI0ZDE5MmM5ZjM2MWRiMTk3
NzNmMmI2ZmI4ZTBjOWNhLi4zZjgxNDZhZDE1NWFmY2MwODU4ZDY4YjNkMjc0ZTM5MmUwZmY0N2U4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMTUsNiArMTE1LDEwIEBACiAJCTJFMTM0MkNDMjE1QUExMEEwMDcxOTlEMiAvKiBV
SUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTEzNDJDQTIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5oICovOyB9Owog
CQkyRTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNCMjE1QUExMEEwMDcx
OTlEMiAvKiBVSUtpdFNvZnRMaW5rLm1tICovOyB9OwogCQkzMTMwOEIxNDIwQTIxNzA1MDAzRkI5
MjkgLyogU3lzdGVtUHJldmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzEzMDhCMTMyMEEyMTcwNTAwM0ZCOTI5IC8qIFN5c3RlbVByZXZpZXdT
UEkuaCAqLzsgfTsKKwkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNv
ZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi87
IH07CisJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTIy
M0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi87IH07CisJCTQxNkU5
OTU3MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1NTIzREFFRkY3MDBF
ODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovOyB9OworCQk0MTZFOTk1ODIzREFF
RkY4MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBW
aWRlb1Rvb2xib3hTb2Z0TGluay5oICovOyB9OwogCQk0NDI5NTZDRDIxOEE3MkRGMDA4MERCNTQg
LyogUmV2ZWFsU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2ZWFsU1BJLmggKi87IH07CiAJCTQ0
NTBGQzlGMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlEMjFGNUY2MDIwMDRE
RkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLzsgfTsKIAkJNDQ1MEZDQTAyMUY1RjYwMjAw
NERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29r
U29mdExpbmsuaCAqLzsgfTsKQEAgLTI5MSw2ICsyOTUsMTAgQEAKIAkJMkUxMzQyQ0IyMTVBQTEw
QTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBVSUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMTMwOEIxMzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTeXN0ZW1QcmV2aWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM3MTE5QTc4MjBDQ0I1RkYwMDJDNkRDOSAvKiBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViS2l0VGFyZ2V0Q29uZGl0aW9uYWxzLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0Ig
LyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNC
IC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5r
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5r
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Mjk1NkNDMjE4QTcyREUwMDgwREI1
NCAvKiBSZXZlYWxTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV2ZWFs
U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlEMjFGNUY2MDIwMDRE
RkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFF1aWNrTG9va1NvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tMb29rU29mdExpbmsuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNCw4ICs1MzIsMTIgQEAKIAkJMENGOTlDQTUx
RjczODQxQzAwN0VFNzkzIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29m
dExpbmsuY3BwICovLAorCQkJCTQxNkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xi
b3hTb2Z0TGluay5oICovLAogCQkJCTBDRjk5Q0E2MUY3Mzg0MzYwMDdFRTc5MyAvKiBDb3JlTWVk
aWFTb2Z0TGluay5jcHAgKi8sCiAJCQkJMENGOTlDQTcxRjczODQzNzAwN0VFNzkzIC8qIENvcmVN
ZWRpYVNvZnRMaW5rLmggKi8sCisJCQkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVv
VG9vbGJveFNvZnRMaW5rLmNwcCAqLywKKwkJCQk0MTZFOTk1NjIzREFFRkY3MDBFODcxQ0IgLyog
VmlkZW9Ub29sYm94U29mdExpbmsuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzE1LDYgKzcyNyw3IEBACiAJCQlmaWxlcyA9ICgKIAkJ
CQk1N0ZEMzE4QjIyQjM1OTg5MDA4RDBFOEIgLyogQXBwU1NPU29mdExpbmsuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3NkNBOUQ2MjJCODU0QUIwMDMwMTQzQyAvKiBBcHBTU09TUEkuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0
TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwMkU5M0MyMDU2RkFBNzAwQTEzNzk3IC8qIEF1
ZGlvVG9vbGJveFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTEwNzgyMkI0NTZGNTAwRjQx
MEM4IC8qIEF1dGhLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3N0U4N0IyMjI2QTQ2MDMw
MEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCkBAIC04Mzgs
NiArODUxLDcgQEAKIAkJCQkyRTEzNDJDQzIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MjIxRjQzQTRDNzAwMkVBQzAyIC8qIFVJS2l0
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE0NzFGM0JFQjQ5MDBEQkMzMTcgLyogVVJM
Rm9ybWF0dGluZ1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTk5NTgyM0RBRUZGODAwRTg3
MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1
OTFGM0JFQjQ5MDBEQkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTA4MjZGOTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKQEAgLTkzMCw2ICs5NDQsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThBMjJCMzU5M0UwMDhEMEU4QiAvKiBB
cHBTU09Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNkU5OTUzMjNEQUU2QkUwMEU4
NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzdF
ODdCMTIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsubW0gaW4gU291cmNl
cyAqLywKIAkJCQkwQzVGRkYwRjFGNzhEOURBMDA5RUZGMUEgLyogQ2xvY2tDTS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTBDRjk5Q0E4MUY3Mzg0MzcwMDdFRTc5MyAvKiBDb3JlTWVkaWFTb2Z0TGlu
ay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk1Niw2ICs5NzEsNyBAQAogCQkJCUEzQUI2RTU3MUYz
RDFEREIwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkUxMzQyQ0QyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29m
dExpbmsubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTZFOTk1NzIzREFFRkY4MDBFODcxQ0IgLyog
VmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwODI2RkExRjU3
NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjZjU1
MDU2YWNkYTZmNTY1M2FkYzdlMTdlYzAyYTJkODI2ZTQ0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcApAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShB
VkZPVU5EQVRJT04pCisKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4K
KyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQuaD4KKworI2luY2x1ZGUgPHd0Zi9T
b2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBBdWRp
b1Rvb2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29s
Ym94LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVy
dHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGlu
U3BlY2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlE
YXRhKSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9w
ZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNv
bnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252
ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0
aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSwgT1NTdGF0
dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclBy
b3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5Qcm9wZXJ0eURhdGFTaXplLCBjb25zdCB2
b2lkKiBpblByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlu
UHJvcGVydHlEYXRhU2l6ZSwgaW5Qcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHksIE9T
U3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0
ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZv
aWQqIG91dFByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlv
UHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKworI2VuZGlmIC8vIFVTRShBVkZP
VU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9v
bGJveFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNv
ZnRMaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDczMTE4NzE3NGFjMTU1NDQzNzFkZWUwM2IxNDMyZTNlNjU2
MzJlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9U
b29sYm94U29mdExpbmsuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gp
CisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRp
b0NvbnZlcnRlckdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVk
aW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQz
MiogaW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0Nv
bnZlcnRlciwgaW5Qcm9wZXJ0eUlELCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0
YSkpCisjZGVmaW5lIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29s
Ym94X0F1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NTdGF0dXMsIChjb25z
dCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0LCBjb25zdCBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQsIEF1ZGlvQ29udmVy
dGVyUmVmKiBvdXRBdWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwgaW5EZXN0aW5hdGlv
bkZvcm1hdCwgb3V0QXVkaW9Db252ZXJ0ZXIpKQorI2RlZmluZSBBdWRpb0NvbnZlcnRlck5ldyBz
b2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJOZXcKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5
LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlvQ29u
dmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblByb3BlcnR5RGF0YVNpemUs
IGNvbnN0IHZvaWQqIGluUHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVy
dHlJRCwgaW5Qcm9wZXJ0eURhdGFTaXplLCBpblByb3BlcnR5RGF0YSkpCisjZGVmaW5lIEF1ZGlv
Q29udmVydGVyU2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29udmVydGVy
U2V0UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29s
Ym94LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVy
dHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGlu
U3BlY2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlE
YXRhKSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9w
ZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorI2RlZmluZSBBdWRpb0Zvcm1hdEdldFBy
b3BlcnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0Zvcm1hdEdldFByb3BlcnR5CisKKwor
I2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCmluZGV4IDJiODIzMTM2NWNiOWFhZjkzNTk3ZjE4N2Zh
MjJjMTQ5YmU0MmZiM2EuLmRjOGFiNDFjYmM3OGJhMTljZWNkZGE3ZmNmYTcwZDkzNTA5M2MyM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3Bw
CkBAIC00Niw2ICs0Niw3IEBAIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSkKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEs
IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYg
dGhlU291cmNlQnVmZmVyLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwg
dm9pZCogZGVzdGluYXRpb24pLCAodGhlU291cmNlQnVmZmVyLCBvZmZzZXRUb0RhdGEsIGRhdGFM
ZW5ndGgsIGRlc3RpbmF0aW9uKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aCwgc2l6ZV90LCAoQ01CbG9ja0J1
ZmZlclJlZiB0aGVCdWZmZXIpLCAodGhlQnVmZmVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcywgT1NT
dGF0dXMsIChjb25zdCB2b2lkKiBzb3VyY2VCeXRlcywgQ01CbG9ja0J1ZmZlclJlZiBkZXN0aW5h
dGlvbkJ1ZmZlciwgc2l6ZV90IG9mZnNldEludG9EZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5n
dGgpLCAoc291cmNlQnl0ZXMsIGRlc3RpbmF0aW9uQnVmZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRp
b24sIGRhdGFMZW5ndGgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRpY3Rpb25hcnlSZWYs
IChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRUeXBlSUQsIENG
VHlwZUlELCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBD
b3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciwgQ01CbG9ja0J1ZmZlclJlZiwg
KENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCkBAIC0xMzYsNiArMTM3LDcgQEAgU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVH
ZXRCdWZmZXJDb3VudCwgQ01JdGUKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25UaW1lU3RhbXAsIENN
VGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRFbmRQcmVzZW50
YXRpb25UaW1lU3RhbXAsIENNVGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUp
KQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVy
UXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVm
ZmVyUXVldWVSZWYgcXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNh
bGxiYWNrLCB2b2lkKiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlv
biB0cmlnZ2VyQ29uZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZl
clF1ZXVlVHJpZ2dlclRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxs
YmFjaywgdHJpZ2dlclJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwg
dHJpZ2dlclRva2VuT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1
ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKIAogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Uo
UEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5LCBDRlN0
cmluZ1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBr
Q01TYW1wbGVBdHRhY2htZW50S2V5X05vdFN5bmMsIENGU3RyaW5nUmVmKQpAQCAtMTYzLDYgKzE2
NSw5IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1
ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tlCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlv
QnVmZmVyTGlzdCwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDRkFsbG9jYXRv
clJlZiBiYnVmU3RydWN0QWxsb2NhdG9yLCBDRkFsbG9jYXRvclJlZiBiYnVmTWVtb3J5QWxsb2Nh
dG9yLCB1aW50MzJfdCBmbGFncywgY29uc3QgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0KSwg
KHNidWYsIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIGJidWZNZW1vcnlBbGxvY2F0b3IsIGZsYWdzLCBi
dWZmZXJMaXN0KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlh
LCBDTVNhbXBsZUJ1ZmZlclNldERhdGFSZWFkeSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJl
ZiBzYnVmKSwgKHNidWYpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogYXNi
ZCwgc2l6ZV90IGxheW91dFNpemUsIGNvbnN0IEF1ZGlvQ2hhbm5lbExheW91dCogbGF5b3V0LCBz
aXplX3QgbWFnaWNDb29raWVTaXplLCBjb25zdCB2b2lkKiBtYWdpY0Nvb2tpZSwgQ0ZEaWN0aW9u
YXJ5UmVmIGV4dGVuc2lvbnMsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiogb3V0RGVzYyks
IChhbGxvY2F0b3IsIGFzYmQsIGxheW91dFNpemUsIGxheW91dCwgbWFnaWNDb29raWVTaXplLCBt
YWdpY0Nvb2tpZSwgZXh0ZW5zaW9ucywgb3V0RGVzYykpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWND
b29raWUsIGNvbnN0IHZvaWQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MsIHNp
emVfdCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0
RGVjb2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICosIChDTUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKKwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrLCBDTUNsb2Nr
UmVmLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNQ2xvY2tHZXRUaW1lLCBDTVRpbWUsIChDTUNsb2NrUmVmIGNsb2NrKSwgKGNsb2Nr
KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBs
ZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlLCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNi
dWYsIE9TU3RhdHVzICgqIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBjYWxsYmFjaykoIENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgQ01JdGVtQ291bnQgaW5kZXgsIHZvaWQgKnJl
ZmNvbiksIHZvaWQgKnJlZmNvbiksIChzYnVmLCBjYWxsYmFjaywgcmVmY29uKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRleCAyNjhkMTY3ZjI3
ZDZkM2FiYmZmNTkzNTI2N2ZjMjIyMzkxMDEwZTNkLi5hMGM3MzI5MjYyZTBiMDZjYmI2YzM2ZDgy
ODQyZjJmZDZmMWY4NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5oCkBAIC00OSw2ICs0OSw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcywgT1NTdGF0CiAj
ZGVmaW5lIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJs
b2NrQnVmZmVyQ29weURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXplX3QsIChDTUJsb2Nr
QnVmZmVyUmVmIHRoZUJ1ZmZlciksICh0aGVCdWZmZXIpKQogI2RlZmluZSBDTUJsb2NrQnVmZmVy
R2V0RGF0YUxlbmd0aCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckdldERhdGFMZW5n
dGgKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyUmVwbGFjZURhdGFCeXRlcywgT1NTdGF0dXMsIChjb25zdCB2b2lkKiBzb3VyY2VCeXRl
cywgQ01CbG9ja0J1ZmZlclJlZiBkZXN0aW5hdGlvbkJ1ZmZlciwgc2l6ZV90IG9mZnNldEludG9E
ZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5ndGgpLCAoc291cmNlQnl0ZXMsIGRlc3RpbmF0aW9u
QnVmZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRpb24sIGRhdGFMZW5ndGgpKQorI2RlZmluZSBDTUJs
b2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZl
clJlcGxhY2VEYXRhQnl0ZXMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9uYXJ5UmVm
LCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQogI2RlZmluZSBDTUZvcm1h
dERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucyBzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3JtYXREZXNj
cmlwdGlvbkdldEV4dGVuc2lvbnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwg
Q29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQsICh2b2lkKSwgKCkp
CkBAIC0yMjcsNiArMjI5LDggQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBD
b3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRFbmRQcmVzZW50YXRpb25UaW0KICNkZWZpbmUgQ01C
dWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3JlTWVkaWFf
Q01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcAogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dl
cldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUs
IENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNrLCB2b2lkKiB0cmln
Z2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmlnZ2VyQ29uZGl0aW9u
LCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2Vu
KiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywgdHJpZ2dlclJlZmNv
biwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dlclRva2VuT3V0KSkK
ICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQg
c29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2Vy
VGhyZXNob2xkCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBx
dWV1ZSksIChxdWV1ZSkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIHNvZnRM
aW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YQogCiBTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9E
b05vdERpc3BsYXksIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVBdHRhY2htZW50S2V5
X0RvTm90RGlzcGxheSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3RE
aXNwbGF5KCkKQEAgLTI1Niw2ICsyNjAsOSBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwga0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZAogI2Rl
ZmluZSBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkIGdldF9Db3JlTWVkaWFfa0NN
VGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRp
b25fQnVmZmVyQ29uc3VtZWQsIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVCdWZmZXJD
b25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCBnZXRfQ29yZU1lZGlhX2tDTVNhbXBs
ZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkKCkKKworU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkdldE1hZ2ljQ29va2llLCBjb25zdCB2b2lkKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlv
blJlZiBkZXNjLCBzaXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCkpCisjZGVmaW5lIENN
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llIHNvZnRMaW5rX0NvcmVNZWRpYV9D
TUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZQogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0
cmVhbUJhc2ljRGVzY3JpcHRpb24sIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiAq
LCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVmaW5lIENN
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24gc29mdExpbmtf
Q29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRp
b24KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2Nr
QnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIHN0
cnVjdHVyZUFsbG9jYXRvciwgdm9pZCogbWVtb3J5QmxvY2ssIHNpemVfdCBibG9ja0xlbmd0aCwg
Q0ZBbGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tCdWZmZXJDdXN0b21C
bG9ja1NvdXJjZSogY3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZmZXJSZWYq
IGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgbWVtb3J5QmxvY2ssIGJsb2Nr
TGVuZ3RoLCBibG9ja0FsbG9jYXRvciwgY3VzdG9tQmxvY2tTb3VyY2UsIG9mZnNldFRvRGF0YSwg
ZGF0YUxlbmd0aCwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSkKQEAgLTI2NCw2ICsyNzEsOCBAQCBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZm
ZXJHZXRBdWRpb0J1ZmZlckxpc3RXaQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVm
ZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBs
ZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRO
dW1TYW1wbGVzLCBDTUl0ZW1Db3VudCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1Zikp
CiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcyBzb2Z0TGlua19Db3JlTWVkaWFf
Q01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29k
YWJsZUZvcm1hdCwgY29uc3QgQXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01BdWRpb0Zvcm1hdERl
c2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCisjZGVmaW5lIENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9G
b3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQKIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVC
dWZmZXJGb3JSYW5nZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNU2Ft
cGxlQnVmZmVyUmVmIHNidWYsIENGUmFuZ2Ugc2FtcGxlUmFuZ2UsIENNU2FtcGxlQnVmZmVyUmVm
KiBzQnVmT3V0KSwgKGFsbG9jYXRvciwgc2J1Ziwgc2FtcGxlUmFuZ2UsIHNCdWZPdXQpKQogI2Rl
ZmluZSBDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZSBzb2Z0TGlua19Db3Jl
TWVkaWFfQ01TYW1wbGVCdWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2UKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFNhbXBs
ZVNpemVBcnJheSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDTUl0ZW1Db3Vu
dCBzaXplQXJyYXlFbnRyaWVzLCBzaXplX3QqIHNpemVBcnJheU91dCwgQ01JdGVtQ291bnQqIHNp
emVBcnJheUVudHJpZXNOZWVkZWRPdXQpLCAoc2J1Ziwgc2l6ZUFycmF5RW50cmllcywgc2l6ZUFy
cmF5T3V0LCBzaXplQXJyYXlFbnRyaWVzTmVlZGVkT3V0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZlNjkz
Y2E5ZTQxZmQ4NTk3YTgyYjdjNzk2NjAxYjhhNzBjYWE0OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwCkBAIC0wLDAg
KzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFW
Rk9VTkRBVElPTikKKworI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25TZXNzaW9u
Lmg+CisKKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09S
S19GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94KQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUsIE9T
U3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgQ01WaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUsIENGRGljdGlvbmFyeVJlZiBlbmNv
ZGVyU3BlY2lmaWNhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUltYWdlQnVmZmVyQXR0cmli
dXRlcywgQ0ZBbGxvY2F0b3JSZWYgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIFZUQ29tcHJlc3Np
b25PdXRwdXRDYWxsYmFjayBvdXRwdXRDYWxsYmFjaywgdm9pZCogb3V0cHV0Q2FsbGJhY2tSZWZD
b24sIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmKiBjb21wcmVzc2lvblNlc3Npb25PdXQpLCAoYWxs
b2NhdG9yLCB3aWR0aCwgaGVpZ2h0LCBjb2RlY1R5cGUsIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBz
b3VyY2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMsIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBvdXRw
dXRDYWxsYmFjaywgb3V0cHV0Q2FsbGJhY2tSZWZDb24sIGNvbXByZXNzaW9uU2Vzc2lvbk91dCkp
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21w
cmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vz
c2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFt
cCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9u
U2Vzc2lvbkVuY29kZUZyYW1lLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNl
c3Npb24sIENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGltZSBwcmVzZW50YXRpb25U
aW1lU3RhbXAsIENNVGltZSBkdXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIGZyYW1lUHJvcGVydGll
cywgdm9pZCogc291cmNlRnJhbWVSZWZjb24sIFZURW5jb2RlSW5mb0ZsYWdzKiBpbmZvRmxhZ3NP
dXQpLCAoc2Vzc2lvbiwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZHVyYXRp
b24sIGZyYW1lUHJvcGVydGllcywgc291cmNlRnJhbWVSZWZjb24sIGluZm9GbGFnc091dCkpCitT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVz
c2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lv
blNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKworI2VuZGlmIC8vIFVTRShBVkZPVU5E
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJv
eFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRM
aW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjUwODM4YTNhZmRlZDJlZDdkNmY4ZTM0OGZmZGY2ZGQxMTUxYmM0
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29s
Ym94U29mdExpbmsuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5o
PgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gpCisK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXBy
ZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVvQ29kZWNUeXBlIGNvZGVjVHlw
ZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBDRkRpY3Rpb25hcnlSZWYg
c291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRvclJlZiBjb21wcmVzc2VkRGF0
YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNrIG91dHB1dENhbGxiYWNrLCB2
b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lvblNlc3Npb25SZWYqIGNvbXBy
ZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBoZWlnaHQsIGNvZGVjVHlwZSwg
ZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgY29tcHJl
c3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRwdXRDYWxsYmFja1JlZkNvbiwg
Y29tcHJlc3Npb25TZXNzaW9uT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25DcmVh
dGUgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlCitTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lv
blNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJl
ZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCksIChz
ZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKKyNkZWZpbmUgVlRD
b21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRD
b21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUs
IE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1ZmZl
clJlZiBpbWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lIGR1
cmF0aW9uLCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lkKiBzb3VyY2VGcmFt
ZVJlZmNvbiwgVlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChzZXNzaW9uLCBpbWFn
ZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJhbWVQcm9wZXJ0aWVz
LCBzb3VyY2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lv
blNlc3Npb25FbmNvZGVGcmFtZSBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNl
c3Npb25FbmNvZGVGcmFtZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRl
b1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzLCBPU1N0
YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikpCisjZGVm
aW5lIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzIHNvZnRMaW5rX1Zp
ZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcworCisj
ZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZjA0NDEyNDE4ZTZkYmIwZjBiM2IxN2E2
ZDlhOGNhNmJhODExNmI0Li4zNmVmNTgxOGYzMmIyZjg2YTU5YzcwYzhhNzdmZGM1YTYyNTVkNTQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04MzMsMTcgKzgzMywxNyBAQAogCQkyREFDQjlFOTIzNzU1RDAwMDBCNEMxODUgLyog
R3JhcGhpY3NDb250ZXh0SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwMDEyM0YxRkFEODdENjAwNTMxRDc2IC8qIEdyYXBoaWNzQ29udGV4dElt
cGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
REFGMzQzRDFFQTdFMEYxMDAzODJDRDMgLyogQ29uc3RhbnRQcm9wZXJ0eU1hcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjM0M0IxRUE3RTBGMTAw
MzgyQ0QzIC8qIENvbnN0YW50UHJvcGVydHlNYXAuaCAqLzsgfTsKIAkJMkRENUE3MjcxRUJFRTQ3
RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ1QTcyNjFFQkVFNDdEMDA5QkE1OTcgLyogQ29t
cG9zaXRpb25VbmRlcmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQkyRERFMUNFMzFGNTc0QUU1MDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZWaWV3
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNF
MDFGNTc0QUQxMDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZWaWV3LmggKi87IH07Ci0JCTJEREUxQ0U0
MUY1NzRBRTkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDREUxRjU3NEFBQjAwRDFBMzY1IC8qIEpTVlJE
aXNwbGF5LmggKi87IH07Ci0JCTJEREUxQ0Y4MUY1NzRDMzkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxh
eUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRERTFDRTYxRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJEaXNwbGF5Q2FwYWJpbGl0aWVz
LmggKi87IH07Ci0JCTJEREUxQ0ZBMUY1NzRDM0UwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNF
ODFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUkRpc3BsYXlFdmVudC5oICovOyB9OwotCQkyRERFMUNG
QzFGNTc0Q0VFMDBEMUEzNjUgLyogSlNWUkRpc3BsYXlFdmVudFJlYXNvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRUExRjU3NEJGRjAwRDFB
MzY1IC8qIEpTVlJEaXNwbGF5RXZlbnRSZWFzb24uaCAqLzsgfTsKLQkJMkRERTFDRkUxRjU3NENG
MzAwRDFBMzY1IC8qIEpTVlJFeWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEREUxQ0VDMUY1NzRCRkYwMEQxQTM2NSAvKiBKU1ZSRXllLmggKi87IH07
Ci0JCTJEREUxRDAwMUY1NzRDRjcwMEQxQTM2NSAvKiBKU1ZSRXllUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRUUxRjU3NEJG
RjAwRDFBMzY1IC8qIEpTVlJFeWVQYXJhbWV0ZXJzLmggKi87IH07Ci0JCTJEREUxRDAyMUY1NzRE
MDAwMEQxQTM2NSAvKiBKU1ZSRnJhbWVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNGMDFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUkZyYW1l
RGF0YS5oICovOyB9OwotCQkyRERFMUQwNDFGNTc0RDA1MDBEMUEzNjUgLyogSlNWUkxheWVySW5p
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFD
RjIxRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJMYXllckluaXQuaCAqLzsgfTsKLQkJMkRERTFEMDYx
RjU3NEQwQTAwRDFBMzY1IC8qIEpTVlJQb3NlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNGNDFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUlBvc2Uu
aCAqLzsgfTsKLQkJMkRERTFEMDgxRjU3NEQwRTAwRDFBMzY1IC8qIEpTVlJTdGFnZVBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUx
Q0Y2MUY1NzRCRkYwMEQxQTM2NSAvKiBKU1ZSU3RhZ2VQYXJhbWV0ZXJzLmggKi87IH07CisJCTJE
REUxQ0UzMUY1NzRBRTUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0U0MUY1NzRBRTkwMEQxQTM2NSAvKiAobnVsbCkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0Y4MUY1NzRDMzkw
MEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07
CisJCTJEREUxQ0ZBMUY1NzRDM0UwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0ZDMUY1NzRDRUUwMEQxQTM2NSAvKiAobnVs
bCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0ZFMUY1
NzRDRjMwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IH07CisJCTJEREUxRDAwMUY1NzRDRjcwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDAyMUY1NzREMDAwMEQxQTM2NSAv
KiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUx
RDA0MUY1NzREMDUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IH07CisJCTJEREUxRDA2MUY1NzREMEEwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDA4MUY1NzREMEUwMEQx
QTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CiAJ
CTJERTcwMDIzMTkyRkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTcwMDIyMTky
RkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCAqLzsgfTsKIAkJMkRG
NTEyQ0UxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGNTEyQ0MxRDg3
M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oICovOyB9OwogCQky
REZBNDg4RjFEQjU0MUQwMDAzNjJCOTkgLyogQnVmZmVyU291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREZBNDg4RTFEQjU0MUMyMDAzNjJCOTkg
LyogQnVmZmVyU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEwOTcsNiArMTA5Nyw3IEBACiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1
MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyog
V3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBS
ZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1C
dWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFC
QjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxNkY3OTkwMjNENzUwQ0YwMDgy
OUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyog
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9OwogCQk0MTcyNTNBQjEzNTRCQkJD
MDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRp
YUNvbnRyb2xFbGVtZW50cy5oICovOyB9OwogCQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyog
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQjFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAgKi87IH07CiAJCTQxNzYxMkIwMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRw
b2ludC5oICovOyB9OwpAQCAtMTEzNyw2ICsxMTM4LDcgQEAKIAkJNDFCODc3NjIyM0RFMTA0NTAw
MzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI4Nzc2MDIzREUxMDQyMDAzNjM4Qjgg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUJGMjA0OTIyQkE3QkU4MDAwNEY4MTIgLyog
UmVhbHRpbWVWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3Vy
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAv
KiBTY3JpcHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQxQ0Q2RjhDMjNENkU4MjEwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tICovOyB9OwogCQk0MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0
QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRDEyOUNFMUYzRDBFRjYwMEQxNUU0NyAvKiBXb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGQjI3OEQxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3Bl
Q2FjaGVzLmggKi87IH07CiAJCTQxRDEyOUQwMUYzRDBGMDUwMEQxNUU0NyAvKiBDYWNoZVF1ZXJ5
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGQjI3OUIxRjM0Q0VGMDAwNzk1NDg3IC8qIENhY2hlUXVlcnlPcHRpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI1ODAsNyArMjU4Miw2
IEBACiAJCThBRjRFNTVDMTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1NTkxMURD
NUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmggKi87IH07CiAJCThCRDM3QTY4MjAx
QkIzOUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNodW5rLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkQzN0E2NzIwMUJCMzlDMDAxMTczNEEgLyog
UmVhZGFibGVTdHJlYW1DaHVuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCThFNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9u
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhFNEM5
NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCAqLzsgfTsKLQkJOEU2MjBF
ODEyMEVFNjAyNDAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RTYyMEU4MDIwRUU1RkZDMDA3
QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4RUM2Qzk2MzIwMUEyNTE2MDBGQkZBNTMgLyog
R2FwTGVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4RUM2Qzk2MTIwMUEyNTAxMDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEY2NzU2MUIxMjg4QjE3QjAwNDdB
Q0EzIC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTAwMTc3NDExMkUw
MzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMDE3NzNFMTJFMDM0NzgwMDY0ODQ2MiAv
KiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi87IH07CkBAIC03MzYxLDYgKzczNjIsOCBAQAog
CQk0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAv
KiBGZXRjaElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0
Y2hJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAy
RkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZG
Nzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcwQTJFOTFEOEMw
Q0MwMDAzMTg0NTIgLyogSlNET01XcmFwcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRE9NV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxNzI1M0E4MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E5MTM1NEJCQkMwMDM2
MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzQ2OCw2ICs3NDcxLDggQEAKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENh
bnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxQzdFMTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW1UcmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4OTIzRDZF
ODFDMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUNGOEJFNTFENDYy
MjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMDU0NCw4ICsxMDU0OSw2IEBACiAJCThFMzNDRDkzMjAxQTI5QzEwMEUz
OTA5MyAvKiBHYXBMZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2FwTGVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDgx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4RTRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmV0Y2hSZXNwb25zZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4RTYyMEU3RTIwRUU1RkUyMDA3QkM1RUYgLyog
VlJQbGF0Zm9ybURpc3BsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVlJQbGF0Zm9ybURpc3BsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4
RTYyMEU4MDIwRUU1RkZDMDA3QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEVDNkM5NjEyMDFBMjUwMTAwRkJGQTUzIC8q
IEdhcExlbmd0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHYXBMZW5ndGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0Ez
IC8qIEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRR
dWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RjkzNEQ4MzExODlGMUVFMDA1
MDhENUQgLyogSlNFeGVjU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNFeGVjU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODkyLDggKzE4
ODk1LDEyIEBACiAJCTREM0MwNUQ0MjFBRjQ4MDkwMEYyODkwQSAvKiBjb2NvYSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDE2Rjc5OEQyM0Q3NTBDQTAw
ODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovLAorCQkJCTQxNkY3OThG
MjNENzUwQ0IwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8sCiAJ
CQkJNEQ3M0Y5NEMyMThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EuaCAqLywKIAkJCQk0RDczRjk0RDIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbSAqLywKKwkJCQk0MUNENkY4OTIzRDZFODFDMDBCMTY0MjEg
LyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8sCisJCQkJNDFDRDZGOEIyM0Q2RTgx
RDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjU4MjMsNyAr
MjU4MzAsNiBAQAogCQkJCTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3b3JrICovLAog
CQkJCTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAw
NkMxRDAwRUY2RjI2IC8qIHRleHQgKi8sCi0JCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8q
IHZyICovLAogCQkJCURGREI5MTJDRjhFODhBNkRBMUFEMjY0RiAvKiBBYm9ydGFibGVUYXNrUXVl
dWUuaCAqLywKIAkJCQk0OUFFMkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1
ZS5jcHAgKi8sCiAJCQkJNDlBRTJEOTUxMzRFRTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFs
dWUuaCAqLywKQEAgLTMxMTY1LDE3ICszMTE3MSwxNyBAQAogCQkJCUJFOEVGMDREMTcxQzkwMTQw
MDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkU3OTE0
OTFGOTdFMDFBMDAxOTk3MzkgLyogSlNWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTc3NzlCRDk2MUYzMjI0NkEwMEMyMTQxNyAvKiBKU1Zpc3VhbFZpZXdwb3J0LmggaW4gSGVh
ZGVycyAqLywKLQkJCQkyRERFMUNFNDFGNTc0QUU5MDBEMUEzNjUgLyogSlNWUkRpc3BsYXkuaCBp
biBIZWFkZXJzICovLAotCQkJCTJEREUxQ0Y4MUY1NzRDMzkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxh
eUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFDRkExRjU3NEMzRTAwRDFB
MzY1IC8qIEpTVlJEaXNwbGF5RXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUxQ0ZDMUY1
NzRDRUUwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUV2ZW50UmVhc29uLmggaW4gSGVhZGVycyAqLywK
LQkJCQkyRERFMUNGRTFGNTc0Q0YzMDBEMUEzNjUgLyogSlNWUkV5ZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMkRERTFEMDAxRjU3NENGNzAwRDFBMzY1IC8qIEpTVlJFeWVQYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLywKLQkJCQkyRERFMUNFMzFGNTc0QUU1MDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZW
aWV3LmggaW4gSGVhZGVycyAqLywKLQkJCQkyRERFMUQwMjFGNTc0RDAwMDBEMUEzNjUgLyogSlNW
UkZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFEMDQxRjU3NEQwNTAwRDFBMzY1
IC8qIEpTVlJMYXllckluaXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUxRDA2MUY1NzREMEEw
MEQxQTM2NSAvKiBKU1ZSUG9zZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFEMDgxRjU3NEQw
RTAwRDFBMzY1IC8qIEpTVlJTdGFnZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJE
REUxQ0U0MUY1NzRBRTkwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERF
MUNGODFGNTc0QzM5MDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFD
RkExRjU3NEMzRTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxQ0ZD
MUY1NzRDRUUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUNGRTFG
NTc0Q0YzMDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFEMDAxRjU3
NENGNzAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxQ0UzMUY1NzRB
RTUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUQwMjFGNTc0RDAw
MDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFEMDQxRjU3NEQwNTAw
RDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxRDA2MUY1NzREMEEwMEQx
QTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUQwODFGNTc0RDBFMDBEMUEz
NjUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJQkUyMDUwODIxOEE0NjBDMzAwODA2NDdF
IC8qIEpTVlRUQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUY5QjIwRDE4Q0ZCNUY0MDBDNjRC
RUYgLyogSlNWVFRSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRjlCMjBGMThDRkI1RjQw
MEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1NDIsNiAr
MzM1NDgsNyBAQAogCQkJCUE5Nzg3Q0I0MUY1RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5
TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VB
RkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1NTk2
OTExNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTZGNzk5MDIzRDc1MENGMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8q
IEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEOEE3QkJCMTk3NzM1RkUw
MENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzQyNzQsNiArMzQyODEsNyBAQAogCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2
MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTNGQkM0QUYzMTg5ODgxNTYwMDQ2RUUzOCAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBWaWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDFDRDZG
OEMyM0Q2RTgyMTAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1Ry
YWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2NzE3RkEwQUM2MDBERERDRDAg
LyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQubW0KaW5kZXggZmE4ZWUwYjEwMGNmMjE0MDg1NjUwNTE2YmM0ZTIzYTFkYjE1
YmYzNS4uZmMyOTA4Y2ViZTNkNzRlNWYxNTEwNGE1ZDc4MjMwY2JmOWVkNTMzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRy
YW5zZmVyU2Vzc2lvblZULm1tCkBAIC05NSw2ICs5NSw3IEBAIGJvb2wgSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVDo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAoX19icmlkZ2Ug
TlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXkgOiBAeyAvKmVt
cHR5IGRpY3Rpb25hcnkqLyB9LAogICAgIH07CiAKKwogICAgIE5TRGljdGlvbmFyeSogcGl4ZWxC
dWZmZXJQb29sT3B0aW9ucyA9IEB7CiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBp
eGVsQnVmZmVyUG9vbE1pbmltdW1CdWZmZXJDb3VudEtleTogQCg2KQogICAgIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggNzNmMWQwYTE1MTlmMmMwM2I5
MWQ2OTUxMDUxMzVhNGYyMGQxZGE2NC4uZjFmNjgwNDUyMjkzNjVkOGZjM2IwNzk2NzJkMmMyMDMz
ZmJlYTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAt
MjYsOSArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuaCIKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNs
dWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAi
TWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC02OCw3
ICs2OSwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBN
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6Y3JlYXRlKGF1ZGlvVHJhY2ssIHZpZGVvVHJhY2spOworCisgICAgaW50IHdpZHRoID0g
MCwgaGVpZ2h0ID0gMDsKKyAgICBpZiAodmlkZW9UcmFjaykgeworICAgICAgICBhdXRvJiBzZXR0
aW5ncyA9IHZpZGVvVHJhY2stPnNldHRpbmdzKCk7CisgICAgICAgIHdpZHRoID0gc2V0dGluZ3Mu
d2lkdGgoKTsKKyAgICAgICAgaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7CisgICAgfQorICAg
IGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSghIWF1ZGlv
VHJhY2ssIHdpZHRoLCBoZWlnaHQpOwogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApAQCAtMTE5LDQgKzEyNyw0IEBAIGNvbnN0IFN0cmluZyYgTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsOjptaW1lVHlwZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaAppbmRleCAwY2YwZGYzYzY0Y2M5NzEzZTMwNTliZTM2Y2FjYzlmYzdj
Y2MwYjM2Li4zNGUyYTk2Yzc5NDE4ZDRlODY2YzFhYzIxMDQwOThjYzkzOGY0NGI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTI0LDcgKzI0LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiTWVkaWFS
ZWNvcmRlclByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLmgiCkBAIC01Niw0ICs1Niw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDdiZjgxZTFk
NDU2YzcwYzJkOTQ0ZjcwNDVhOGUxNmUwNTliY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9y
dCA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBs
ZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0Nv
bnZlcnRlciogQXVkaW9Db252ZXJ0ZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrT2JqZWN0KTsKKyAgICB+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisK
KyAgICB2b2lkIGZpbmlzaCgpOworICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVm
ZmVyUmVmKTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsK
KyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIo
KTsKKworcHJpdmF0ZToKKyAgICBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKyAgICBi
b29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tPYmplY3QpOworCisgICAgc3RhdGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElu
cHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCos
IEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKiwgdm9pZCopOworCisgICAgdm9pZCBwcm9j
ZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRBdWRpb0Nv
bnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYs
IEF1ZGlvRm9ybWF0SUQpOworICAgIHNpemVfdCBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9y
bWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgVUludDMyLCBGbG9hdDMyKTsKKyAgICB2
b2lkIGF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBS
ZXRhaW5QdHI8TlNOdW1iZXI+IGdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCk7CisgICAgQ01T
YW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tl
dHMsIEF1ZGlvQnVmZmVyTGlzdCk7CisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGls
TG93V2F0ZXJUaW1lKENNVGltZSk7CisgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1P
dXRwdXRQYWNrZXRzKFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0
RGVzY3JpcHRpb24qKik7CisKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRw
dXRCdWZmZXJRdWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9pbnB1dEJ1
ZmZlclF1ZXVlOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwor
ICAgIENNVGltZSBtX2xvd1dhdGVyVGltZTsKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNl
IH07CisKKyAgICBSZXRhaW5QdHI8QXVkaW9Db252ZXJ0ZXJSZWY+IG1fY29udmVydGVyOworICAg
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX3NvdXJjZUZvcm1hdDsKKyAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gbV9kZXN0aW5hdGlvbkZvcm1hdDsKKyAgICBSZXRhaW5QdHI8
Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOwor
ICAgIFJldGFpblB0cjxOU051bWJlcj4gbV9nZHJDb3VudE51bTsKKyAgICBVSW50MzIgbV9tYXhP
dXRwdXRQYWNrZXRTaXplOworICAgIFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9u
PiBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zOworCisgICAgQ01UaW1lIG1fY3VycmVu
dE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAgICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0
UHJlc2VudGF0aW9uVGltZVN0YW1wOworICAgIENNVGltZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRp
b247CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9zb3VyY2VCdWZmZXI7CisgICAgVmVjdG9yPGNoYXI+
IG1fZGVzdGluYXRpb25CdWZmZXI7CisKKyAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4g
bV9zYW1wbGVCbG9ja0J1ZmZlcjsKKyAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7
CisgICAgc2l6ZV90IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXI7CisgICAgQXVk
aW9Gb3JtYXRJRCBtX291dHB1dENvZGVjVHlwZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MzMzNzQ2YWRmYjAw
M2RjNjYyMGEwMmQxMDZjOGQ0MGIxY2ZkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQpAQCAtMCwwICsxLDQ5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvZGVjLmg+CisjaW5jbHVkZSA8QXVk
aW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlv
Rm9ybWF0Lmg+CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQg
PHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oPgorCisjZGVmaW5lIExPV19XQVRFUl9USU1F
X0lOX1NFQ09ORCAwLjEKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxi
YWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBhdXRvIGNvbXByZXNz
b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcgQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkpOworICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlh
bGl6ZShjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gY29tcHJlc3NvcjsKK30KKworQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1
ZXVlIHsgZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSB9CisgICAgLCBtX2xvd1dhdGVyVGlt
ZSB7IENNVGltZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNPTkQsIDEwMDAp
IH0KKyAgICAsIG1fb3V0cHV0Q29kZWNUeXBlIHsga0F1ZGlvRm9ybWF0TVBFRzRBQUMgfQorewor
fQorCitBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoKQoreworICAgIGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAgICAgIGRpc3Bh
dGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKK30KKworYm9vbCBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFj
ayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgQ01CdWZmZXJRdWV1ZVJl
ZiBpbnB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9y
VW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZpbnB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBDTUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX2lucHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9pbnB1dEJ1
ZmZlclF1ZXVlID0gYWRvcHRDRihpbnB1dEJ1ZmZlclF1ZXVlKTsKKworICAgIENNQnVmZmVyUXVl
dWVSZWYgb3V0cHV0QnVmZmVyUXVldWU7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1
ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFj
a3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBDTUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX291dHB1dEJ1ZmZlclF1ZXVlIGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1f
b3V0cHV0QnVmZmVyUXVldWUgPSBhZG9wdENGKG91dHB1dEJ1ZmZlclF1ZXVlKTsKKyAgICBDTUJ1
ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgY2FsbGJh
Y2ssIGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hlbkRhdGFCZWNvbWVz
UmVhZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKKworICAgIG1faXNFbmNvZGluZyA9IHRydWU7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpm
aW5pc2goKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeewor
ICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKGtDTVRpbWVJbnZh
bGlkKTsKKyAgICAgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1f
b3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihl
cnJvciwgTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJR
dWV1ZU1hcmtFbmRPZkRhdGEgZmFpbGVkICVkIiwgZXJyb3IpOworICAgICAgICBtX2lzRW5jb2Rp
bmcgPSBmYWxzZTsKKyAgICB9KTsKK30KKworYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24sIEF1ZGlvRm9ybWF0SUQgb3V0cHV0Rm9y
bWF0SUQpCit7CisgICAgY29uc3QgYXV0byAqYXVkaW9Gb3JtYXRMaXN0SXRlbSA9IENNQXVkaW9G
b3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQoZm9ybWF0RGVzY3JpcHRp
b24pOworICAgIG1fc291cmNlRm9ybWF0ID0gYXVkaW9Gb3JtYXRMaXN0SXRlbS0+bUFTQkQ7CisK
KyAgICBtZW1zZXQoJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIHNpemVvZihBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24pKTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9IG91
dHB1dEZvcm1hdElEOworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPSBtX3Nv
dXJjZUZvcm1hdC5tU2FtcGxlUmF0ZTsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1DaGFubmVs
c1BlckZyYW1lID0gbV9zb3VyY2VGb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisKKyAgICBVSW50
MzIgc2l6ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJv
ciA9IEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkoa0F1ZGlvRm9ybWF0UHJvcGVydHlfRm9ybWF0SW5m
bywgMCwgTlVMTCwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBB
dWRpb0Zvcm1hdEdldFByb3BlcnR5IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQXVkaW9Db252ZXJ0ZXJSZWYgY29udmVydGVyOwor
ICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJOZXcoJm1fc291cmNlRm9ybWF0LCAm
bV9kZXN0aW5hdGlvbkZvcm1hdCwgJmNvbnZlcnRlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252
ZXJ0ZXJOZXcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgbV9jb252ZXJ0ZXIgPSBhZG9wdENGKGNvbnZlcnRlcik7CisKKyAgICBzaXpl
X3QgY29va2llU2l6ZSA9IDA7CisgICAgY29uc3Qgdm9pZCAqY29va2llID0gQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUoZm9ybWF0RGVzY3JpcHRpb24sICZjb29raWVTaXpl
KTsKKyAgICBpZiAoY29va2llU2l6ZSkgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlv
Q29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckRl
Y29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgKFVJbnQzMiljb29raWVTaXplLCBjb29raWUpKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nv
b2tpZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9zb3VyY2VGb3JtYXQpOwor
ICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRl
ci5nZXQoKSwga0F1ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24sICZz
aXplLCAmbV9zb3VyY2VGb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVy
dGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fc291cmNlRm9ybWF0
Lm1CeXRlc1BlclBhY2tldCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIm1CeXRlc1BlclBhY2tldCBzaG91bGQgbm90IGJlIHplcm8iKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlvbkZvcm1hdCk7
CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVy
dGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24s
ICZzaXplLCAmbV9kZXN0aW5hdGlvbkZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVk
aW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobV9kZXN0
aW5hdGlvbkZvcm1hdC5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TVBFRzRBQUMpIHsKKyAgICAg
ICAgLy8gRklYTUU6IFNldCBvdXRwdXRCaXRSYXRlIGFjY29yZGluZyBNZWRpYVJlY29yZGVyT3B0
aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQuCisgICAgICAgIFVJbnQzMiBvdXRwdXRCaXRSYXRlID0g
NjQwMDA7CisgICAgICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlID49IDQ0
MTAwKQorICAgICAgICAgICAgb3V0cHV0Qml0UmF0ZSA9IDE5MjAwMDsKKyAgICAgICAgZWxzZSBp
ZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA8IDIyMDAwKQorICAgICAgICAgICAg
b3V0cHV0Qml0UmF0ZSA9IDMyMDAwOworCisgICAgICAgIHNpemUgPSBzaXplb2Yob3V0cHV0Qml0
UmF0ZSk7CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0
eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSwgc2l6ZSwg
Jm91dHB1dEJpdFJhdGUpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRl
ckVuY29kZUJpdFJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3Jt
YXQubUJ5dGVzUGVyUGFja2V0KSB7CisgICAgICAgIC8vIElmIHRoZSBkZXN0aW5hdGlvbiBmb3Jt
YXQgaXMgVkJSLCB3ZSBuZWVkIHRvIGdldCBtYXggc2l6ZSBwZXIgcGFja2V0IGZyb20gdGhlIGNv
bnZlcnRlci4KKyAgICAgICAgc2l6ZSA9IHNpemVvZihtX21heE91dHB1dFBhY2tldFNpemUpOwor
CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2Nv
bnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVtT3V0cHV0UGFja2V0
U2l6ZSwgJnNpemUsICZtX21heE91dHB1dFBhY2tldFNpemUpKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBn
ZXR0aW5nIGtBdWRpb0NvbnZlcnRlclByb3BlcnR5TWF4aW11bU91dHB1dFBhY2tldFNpemUgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBtX2Rlc3RpbmF0aW9uQnVmZmVyLnJlc2VydmVDYXBhY2l0eShjb21w
dXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KG1fZGVzdGluYXRpb25Gb3JtYXQsIG1fbWF4T3V0
cHV0UGFja2V0U2l6ZSwgTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EKSk7CisgICAgaWYgKCFtX2Rl
c3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkKKyAgICAgICAgbV9kZXN0aW5hdGlvblBh
Y2tldERlc2NyaXB0aW9ucy5yZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBh
Y2l0eSgpIC8gbV9tYXhPdXRwdXRQYWNrZXRTaXplKTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitzaXplX3QgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZv
ckF1ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBmb3JtYXQsIFVJbnQzMiBt
YXhPdXRwdXRQYWNrZXRTaXplLCBGbG9hdDMyIGR1cmF0aW9uKQoreworICAgIFVJbnQzMiBudW1Q
YWNrZXRzID0gKGZvcm1hdC5tU2FtcGxlUmF0ZSAqIGR1cmF0aW9uKSAvIGZvcm1hdC5tRnJhbWVz
UGVyUGFja2V0OworICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gZm9ybWF0Lm1CeXRlc1Bl
clBhY2tldCA/IGZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtYXhPdXRwdXRQYWNrZXRTaXplOwor
ICAgIFVJbnQzMiBidWZmZXJTaXplID0gbnVtUGFja2V0cyAqIG91dHB1dFBhY2tldFNpemU7CisK
KyAgICByZXR1cm4gYnVmZmVyU2l6ZTsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZl
cikKK3sKKyAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQobV9yZW1haW5pbmdQcmltZUR1cmF0aW9u
KSkgeworICAgICAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07
CisgICAgICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKHByaW1lSW5mbyk7CisKKyAgICAgICAgaWYg
KGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgp
LCBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8sICZzaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3Jl
bWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVNYWtlKHByaW1lSW5mby5sZWFkaW5nRnJhbWVz
LCBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlKTsKKyAgICB9CisKKyAgICBpZiAoQ01U
SU1FX0NPTVBBUkVfSU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRp
b24pKSB7CisgICAgICAgIENNVGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0
RHVyYXRpb24oYnVmZmVyKTsKKyAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1p
bmltdW0oc2FtcGxlRHVyYXRpb24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7CisgICAgICAg
IENGRGljdGlvbmFyeVJlZiB0cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5
KHRyaW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgICAgIENNU2V0QXR0YWNo
bWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRT
dGFydCwgdHJpbUF0U3RhcnREaWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUp
OworICAgICAgICBDRlJlbGVhc2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAgbV9yZW1haW5p
bmdQcmltZUR1cmF0aW9uID0gQ01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQcmltZUR1cmF0aW9u
LCB0cmltRHVyYXRpb24pOworICAgIH0KK30KKworUmV0YWluUHRyPE5TTnVtYmVyPiBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCkKK3sKKyAg
ICBVSW50MzIgZGVsYXlTaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICB1aW50MzJfdCBvcmln
aW5hbERlbGF5TW9kZSA9IDA7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdl
dFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2Rl
LCAmZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcg
a0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICB1aW50MzJfdCBvcHRpbWFsRGVsYXlNb2Rl
ID0ga0F1ZGlvQ29kZWNEZWxheU1vZGVfT3B0aW1hbDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1
ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJv
cGVydHlEZWxheU1vZGUsIGRlbGF5U2l6ZSwgJm9wdGltYWxEZWxheU1vZGUpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIHNldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBVSW50MzIgcHJpbWVT
aXplID0gc2l6ZW9mKEF1ZGlvQ29kZWNQcmltZUluZm8pOworICAgIEF1ZGlvQ29kZWNQcmltZUlu
Zm8gcHJpbWVJbmZvIHsgMCwgMCB9OworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0
ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1l
SW5mbywgJnByaW1lU2l6ZSwgJnByaW1lSW5mbykpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVk
aW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZvIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAg
ICByZXR1cm4gbmlsOworICAgIH0KKworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0
ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5
TW9kZSwgZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRp
bmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0TlMoW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6KHByaW1lSW5mby5sZWFkaW5nRnJhbWVzIC8gbV9kZXN0aW5hdGlvbkZv
cm1hdC5tRnJhbWVzUGVyUGFja2V0KV0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKFVJbnQzMiBu
dW1QYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3QpCit7CisgICAgVmVjdG9y
PGNoYXI+IGNvb2tpZTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbikg
eworICAgICAgICBVSW50MzIgY29va2llU2l6ZSA9IDA7CisKKyAgICAgICAgYXV0byBlcnJvciA9
IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHlJbmZvKG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9D
b252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgTlVMTCk7CisgICAg
ICAgIGlmICgoZXJyb3IgPT0gbm9FcnIpICYmICEhY29va2llU2l6ZSkgeworICAgICAgICAgICAg
Y29va2llLnJlc2VydmVDYXBhY2l0eShjb29raWVTaXplKTsKKworICAgICAgICAgICAgaWYgKGF1
dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBr
QXVkaW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgY29va2ll
LmRhdGEoKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckNv
bXByZXNzaW9uTWFnaWNDb29raWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICAg
ICAgaWYgKGF1dG8gZXJyb3IgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIE5VTEwsIGNvb2tpZVNpemUs
IGNvb2tpZS5kYXRhKCksIE5VTEwsICZkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSkgewor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAgICAg
ICBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24gPSBhZG9wdENGKGRlc3RpbmF0aW9uRm9y
bWF0RGVzY3JpcHRpb24pOworICAgICAgICBtX2dkckNvdW50TnVtID0gZ3JhZHVhbERlY29kZXJS
ZWZyZXNoQ291bnQoKTsKKyAgICB9CisKKyAgICBjaGFyICpkYXRhID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhKTsKKyAgICBzaXplX3QgZGF0YVNp
emUgPSBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplOworCisgICAgQ01C
bG9ja0J1ZmZlclJlZiBibG9ja0J1ZmZlcjsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tC
dWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZGF0
YVNpemUsIGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIDAsIGRhdGFTaXplLCBrQ01CbG9ja0J1
ZmZlckFzc3VyZU1lbW9yeU5vd0ZsYWcsICZibG9ja0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01C
bG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKGJs
b2NrQnVmZmVyKTsKKworICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlclJlcGxhY2VE
YXRhQnl0ZXMoZGF0YSwgYnVmZmVyLmdldCgpLCAwLCBkYXRhU2l6ZSkpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
Q01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
QnVmZmVyOworICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBh
Y2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIuZ2V0KCksIHRydWUs
IE5VTEwsIE5VTEwsIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgbnVtUGFj
a2V0cywgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wLCBtX2Rlc3RpbmF0aW9u
UGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9y
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3Jp
cHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAg
IH0KKworICAgIGlmIChbbV9nZHJDb3VudE51bSBpbnRWYWx1ZV0pCisgICAgICAgIENNU2V0QXR0
YWNobWVudChzYW1wbGVCdWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVh
bERlY29kZXJSZWZyZXNoLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKW1fZ2RyQ291bnROdW0uZ2V0KCks
IGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisKKyAgICByZXR1cm4gc2FtcGxl
QnVmZmVyOworfQorCitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlv
Q29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiAq
bnVtT3V0cHV0UGFja2V0c1B0ciwgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0LCBBdWRpb1N0
cmVhbVBhY2tldERlc2NyaXB0aW9uICoqcGFja2V0RGVzY3JpcHRpb25PdXQsIHZvaWQgKmF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvcikKK3sKKyAgICBhdXRvICpjb21wcmVzc29yID0gc3RhdGlj
X2Nhc3Q8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4oYXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yKTsKKyAgICByZXR1cm4gY29tcHJlc3Nvci0+cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRw
dXRQYWNrZXRzKG51bU91dHB1dFBhY2tldHNQdHIsIGJ1ZmZlckxpc3QsIHBhY2tldERlc2NyaXB0
aW9uT3V0KTsKK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm92
aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKiBudW1PdXRwdXRQYWNrZXRzUHRy
LCBBdWRpb0J1ZmZlckxpc3QqIGF1ZGlvQnVmZmVyTGlzdCwgQXVkaW9TdHJlYW1QYWNrZXREZXNj
cmlwdGlvbioqIHBhY2tldERlc2NyaXB0aW9uT3V0KQoreworICAgIGlmIChwYWNrZXREZXNjcmlw
dGlvbk91dCkKKyAgICAgICAgKnBhY2tldERlc2NyaXB0aW9uT3V0ID0gTlVMTDsKKworICAgIGNv
bnN0IFVJbnQzMiBudW1QYWNrZXRzVG9Db3B5ID0gKm51bU91dHB1dFBhY2tldHNQdHI7CisgICAg
c2l6ZV90IG51bUJ5dGVzVG9Db3B5ID0gKG51bVBhY2tldHNUb0NvcHkgKiBtX3NvdXJjZUZvcm1h
dC5tQnl0ZXNQZXJQYWNrZXQpOworCisgICAgaWYgKGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1
ZmZlcnMgPT0gMSkgeworICAgICAgICBzaXplX3QgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVy
ID0gMDsKKworICAgICAgICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobnVtQnl0ZXNU
b0NvcHkpOworCisgICAgICAgIHdoaWxlIChudW1CeXRlc1RvQ29weSkgeworICAgICAgICAgICAg
aWYgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxv
Y2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgewor
ICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0
QnVmZmVyUXVldWUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRC
dWZmZXJRdWV1ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZl
ciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWlu
KENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAg
ICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9z
YW1wbGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX3NhbXBs
ZUJsb2NrQnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNh
bXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1f
c2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0Nv
cHlGcm9tU2FtcGxlQmJ1ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVCbG9j
a0J1ZmZlclNpemUgLSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSk7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyht
X3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVm
ZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAobV9zb3VyY2VCdWZmZXIuZGF0YSgp
ICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1
ZjsKKyAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgKz0gbnVtQnl0
ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJ
blNhbXBsZUJsb2NrQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sw
XS5tRGF0YSA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0
LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVy
OworICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9
IG1fc291cmNlRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lOworCisgICAgICAgICpudW1PdXRwdXRQ
YWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAv
IG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisgICAgICAgIHJldHVybiBub0VycjsK
KyAgICB9CisKKyAgICBBU1NFUlQoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAy
KTsKKworICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVybGVhdmVkIGRhdGEgYnkgdW5pbnRlcmxl
YXZpbmcgbV9zb3VyY2VCdWZmZXIgaWYgbmVlZGVkLgorICAgIEFTU0VSVChtX3NvdXJjZUZvcm1h
dC5tRm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZCk7CisKKyAg
ICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkoMiAqIG51bUJ5dGVzVG9Db3B5KTsKKyAg
ICBhdXRvKiBmaXJzdENoYW5uZWwgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7CisgICAgYXV0byog
c2Vjb25kQ2hhbm5lbCA9IG1fc291cmNlQnVmZmVyLmRhdGEoKSArIG51bUJ5dGVzVG9Db3B5Owor
CisgICAgc2l6ZV90IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciA9IDA7CisgICAgd2hpbGUg
KG51bUJ5dGVzVG9Db3B5KSB7CisgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA8
PSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICBpZiAo
bV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZm
ZXIgPSBudWxscHRyOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0g
MDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5
KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRC
dWZmZXJRdWV1ZS5nZXQoKSkpKSk7CisgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0g
YWRvcHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01T
YW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAg
ICAgICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01T
YW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIG1fc2Ft
cGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJ
blNhbXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gQ01CbG9ja0J1
ZmZlckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSkgLyAyOworICAgICAg
ICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgc2l6ZV90
IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1CeXRlc1RvQ29weSwg
KG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIC0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1
ZmZlcikpOworICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURh
dGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBs
ZUJsb2NrQnVmZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoZmlyc3RDaGFubmVs
ICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBD
TUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBmaXJzdCBjaGFubmVsIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9z
YW1wbGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZl
ciArIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVm
LCAoc2Vjb25kQ2hhbm5lbCArIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcikpKSB7CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc2Vjb25kIGNoYW5uZWwg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0Nv
cHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZl
ciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgbV9jdXJyZW50
T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVm
OworICAgICAgICB9CisgICAgfQorCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5t
RGF0YSA9IGZpcnN0Q2hhbm5lbDsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1E
YXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7CisgICAgYXVkaW9CdWZm
ZXJMaXN0LT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgYXVkaW9CdWZm
ZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YSA9IHNlY29uZENoYW5uZWw7CisgICAgYXVkaW9CdWZm
ZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNl
QnVmZmVyOworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxz
ID0gMTsKKworICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1
ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7
CisgICAgcmV0dXJuIG5vRXJyOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUgbG93V2F0ZXJU
aW1lKQoreworICAgIGlmICghbV9jb252ZXJ0ZXIpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSAo
Q01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFk
KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlcik7CisK
KyAgICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVC
dWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50
T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVz
ZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKworICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0
aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpOworICAgICAg
ICBpZiAoIWluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKGZvcm1h
dERlc2NyaXB0aW9uLCBtX291dHB1dENvZGVjVHlwZSkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgd2hpbGUgKENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVyVGltZSkgfHwgQ01U
SU1FX0NPTVBBUkVfSU5MSU5FKGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJRdWV1ZUdldER1cmF0
aW9uKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSB7CisgICAgICAgIEF1ZGlvQnVmZmVyTGlz
dCBmaWxsQnVmZmVyTGlzdDsKKworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVy
cyA9IDE7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVs
cyA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisgICAgICAgIGZpbGxC
dWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSAoVUludDMyKW1fZGVzdGluYXRp
b25CdWZmZXIuY2FwYWNpdHkoKTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0u
bURhdGEgPSBtX2Rlc3RpbmF0aW9uQnVmZmVyLmRhdGEoKTsKKworICAgICAgICBVSW50MzIgb3V0
cHV0UGFja2V0U2l6ZSA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gbV9k
ZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtX21heE91dHB1dFBhY2tldFNpemU7
CisgICAgICAgIFVJbnQzMiBudW1PdXRwdXRQYWNrZXRzID0gKFVJbnQzMiltX2Rlc3RpbmF0aW9u
QnVmZmVyLmNhcGFjaXR5KCkgLyBvdXRwdXRQYWNrZXRTaXplOworCisgICAgICAgIGF1dG8gZXJy
b3IgPSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyKG1fY29udmVydGVyLmdldCgpLCBh
dWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jLCB0aGlzLCAmbnVtT3V0cHV0UGFja2V0
cywgJmZpbGxCdWZmZXJMaXN0LCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLmRhdGEo
KSk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJG
aWxsQ29tcGxleEJ1ZmZlciBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbnVtT3V0cHV0UGFja2V0cykKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gYnVmZmVyID0gc2FtcGxlQnVmZmVyV2l0aE51
bVBhY2tldHMobnVtT3V0cHV0UGFja2V0cywgZmlsbEJ1ZmZlckxpc3QpOworCisgICAgICAgIGF0
dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKGJ1ZmZlcik7CisKKyAgICAgICAgZXJyb3IgPSBDTVNh
bXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIsIG1fY3VycmVu
dE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBDTVRpbWUgbmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0
aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFt
cCA9IENNVGltZUFkZChtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG5hdGl2
ZUR1cmF0aW9uKTsKKworICAgICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24gPSBDTVNhbXBsZUJ1
ZmZlckdldE91dHB1dER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1dFBy
ZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRp
b25UaW1lU3RhbXAsIG91dHB1dER1cmF0aW9uKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVy
UXVldWVFbnF1ZXVlKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAg
IGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVm
ZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGVycm9yID0gQ01CdWZm
ZXJRdWV1ZUVucXVldWUobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
KworICAgIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUobV9sb3dXYXRlclRp
bWUpOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVm
ZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykKKyAgICAgICAg
ICAgIHByb2Nlc3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVC
dWZmZXJSZWYgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZm
ZXIoKQoreworICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+
KENNQnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisK
K1JldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Ojp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1w
bGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0
YWluKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworfQorCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCBiMTQ3Y2EyODgy
OWIwZjEwMzBiZGE3NGEwODQyNmM0NTY1ZTk4NzFlLi5iMjViNDRkMjgzM2FkMDVmMWE2MjIzMzBi
YjI2ZGNiN2EyMWZjZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMjQsNyArMjQsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFW
RShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0
aW9uLmgiCiAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KQEAgLTM0LDExICszNiwxNiBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRp
b1R5cGVzLmg+CisjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogCiB0eXBlZGVmIHN0cnVj
dCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIGNvbnN0
IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVm
OwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiAqQ01CdWZm
ZXJRdWV1ZVRyaWdnZXJUb2tlbjsKIAogT0JKQ19DTEFTUyBBVkFzc2V0V3JpdGVyOwogT0JKQ19D
TEFTUyBBVkFzc2V0V3JpdGVySW5wdXQ7CitPQkpDX0NMQVNTIFdlYkFWQXNzZXRXcml0ZXJEZWxl
Z2F0ZTsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNZWRpYVRpbWU7CkBAIC00Niw1MSArNTMs
NzIgQEAgY2xhc3MgTWVkaWFUaW1lOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcjsKIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247
CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRh
OworY2xhc3MgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOwogCi1jbGFzcyBXRUJDT1JFX0VY
UE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6
TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4g
eworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdURjo6
RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXIsIFdlYWtQdHJGYWN0b3J5SW5pdGlhbGl6YXRpb246OkVhZ2VyPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4g
Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBhdWRpb1RyYWNrLCBjb25zdCBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdmlkZW9UcmFjayk7CiAgICAgc3RhdGljIFJlZlB0cjxN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0
aCwgaW50IGhlaWdodCk7CiAgICAgfk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCk7Ci0gICAg
Ci0gICAgYm9vbCBzZXR1cFdyaXRlcigpOwotICAgIGJvb2wgc2V0VmlkZW9JbnB1dChpbnQgd2lk
dGgsIGludCBoZWlnaHQpOwotICAgIGJvb2wgc2V0QXVkaW9JbnB1dCgpOworCiAgICAgdm9pZCBh
cHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CiAgICAgdm9pZCBhcHBl
bmRBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAg
dm9pZCBzdG9wUmVjb3JkaW5nKCk7CiAgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJik7CiAKKyAgICB2b2lkIGFwcGVuZERh
dGEoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmREYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworCiBwcml2YXRlOgotICAgIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJl
dGFpblB0cjxBVkFzc2V0V3JpdGVyPiYmLCBTdHJpbmcmJiBwYXRoKTsKKyAgICBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcihib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKTsKICAgICB2b2lk
IGNsZWFyKCk7CiAKLSAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7Ci0gICAg
UmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV92aWRlb0lucHV0OwotICAgIFJldGFpblB0
cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fYXVkaW9JbnB1dDsKLQotICAgIFN0cmluZyBtX3BhdGg7
Ci0gICAgTG9jayBtX3ZpZGVvTG9jazsKLSAgICBMb2NrIG1fYXVkaW9Mb2NrOwotICAgIEJpbmFy
eVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmU7Ci0gICAgQmluYXJ5U2VtYXBob3Jl
IG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlOwotICAgIEJpbmFyeVNlbWFwaG9yZSBtX2Zp
bmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZTsKKyAgICBib29sIGluaXRpYWxpemUoKTsKKworICAg
IHN0YXRpYyB2b2lkIGNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBD
TUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkQXVk
aW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7
CisKKyAgICB2b2lkIHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICB2b2lkIGFwcGVuZENvbXByZXNz
ZWRTYW1wbGVCdWZmZXJzKCk7CisKKyAgICBib29sIGFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBs
ZUJ1ZmZlcigpOworICAgIGJvb2wgYXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKCk7
CisKKyAgICB2b2lkIHByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCk7Cisg
ICAgdm9pZCBwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpOworCisgICAg
dm9pZCBmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAgICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0
aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKLSAgICBib29s
IG1faXNGaXJzdEF1ZGlvU2FtcGxlIHsgdHJ1ZSB9OwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9h
dWRpb1B1bGxRdWV1ZTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fdmlkZW9QdWxsUXVldWU7Ci0g
ICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV92aWRlb0J1ZmZlclBvb2w7
Ci0gICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV9hdWRpb0J1ZmZlclBv
b2w7CisKKyAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBib29s
IG1faXNTdG9wcGluZyB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+IG1f
ZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBib29sIG1faGFzQXVkaW87CisgICAg
Ym9vbCBtX2hhc1ZpZGVvOworCisgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+
IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKKyAgICBSZXRhaW5QdHI8QVZB
c3NldFdyaXRlcklucHV0PiBtX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dDsKKworICAgIFJldGFpblB0
cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb247CisgICAg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV92aWRlb0NvbXBy
ZXNzb3I7CisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV92aWRlb0Fzc2V0V3Jp
dGVySW5wdXQ7CisgICAgQ01UaW1lIG1fbGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZTsKKyAgICBD
TVRpbWUgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWU7CisgICAgYm9vbCBtX2hhc0VuY29kZWRWaWRl
b1NhbXBsZXMgeyBmYWxzZSB9OworCisgICAgUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxl
Z2F0ZT4gbV93cml0ZXJEZWxlZ2F0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggMjMzNTRmNDc4NGRl
MDkyZjA0ODdjMTg1NGZjNWIyNmE1ZTIyMTFhYy4uMDA1ZWViMzc4MmVmYmNmYmJkNzliMjVmY2Y3
NjMzOWZhOTIzNWM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMjYsMTExICsyNiwxMjggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCiAKLSNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCisjaW5jbHVkZSAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCiAjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgog
I2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9B
VkFzc2V0V3JpdGVyLmg+CiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJJbnB1
dC5oPgorI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyX1ByaXZhdGUuaD4KKyNp
bmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2luY2x1
ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHd0Zi9CbG9ja1B0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKICNpbXBvcnQgPHBh
bC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCi0jdW5kZWYgQVZFbmNvZGVyQml0UmF0
ZUtleQotI2RlZmluZSBBVkVuY29kZXJCaXRSYXRlS2V5IGdldEFWRW5jb2RlckJpdFJhdGVLZXlX
aXRoRmFsbGJhY2soKQotI3VuZGVmIEFWRm9ybWF0SURLZXkKLSNkZWZpbmUgQVZGb3JtYXRJREtl
eSBnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBBVk51bWJlck9mQ2hhbm5l
bHNLZXkKLSNkZWZpbmUgQVZOdW1iZXJPZkNoYW5uZWxzS2V5IGdldEFWTnVtYmVyT2ZDaGFubmVs
c0tleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZTYW1wbGVSYXRlS2V5Ci0jZGVmaW5lIEFWU2Ft
cGxlUmF0ZUtleSBnZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJhY2soKQorQGludGVyZmFjZSBX
ZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgOiBOU09iamVjdCA8QVZBc3NldFdyaXRlckRlbGVnYXRl
PiB7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gbV93
cml0ZXI7Cit9CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqKXdyaXRlcjsKKy0g
KHZvaWQpY2xvc2U7CistICh2b2lkKWZpbmlzaDsKIAotdXNpbmcgbmFtZXNwYWNlIFBBTDsKK0Bl
bmQKIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKK0Bp
bXBsZW1lbnRhdGlvbiBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgeworfTsKKworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoV3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciopd3JpdGVyCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJ
REtleSgpKQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURL
ZXkoKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07CisgICAgaWYgKHNlbGYpCisgICAgICAgIHNlbGYtPm1fd3JpdGVyID0gbWFrZVdlYWtQdHIo
d3JpdGVyKTsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQg
QVZGb3JtYXRJREtleSIpOwotICAgIHJldHVybiBAIkFWRm9ybWF0SURLZXkiOworICAgIHJldHVy
biBzZWxmOwogfQogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdp
dGhGYWxsYmFjaygpCistICh2b2lkKWRlYWxsb2MKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FW
Rm91bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5lbHNLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6
Z2V0X0FWRm91bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5lbHNLZXkoKTsKLQotICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZOdW1iZXJPZkNoYW5uZWxzS2V5Iik7
Ci0gICAgcmV0dXJuIEAiQVZOdW1iZXJPZkNoYW5uZWxzS2V5IjsKKyAgICBbc3VwZXIgZGVhbGxv
Y107CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNr
KCkKKy0gKHZvaWQpYXNzZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQ
cm9kdWNlRnJhZ21lbnRlZEhlYWRlckRhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRIZWFkZXJEYXRh
CiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkp
Ci0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCk7
CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgp
KSB7CisgICAgICAgIGlmIChhdXRvIHNpemUgPSBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3Ro
XSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFp
blB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRI
ZWFkZXJEYXRhIGJ5dGVzXSksIHNpemUpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlm
IChwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlcikKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVk
U2VsZi0+bV93cml0ZXItPmFwcGVuZERhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWU2FtcGxlUmF0ZUtleSIpOwotICAgIHJl
dHVybiBAIkFWU2FtcGxlUmF0ZUtleSI7CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dy
aXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFk
ZXJEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkSGVhZGVyRGF0YSBsZW5ndGhdKTsKIH0KIAotc3Rh
dGljIE5TU3RyaW5nICpnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZv
aWQpYXNzZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQcm9kdWNlRnJh
Z21lbnRlZE1lZGlhRGF0YTooTlNEYXRhICopZnJhZ21lbnRlZE1lZGlhRGF0YSBmcmFnbWVudGVk
TWVkaWFEYXRhUmVwb3J0OihBVkZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQgKilmcmFnbWVudGVk
TWVkaWFEYXRhUmVwb3J0CiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZF
bmNvZGVyQml0UmF0ZUtleSgpKQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9u
X0FWRW5jb2RlckJpdFJhdGVLZXkoKTsKKyAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0ZXIpOwor
ICAgIFVOVVNFRF9QQVJBTShmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0KTsKKyAgICBpZiAoIWlz
TWFpblRocmVhZCgpKSB7CisgICAgICAgIGlmIChhdXRvIHNpemUgPSBbZnJhZ21lbnRlZE1lZGlh
RGF0YSBsZW5ndGhdKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4oc2VsZiksIGJ1ZmZlciA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihb
ZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAg
IHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyLT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkVuY29kZXJCaXRSYXRl
S2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZFbmNvZGVyQml0UmF0ZUtleSI7CisgICAgaWYgKG1fd3Jp
dGVyKQorICAgICAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oW2ZyYWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVu
Z3RoXSk7CiB9CiAKLVJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSog
YXVkaW9UcmFjaywgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHZpZGVvVHJhY2spCist
ICh2b2lkKWNsb3NlCiB7Ci0gICAgaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKLSAgICBpZiAo
dmlkZW9UcmFjaykgewotICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IHZpZGVvVHJhY2stPnNldHRp
bmdzKCk7Ci0gICAgICAgIHdpZHRoID0gc2V0dGluZ3Mud2lkdGgoKTsKLSAgICAgICAgaGVpZ2h0
ID0gc2V0dGluZ3MuaGVpZ2h0KCk7Ci0gICAgfQotICAgIHJldHVybiBjcmVhdGUoISFhdWRpb1Ry
YWNrLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBtX3dyaXRlciA9IG51bGxwdHI7CiB9CiAKLVJlZlB0
cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCistICh2b2lkKWZp
bmlzaAogewotICAgIE5TU3RyaW5nICpkaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkoQCJ2aWRlb3MiKTsKLSAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIi8lbGxkLm1wNCIsIENNQ2xvY2tHZXRUaW1lKENNQ2xv
Y2tHZXRIb3N0VGltZUNsb2NrKCkpLnZhbHVlXTsKLSAgICBOU1N0cmluZyAqcGF0aCA9IFtkaXJl
Y3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6ZmlsZW5hbWVdOworICAgIG1fd3JpdGVyID0g
bnVsbHB0cjsKK30KIAotICAgIE5TVVJMICpvdXRwdXRVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOnBhdGhdOwotICAgIFN0cmluZyBmaWxlUGF0aCA9IFtwYXRoIFVURjhTdHJpbmddOwotICAg
IE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIGF1dG8gYXZBc3NldFdyaXRlciA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0aFVSTDpvdXRwdXRVUkwg
ZmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOwotICAgIGlmIChlcnJvcikg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0
V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpZXJyb3Iu
Y29kZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KK0BlbmQKIAotICAgIGF1dG8g
d3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihXVEZNb3Zl
KGF2QXNzZXRXcml0ZXIpLCBXVEZNb3ZlKGZpbGVQYXRoKSkpOworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit1c2luZyBuYW1lc3BhY2UgUEFMOwogCi0gICAgaWYgKGhhc0F1ZGlvICYmICF3cml0ZXIt
PnNldEF1ZGlvSW5wdXQoKSkKK1JlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpCit7CisgICAgYXV0byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKGhhc0F1ZGlvLCB3aWR0aCAmJiBoZWlnaHQpKTsKKyAgICBpZiAo
IXdyaXRlci0+aW5pdGlhbGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gd3JpdGVyOworfQogCi0gICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewotICAgICAgICBpZiAo
IXdyaXRlci0+c2V0VmlkZW9JbnB1dCh3aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBy
ZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQgKm1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKQoreworICAgIGF1dG8gKndyaXRlciA9
IHN0YXRpY19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKj4obWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIpOworICAgIHdyaXRlci0+cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBs
ZUJ1ZmZlcnMoKTsKK30KIAotICAgIHJldHVybiBXVEZNb3ZlKHdyaXRlcik7Cit2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFj
ayh2b2lkICptZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJU
b2tlbikKK3sKKyAgICBhdXRvICp3cml0ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcio+KG1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKTsKKyAgICB3cml0ZXItPnBy
b2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCk7CiB9CiAKLU1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRhaW5QdHI8QVZB
c3NldFdyaXRlcj4mJiBhdkFzc2V0V3JpdGVyLCBTdHJpbmcmJiBmaWxlUGF0aCkKLSAgICA6IG1f
d3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRlcikpCi0gICAgLCBtX3BhdGgoV1RGTW92ZShmaWxl
UGF0aCkpCitNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbykKKyAgICA6IG1faGFzQXVkaW8oaGFz
QXVkaW8pCisgICAgLCBtX2hhc1ZpZGVvKGhhc1ZpZGVvKQogewogfQogCkBAIC0xMzksMTQwICsx
NTYsMjI5IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoKQogICAgIGNsZWFyKCk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNsZWFyKCkKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmluaXRpYWxp
emUoKQogewotICAgIGlmIChtX3ZpZGVvSW5wdXQpIHsKLSAgICAgICAgbV92aWRlb0lucHV0LmNs
ZWFyKCk7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV92aWRlb1B1bGxRdWV1ZSk7CisgICAg
TlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgbV93cml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
QVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhGaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQg
ZXJyb3I6JmVycm9yXSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdp
dGggZXJyb3IgY29kZSAlbGQiLCAobG9uZyllcnJvci5jb2RlKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICBpZiAobV9hdWRpb0lucHV0KSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1
dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fYXVkaW9QdWxsUXVldWUpOwor
CisgICAgbV93cml0ZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJBVkFzc2V0V3JpdGVyRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoV3JpdGVyOiB0aGlzXSk7CisgICAgW21fd3JpdGVyLmdldCgpIHNl
dERlbGVnYXRlOm1fd3JpdGVyRGVsZWdhdGUuZ2V0KCldOworCisgICAgaWYgKG1faGFzQXVkaW8p
IHsKKyAgICAgICAgbV9hdWRpb0NvbXByZXNzb3IgPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmNyZWF0ZShjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7Cisg
ICAgICAgIGlmICghbV9hdWRpb0NvbXByZXNzb3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIGlmIChtX3dyaXRlcikKLSAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKyAg
ICBpZiAobV9oYXNWaWRlbykgeworICAgICAgICBtX3ZpZGVvQ29tcHJlc3NvciA9IFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQsIGNvbXBy
ZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgaWYgKCFtX3Zp
ZGVvQ29tcHJlc3NvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOwotICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpCit7Cisg
ICAgQVNTRVJUKG1faGFzVmlkZW8pOworICAgIGlmICghbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9u
KSB7CisgICAgICAgIG1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0
Rm9ybWF0RGVzY3JpcHRpb24obV92aWRlb0NvbXByZXNzb3ItPmdldE91dHB1dFNhbXBsZUJ1ZmZl
cigpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgdGhpc10geworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChtX2hhc0F1ZGlvICYmICFtX2F1ZGlvRm9ybWF0
RGVzY3JpcHRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFy
dEFzc2V0V3JpdGVyKCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRl
ZFdyaXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVm
ZmVycygpOwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRWaWRlb0lu
cHV0KGludCB3aWR0aCwgaW50IGhlaWdodCkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCkKIHsKLSAgICBBU1NF
UlQoIW1fdmlkZW9JbnB1dCk7Ci0gICAgCi0gICAgTlNEaWN0aW9uYXJ5ICpjb21wcmVzc2lvblBy
b3BlcnRpZXMgPSBAewotICAgICAgICBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgOiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDp3aWR0aCAqIGhlaWdodCAqIDEyXSwKLSAgICAgICAgQVZWaWRlb0V4
cGVjdGVkU291cmNlRnJhbWVSYXRlS2V5IDogQCgzMCksCi0gICAgICAgIEFWVmlkZW9NYXhLZXlG
cmFtZUludGVydmFsS2V5IDogQCgxMjApLAotICAgICAgICBBVlZpZGVvUHJvZmlsZUxldmVsS2V5
IDogQVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xldmVsCi0gICAgfTsKLQotICAgIE5T
RGljdGlvbmFyeSAqdmlkZW9TZXR0aW5ncyA9IEB7Ci0gICAgICAgIEFWVmlkZW9Db2RlY0tleTog
QVZWaWRlb0NvZGVjSDI2NCwKLSAgICAgICAgQVZWaWRlb1dpZHRoS2V5OiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDp3aWR0aF0sCi0gICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6IFtOU051bWJlciBu
dW1iZXJXaXRoSW50OmhlaWdodF0sCi0gICAgICAgIEFWVmlkZW9Db21wcmVzc2lvblByb3BlcnRp
ZXNLZXk6IGNvbXByZXNzaW9uUHJvcGVydGllcwotICAgIH07CisgICAgQVNTRVJUKG1faGFzQXVk
aW8pOworICAgIGlmICghbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIG1fYXVk
aW9Gb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24o
bV9hdWRpb0NvbXByZXNzb3ItPmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpKTsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10geworICAg
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChtX2hhc1ZpZGVvICYmICFtX3ZpZGVvRm9ybWF0RGVzY3Jp
cHRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFydEFzc2V0
V3JpdGVyKCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRp
bmcpCisgICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygp
OworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVy
KCkKK3sKKyAgICBpZiAobV9oYXNWaWRlbykgeworICAgICAgICBtX3ZpZGVvQXNzZXRXcml0ZXJJ
bnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGlu
aXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6bmlsIHNvdXJj
ZUZvcm1hdEhpbnQ6bV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7CisgICAgICAgIFtt
X3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVl
XTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV92aWRlb0Fzc2V0
V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZh
aWxlZCBjYW5BZGRJbnB1dCBmb3IgdmlkZW8iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVy
SW5wdXQuZ2V0KCldOworICAgIH0KICAgICAKLSAgICBtX3ZpZGVvSW5wdXQgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpB
Vk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOnZpZGVvU2V0dGluZ3Mgc291cmNlRm9ybWF0
SGludDpuaWxdKTsKLSAgICBbbV92aWRlb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxU
aW1lOnRydWVdOworICAgIGlmIChtX2hhc0F1ZGlvKSB7CisgICAgICAgIG1fYXVkaW9Bc3NldFdy
aXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNl
KCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczpuaWwg
c291cmNlRm9ybWF0SGludDptX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCldKTsKKyAgICAg
ICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1l
OnRydWVdOworICAgICAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBjYW5BZGRJbnB1dDptX2F1ZGlv
QXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0
ZXIgZmFpbGVkIGNhbkFkZElucHV0IGZvciBhdWRpbyIpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIFttX3dyaXRlci5nZXQoKSBhZGRJbnB1dDptX2F1ZGlvQXNzZXRX
cml0ZXJJbnB1dC5nZXQoKV07CisgICAgfQogICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFk
ZElucHV0Om1fdmlkZW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV92aWRlb0lucHV0ID0gbnVs
bHB0cjsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgdmlkZW8g
aW5wdXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBzdGFydFdyaXRpbmdd
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIHN0YXJ0V3JpdGluZyIpOwor
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFttX3dyaXRlciBhZGRJbnB1dDptX3ZpZGVvSW5w
dXQuZ2V0KCldOwotICAgIG1fdmlkZW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUo
IldlYkNvcmVWaWRlb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCk7CisKKyAgICBbbV93cml0ZXIuZ2V0KCkgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOmtD
TVRpbWVaZXJvXTsKKworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisKKyAg
ICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKK30KKworYm9vbCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKCkKK3sKKyAgICBp
ZiAoIW1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IVttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gYnVmZmVyID0gbV9hdWRpb0NvbXByZXNzb3It
PnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNh
bXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRBdWRpb0lucHV0KCkKK2Jvb2wgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpCiB7
Ci0gICAgQVNTRVJUKCFtX2F1ZGlvSW5wdXQpOworICAgIGlmICghbV92aWRlb0NvbXByZXNzb3Ip
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5TRGljdGlvbmFyeSAqYXVkaW9TZXR0aW5n
cyA9IEB7Ci0gICAgICAgIEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4MDAwKSwKLSAgICAgICAg
QVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAotICAgICAgICBBVk51bWJl
ck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAotICAgICAgICBBVlNhbXBsZVJhdGVLZXkgOiBAKDIyMDUw
KQotICAgIH07CisgICAgaWYgKCFbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1v
cmVNZWRpYURhdGFdKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2F1ZGlvSW5wdXQg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0
aE1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdzOmF1ZGlvU2V0dGluZ3Mg
c291cmNlRm9ybWF0SGludDpuaWxdKTsKLSAgICBbbV9hdWRpb0lucHV0IHNldEV4cGVjdHNNZWRp
YURhdGFJblJlYWxUaW1lOnRydWVdOwotICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElu
cHV0Om1fYXVkaW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV9hdWRpb0lucHV0ID0gbnVsbHB0
cjsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgYXVkaW8gaW5w
dXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7CisgICAgYXV0
byBidWZmZXIgPSBtX3ZpZGVvQ29tcHJlc3Nvci0+dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOwor
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFttX3dy
aXRlciBhZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldOwotICAgIG1fYXVkaW9QdWxsUXVldWUg
PSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVBdWRpb1JlY29yZGluZ1B1bGxCdWZmZXJR
dWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisKKyAgICBtX2xhc3RWaWRlb1ByZXNlbnRh
dGlvblRpbWUgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIu
Z2V0KCkpOworICAgIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lID0gQ01TYW1wbGVCdWZmZXJHZXRE
ZWNvZGVUaW1lU3RhbXAoYnVmZmVyLmdldCgpKTsKKyAgICBtX2hhc0VuY29kZWRWaWRlb1NhbXBs
ZXMgPSB0cnVlOworCisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNh
bXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygp
Cit7CisgICAgd2hpbGUgKGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpIHx8IGFw
cGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpKSB7IH07Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3Jp
dGVySW5wdXQgKmFzc2V0V3JpdGVySW5wdXQsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAs
IENNVGltZSBkZWNvZGluZ1RpbWVTdGFtcCkKK3sKKyAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGlt
aW5nSW5mbyA9IHsga0NNVGltZUludmFsaWQsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZGVjb2Rp
bmdUaW1lU3RhbXB9OworCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyID0gTlVMTDsKKyAg
ICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
TlVMTCwgdHJ1ZSwgTlVMTCwgTlVMTCwgTlVMTCwgMCwgMSwgJnRpbWluZ0luZm8sIDAsIE5VTEws
ICZidWZmZXIpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZEVuZHNQcmV2aW91
c1NhbXBsZUR1cmF0aW9uTWFya2VyIGZhaWxlZCBDTVNhbXBsZUJ1ZmZlckNyZWF0ZSB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gc2FtcGxlQnVmZmVy
ID0gYWRvcHRDRihidWZmZXIpOworCisgICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlci5n
ZXQoKSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJh
dGlvbiwga0NGQm9vbGVhblRydWUsIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7
CisgICAgaWYgKCFbYXNzZXRXcml0ZXJJbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6c2FtcGxlQnVm
ZmVyLmdldCgpXSkKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRTYW1wbGVCdWZmZXIgdG8gd3JpdGVyIGlucHV0
IGZhaWxlZCIpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRF
bmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2hhc0VuY29kZWRWaWRlb1NhbXBs
ZXMpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFE
YXRhXSkgeworICAgICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlciht
X3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1l
LCBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2NrID0gbWFrZUJsb2NrUHRy
KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAod2Vh
a1RoaXMpIHsKKyAgICAgICAgICAgIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFy
a2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpLCBtX2xhc3RWaWRlb1ByZXNlbnRhdGlv
blRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsKKyAgICAgICAgICAgIFttX3ZpZGVvQXNz
ZXRXcml0ZXJJbnB1dCBtYXJrQXNGaW5pc2hlZF07CisgICAgICAgIH0KKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKyAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgcmVx
dWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1
c2luZ0Jsb2NrOmJsb2NrLmdldCgpXTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1
ZmZlcnMoKTsKKyAgICBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNsZWFyKCkKK3sKKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLmNs
ZWFyKCk7CisKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKKwogc3RhdGljIGlubGluZSBSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFt
cChDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikKIHsKICAgICBDTVRpbWUgc3RhcnRU
aW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7CiAgICAgQ01J
dGVtQ291bnQgY291bnQgPSAwOwogICAgIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5m
b0FycmF5KG9yaWdpbmFsQnVmZmVyLCAwLCBuaWwsICZjb3VudCk7Ci0gICAgCisKICAgICBWZWN0
b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3VudCk7CiAgICAgQ01TYW1wbGVCdWZm
ZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5m
by5kYXRhKCksICZjb3VudCk7Ci0gICAgCi0gICAgZm9yIChDTUl0ZW1Db3VudCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKKworICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK
ICAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1wID0ga0NNVGltZUludmFsaWQ7CiAg
ICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IHN0YXJ0VGltZTsKICAg
ICB9Ci0gICAgCisKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdCdWZmZXIgPSBudWxscHRyOwot
ICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgp
LCAmbmV3QnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTVNh
bXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9y
aWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAmbmV3QnVmZmVyKSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyIENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1cm4g
YWRvcHRDRihuZXdCdWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIp
CiB7Ci0gICAgQVNTRVJUKG1fdmlkZW9JbnB1dCk7Ci0gICAgaWYgKG1faXNTdG9wcGVkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpIHsKLSAgICAgICAg
aWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewotICAgICAgICAgICAgbV9pc1N0b3BwZWQg
PSB0cnVlOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVh
dGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChs
b25nKVttX3dyaXRlciBlcnJvcl0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dldFRpbWUo
Q01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5n
ID0gdHJ1ZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBwcm90
ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fdmlkZW9JbnB1dCByZXF1ZXN0TWVkaWFEYXRh
V2hlblJlYWR5T25RdWV1ZTptX3ZpZGVvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRh
XSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdmlkZW9C
dWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBtX3ZpZGVvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsKLSAg
ICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAgICAgICAgICAgICBpZiAo
IVttX3ZpZGVvSW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV0pCi0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAg
ICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgW21fdmlkZW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAg
ICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH1dOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gYnVmZmVy
V2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNh
bXBsZUJ1ZmZlcik7Ci0gICAgaWYgKCFidWZmZXJXaXRoQ3VycmVudFRpbWUpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOwotICAgIG1f
dmlkZW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcldpdGhDdXJyZW50VGltZSkpOwor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHNldCB0aGUgdGltZXN0YW1wcyBpZiB0aGV5IGFy
ZSBhbHJlYWR5IHNldC4KKyAgICBpZiAoYXV0byBidWZmZXJXaXRoQ3VycmVudFRpbWUgPSBjb3B5
U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSkKKyAgICAgICAg
bV92aWRlb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihidWZmZXJXaXRoQ3VycmVudFRpbWUu
Z2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9u
UmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uKQpAQCAtMjgwLDY4ICszODYsMzkgQEAgc3RhdGljIGlubGluZSBS
ZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbihjb24KICAgICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25zdCBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9u
KCkuZGVzY3JpcHRpb24pOwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0ID0gbnVs
bHB0cjsKICAgICBhdXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24sIDAsIE5VTEwsIDAsIE5VTEwsIE5V
TEwsICZmb3JtYXQpOwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihmb3Jt
YXQpOwogfQogCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3Jl
YXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZm9ybWF0LCBzaXplX3Qgc2FtcGxlQ291bnQpCi17Ci0gICAgQ01UaW1lIHN0YXJ0
VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOwotICAgIENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgYXV0byBlcnJvciA9
IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9j
YXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQsIHNhbXBsZUNvdW50
LCBzdGFydFRpbWUsIE5VTEwsICZzYW1wbGVCdWZmZXIpOwotICAgIGlmIChlcnJvcikKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKLX0K
LQotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZm
ZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVD
b3VudCkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVB
dWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0
aW1lLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7Ci0gICAgQVNTRVJUKG1fYXVkaW9JbnB1dCk7Ci0g
ICAgaWYgKCghbV9oYXNTdGFydGVkV3JpdGluZyAmJiBtX3ZpZGVvSW5wdXQpIHx8IG1faXNTdG9w
cGVkKQotICAgICAgICByZXR1cm47CiAgICAgYXV0byBmb3JtYXQgPSBjcmVhdGVBdWRpb0Zvcm1h
dERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKICAgICBpZiAoIWZvcm1hdCkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmIChtX2lzRmlyc3RBdWRpb1NhbXBsZSkgewotICAgICAgICBpZiAoIW1fdmlk
ZW9JbnB1dCkgewotICAgICAgICAgICAgLy8gYXVkaW8tb25seSByZWNvcmRpbmcuCi0gICAgICAg
ICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7Ci0gICAgICAgICAgICAgICAgbV9p
c1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dl
dFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICAgICAgbV9oYXNTdGFy
dGVkV3JpdGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1w
bGUgPSBmYWxzZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBw
cm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fYXVkaW9JbnB1dCByZXF1ZXN0TWVkaWFE
YXRhV2hlblJlYWR5T25RdWV1ZTptX2F1ZGlvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBkbyB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV9hdWRpb0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFE
YXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXVk
aW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsK
LSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAgICAgICAgICAgICBb
bV9hdWRpb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwotICAgICAgICAg
ICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV9hdWRp
b0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBt
YXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1h
cGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxw
dHI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0
RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxM
LCBmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50LCB0b0NNVGltZSh0aW1lKSwgTlVMTCwgJnNhbXBs
ZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgY3JlYXRlQXVkaW9TYW1wbGVC
dWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKHNh
bXBsZUJ1ZmZlcik7CiAKLSAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxl
QnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50KTsK
LSAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gZXJyb3Ig
PSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0KHNhbXBsZUJ1
ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
ZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkpOwotICAgIGlmIChlcnJv
cikKLSAgICAgICAgcmV0dXJuOworICAgIGVycm9yID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVm
ZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdChidWZmZXIuZ2V0KCksIGtDRkFsbG9jYXRvckRlZmF1bHQs
IGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0
YSkubGlzdCgpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTVNhbXBsZUJ1ZmZlclNl
dERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KIAot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb0xvY2spOwotICAgIG1fYXVkaW9CdWZm
ZXJQb29sLmFwcGVuZChXVEZNb3ZlKHNhbXBsZUJ1ZmZlcikpOwordm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRp
b0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBj
b25zdCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgc2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIGlm
IChhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGRhdGEsIGRlc2Ny
aXB0aW9uLCB0aW1lLCBzYW1wbGVDb3VudCkpCisgICAgICAgIG1fYXVkaW9Db21wcmVzc29yLT5h
ZGRTYW1wbGVCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKTsKIH0KIAogdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCkBAIC0zNTAsMzUgKzQyNyw0MCBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworCisgICAgaWYgKG1fdmlkZW9Db21w
cmVzc29yKQorICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+ZmluaXNoKCk7CisgICAgaWYgKG1f
YXVkaW9Db21wcmVzc29yKQorICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nvci0+ZmluaXNoKCk7CisK
ICAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NF
UlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZBc3NldFdyaXRlclN0YXR1c1dyaXRpbmcpOwotICAg
IGlmIChtX3ZpZGVvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3Jl
LndhaXQoKTsKLQotICAgIGlmIChtX2F1ZGlvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGlu
Z0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKIAogICAgIG1faXNTdG9wcGluZyA9IHRydWU7Ci0gICAg
W21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtQ
dHIgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3ZlKHdlYWtQdHIpLCBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpXSgpIG11dGFibGUgewotICAg
ICAgICAgICAgaWYgKCF3ZWFrUHRyKQotICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAobV9mZXRjaERhdGFD
b21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1
ZmZlcnMoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
IG1faXNTdG9wcGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0g
ZmFsc2U7Ci0gICAgICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IHRydWU7Ci0gICAgICAg
ICAgICBjbGVhcigpOwotICAgICAgICB9KTsKLSAgICAgICAgbV9maW5pc2hXcml0aW5nU2VtYXBo
b3JlLnNpZ25hbCgpOwotICAgIH1dOwotICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZS53YWl0
KCk7CisgICAgICAgIFttX3dyaXRlciBmbHVzaF07CisgICAgICAgIFttX3dyaXRlciBmaW5pc2hX
cml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
d2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobV9mZXRj
aERhdGFDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFdURk1vdmUobV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgbV9mZXRjaERhdGFDb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbV9oYXNT
dGFydGVkV3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfV07CisgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMzkyLDYgKzQ3NCwyNCBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8U2hhcmVkQgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVm
ZmVyKSk7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3Zv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gV1RG
TW92ZShidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZGF0YS0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NDE0ZGJiNTQ5Y2Y1YTJlNTE1N2U5MjBjNmM1YWU0YmEwNjBlNjgwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikK
KworI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbmNsdWRlIDxWaWRlb1Rvb2xi
b3gvVlRFcnJvcnMuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNN
U2FtcGxlQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRDb21wcmVzc2lvblNlc3Np
b24qICBWVENvbXByZXNzaW9uU2Vzc2lvblJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yPiBjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRy
aWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworICAgIH5WaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IoKTsKKworICAgIHZvaWQgZmluaXNoKCk7CisgICAgdm9pZCBhZGRTYW1w
bGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOworICAgIENNU2FtcGxlQnVmZmVyUmVmIGdldE91
dHB1dFNhbXBsZUJ1ZmZlcigpOworICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gdGFr
ZU91dHB1dFNhbXBsZUJ1ZmZlcigpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlKTsKKworICAgIGJvb2wgaW5pdGlh
bGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7
CisKKyAgICB2b2lkIHByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOworICAg
IGJvb2wgaW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYp
OworCisgICAgc3RhdGljIHZvaWQgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNv
biwgdm9pZCosIE9TU3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJSZWYp
OworCisgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgUmV0
YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CisgICAgUmV0YWlu
UHRyPFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmPiBtX3Z0U2Vzc2lvbjsKKworICAgIGJvb2wgbV9p
c0VuY29kaW5nIHsgZmFsc2UgfTsKKworICAgIENNVmlkZW9Db2RlY1R5cGUgbV9vdXRwdXRDb2Rl
Y1R5cGU7CisgICAgZmxvYXQgbV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24geyAyLjAgfTsK
KyAgICB1bnNpZ25lZCBtX2V4cGVjdGVkRnJhbWVSYXRlIHsgMzAgfTsKK307CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIwOGZlNDMyOTVlZjUyYTY3OTBmZjFkZWNhY2E2ZjMwZDliYmJhZmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElP
TikKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVNZWRpYS5o
PgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxWaWRlb1Rvb2xi
b3gvVlRDb21wcmVzc2lvblNlc3Npb24uaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgor
CisjaW1wb3J0IDxwYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yPiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0
ZShDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJD
YWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgYXV0byBjb21w
cmVzc29yID0gc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4obmV3
IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihvdXRwdXRDb2RlY1R5cGUpKTsKKyAgICBpZiAo
IWNvbXByZXNzb3ItPmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0KSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbXByZXNzb3I7Cit9CisKK1ZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKENNVmlkZW9D
b2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlKQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsg
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSB9CisgICAgLCBtX291dHB1dENvZGVjVHlwZSB7
IG91dHB1dENvZGVjVHlwZSB9Cit7Cit9CisKK1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
flZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCit7CisgICAgaWYgKG1fc2VyaWFsRGlzcGF0
Y2hRdWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVldWUp
OworfQorCitib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShDTUJ1
ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkK
K3sKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRv
IGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1
ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZvdXRwdXRC
dWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgcXVldWUg
JWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9vdXRwdXRC
dWZmZXJRdWV1ZSA9IG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIENNQnVmZmVyUXVldWVJbnN0YWxs
VHJpZ2dlcihtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBjYWxsYmFjaywgY2FsbGJhY2tPYmpl
Y3QsIGtDTUJ1ZmZlclF1ZXVlVHJpZ2dlcl9XaGVuRGF0YUJlY29tZXNSZWFkeSwga0NNVGltZVpl
cm8sIE5VTEwpOworCisgICAgbV9pc0VuY29kaW5nID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCit7CisgICAg
ZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGF1dG8gZXJy
b3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzKG1fdnRTZXNzaW9uLmdldCgp
LCBrQ01UaW1lSW52YWxpZCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBN
ZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vz
c2lvbkNvbXBsZXRlRnJhbWVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgICAgIGVy
cm9yID0gQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQo
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgICAgICBtX2lzRW5jb2RpbmcgPSBmYWxzZTsKKyAg
ICB9KTsKK30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnZpZGVvQ29tcHJl
c3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cyBzdGF0dXMsIFZURW5j
b2RlSW5mb0ZsYWdzLCBDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUYoc3RhdHVzLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sgc3RhdHVzIGlzICVkIiwgc3RhdHVzKTsKKyAg
ICBpZiAoc3RhdHVzICE9IG5vRXJyKQorICAgICAgICByZXR1cm47CisKKyAgICBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgKmNvbXByZXNzb3IgPSBzdGF0aWNfY2FzdDxWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IqPihyZWZDb24pOworCisgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVl
dWVFbnF1ZXVlKGNvbXByZXNzb3ItPm1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7
CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVFbnF1ZXVlIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworfQorCitib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXBy
ZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRp
b24pCit7CisgICAgQ01WaWRlb0RpbWVuc2lvbnMgZGltZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworI2lmIFBMQVRGT1JN
KElPUykKKyAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJTcGVjaWZpY2F0aW9ucyA9IG5pbDsKKyNl
bHNlCisgICAgTlNEaWN0aW9uYXJ5ICplbmNvZGVyU3BlY2lmaWNhdGlvbnMgPSBAeyhfX2JyaWRn
ZSBOU1N0cmluZyAqKWtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVB
Y2NlbGVyYXRlZFZpZGVvRW5jb2RlcjpAWUVTfTsKKyNlbmRpZgorCisgICAgVlRDb21wcmVzc2lv
blNlc3Npb25SZWYgdnRTZXNzaW9uOworICAgIGF1dG8gZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vz
c2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNp
b25zLmhlaWdodCwgbV9vdXRwdXRDb2RlY1R5cGUsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
ZW5jb2RlclNwZWNpZmljYXRpb25zLCBOVUxMLCBOVUxMLCB2aWRlb0NvbXByZXNzaW9uQ2FsbGJh
Y2ssIHRoaXMsICZ2dFNlc3Npb24pOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENv
bXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAg
cmV0dXJuIE5POworICAgIH0KKyAgICBtX3Z0U2Vzc2lvbiA9IGFkb3B0Q0YodnRTZXNzaW9uKTsK
KworICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtW
VENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUsIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9SZWFsVGltZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICBlcnJvciA9IFZUU2Vzc2lv
blNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5
X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1fbWF4
S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJy
b3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNl
dFByb3BlcnR5IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1
cmF0aW9uIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgIGVycm9yID0gVlRTZXNzaW9uU2V0
UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhw
ZWN0ZWRGcmFtZVJhdGUsIChfX2JyaWRnZSBDRlR5cGVSZWYpQChtX2V4cGVjdGVkRnJhbWVSYXRl
KSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENvbXByZXNzaW9u
UHJvcGVydHlLZXlfRXhwZWN0ZWRGcmFtZVJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisK
KyAgICAvLyBGSVhNRTogU2V0IHZpZGVvIGNvbXByZXNzaW9uIHJhdGUuCisgICAgZXJyb3IgPSBW
VENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyhtX3Z0U2Vzc2lvbi5nZXQo
KSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2Rl
RnJhbWVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgcmV0dXJuIFlFUzsKK30KKwor
dm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIoQ01T
YW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGlmICghbV92dFNlc3Npb24pIHsKKyAgICAg
ICAgaWYgKCFpbml0Q29tcHJlc3Npb25TZXNzaW9uKENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVz
Y3JpcHRpb24oYnVmZmVyKSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIoYnVmZmVyKTsKKyAg
ICBhdXRvIHByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0
aW9uVGltZVN0YW1wKGJ1ZmZlcik7CisgICAgYXV0byBkdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVy
R2V0RHVyYXRpb24oYnVmZmVyKTsKKyAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Np
b25FbmNvZGVGcmFtZShtX3Z0U2Vzc2lvbi5nZXQoKSwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlv
blRpbWVTdGFtcCwgZHVyYXRpb24sIE5VTEwsIHRoaXMsIE5VTEwpOworICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVy
KENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFs
RGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgaWYgKCFtX2lzRW5jb2RpbmcpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihidWZmZXIpOworICAgIH0p
OworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6Omdl
dE91dHB1dFNhbXBsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZlclJlZiko
Y29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZUdldEhlYWQobV9vdXRwdXRCdWZmZXJRdWV1
ZS5nZXQoKSkpKTsKK30KKworUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVy
biBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJR
dWV1ZURlcXVldWVBbmRSZXRhaW4obV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Cit9CisK
K30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGE2Y2VlNTRjOTdjOTIxNWE2ODczZjRkY2IxMmJk
ZTQ3YzFkYzQwZWMuLmYzMTBmNDhlZDdlZGU1OGZlMmU1Yjc4NDY0ZjYyYzkwZTJkMDExNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTE0OSw2ICsxNDksNyBAQCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1c2VyTWVkaWFDYXB0dXJlTWFuYWdlcgog
ICAgIHJldHVybiAqbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OwogfQogCisjaWYgSEFW
RShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciYgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFSZWNvcmRlck1hbmFnZXIoKQogewogICAgIGlm
ICghbV9yZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcikKQEAgLTE1Niw2ICsxNTcsNyBAQCBSZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFS
ZWNvcmRlck1hbmFnZXIoKQogCiAgICAgcmV0dXJuICptX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyOwogfQorI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmF1ZGlvVHJhY2tSZW5kZXJlck1hbmFnZXIoKQpAQCAtMTc0LDcgKzE3Niw3IEBAIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnNhbXBsZUJ1ZmZlckRpCiAgICAgcmV0dXJuICptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXI7CiB9CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vICBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VC
UlRDKQogTGliV2ViUlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omxp
YldlYlJUQ0NvZGVjc1Byb3h5KCkKQEAgLTIwMyw2ICsyMDUsNyBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSQogICAgICAgICB1c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCkuZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tR1BVUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKyNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgbWVkaWFSZWNvcmRl
ck1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwogICAgICAgICByZXR1cm47CkBAIC0yMTEsNiArMjE0LDcgQEAgdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIEkKICAgICAgICAgbWVkaWFSZWNvcmRlck1hbmFnZXIoKS5kaWRSZWNlaXZlUmVt
b3RlTWVkaWFSZWNvcmRlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisjZW5kaWYgLy8gSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGF1
ZGlvVHJhY2tSZW5kZXJlck1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNz
KGNvbm5lY3Rpb24sIGRlY29kZXIpOwpAQCAtMjI4LDggKzIzMiw4IEBAIHZvaWQgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJCiAgICAgICAgIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKS5kaWRS
ZWNlaXZlTGF5ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKFZJREVPX1RSQUNLKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGxpYldlYlJUQ0NvZGVjc1Byb3h5KCkuZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IDJiOWJkMWY4ODdiYWRhZmE0ZWE1YzRiYTM0MTY5ZDhiOTc4ZmQ2MmQuLjc4NjYzYmNkYmEwNzMy
ZWZmNWIxMWI5NGM1ZGNhMjM4ODJlZTliODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNzksNyArNzksOSBAQCBw
cml2YXRlOgogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgdXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eSgpOworI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIFJlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyJiBtZWRpYVJlY29yZGVyTWFuYWdlcigpOworI2VuZGlmCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlciYgYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcigpOwogICAgIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIoKTsKQEAgLTEwMiw3ICsxMDQsOSBAQCBwcml2YXRlOgogICAgIFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PiBtX3Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdB
VEUpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyPiBtX3Jl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOworI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1hbmFnZXI+IG1fYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggY2IyNGRkYmYyNzlmYjI2NTk0
NmFhMTIxY2IwNzIyYjYyYjhjNmFmNy4uNTY4YzI4MDE3MThmZTkwYjhiZTA4MmZlYTM1ZWU3NTBk
NjNkZGI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZWNvcmRlci5oIgogCi0jaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNp
ZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUgIlNoYXJl
ZFJpbmdCdWZmZXJTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4K
QEAgLTEzNiw0ICsxMzYsNCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnN0b3BSZWNvcmRp
bmcoKQogCiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRF
UkRFTEVHQVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCBmZjVhODI5ODRmYjM5NjQxZWQxZTU2MTU0ODk4Zjk1
MjZjOWJkNTJhLi5hODNkYTMwNTUyZWI0MWVmOTU5NDRkYjNhYTUwNGZmY2EzZjY4MzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJNZWRp
YVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgpAQCAt
ODIsNCArODIsNCBAQCBwcml2YXRlOgogCiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmlu
CmluZGV4IDU0YmE2NGQ1NmZiZWEzMGZjYmIzOTZkYWQ1ZWEzZmMzMGM5OTVkZWUuLmNlMzJiNzA0
ZTdlYzhjNDc3YmUwNTFlMjBkN2QyN2FmMGM0ZjgyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVz
c2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZB
U1NFVFdSSVRFUkRFTEVHQVRFKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlY29yZGVyIE5v
dFJlZkNvdW50ZWQgewogICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyTWFuYWdlci5jcHAKaW5kZXggMzcwY2Q5YjM4NzU2OWE5OGU4NGUxNzgwOWYwODVkNjJi
M2I2ZTlkNi4uMDE5ZTRiODVmMGVlYmI2MjRlNTY5NTg4YTdhYWU0ODQyMTI1ODZkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oIgogCi0jaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmgKaW5kZXggNTQ3MWJiZDQ4NGRkOWIzZDBjOGVlM2RkNjExYzA1ZTkwZDAzNmM3Yy4uYWI4
MDFiYzExNGM0OTIzZWE5ZDc5MGY5MjNjNTJkZjQ5YWExMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJNZWRp
YVJlY29yZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMzg3YTQxMzYxY2Ri
ZDliN2VhZTJjMzM3MzY1MmE5OGY0OTM0ZTE3NC4uYzUxODQxMGNiNDlmYWRhNjg4ZDM3N2QxZDdh
MDZjZGUzYmFjNzk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKICMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRX
UklURVJERUxFR0FURSkKIAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIg
Tm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlUmVjb3JkZXIoV2ViS2l0OjpNZWRpYVJlY29yZGVy
SWRlbnRpZmllciBpZCwgYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSAtPiAo
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gY3JlYXRpb25FcnJvcikgQXN5bmMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgKaW5kZXggOWY5YjMwYzc2
MTYyM2RkOTQ4ZDI5YmUwZjM3ZjBhZDBmNDdlNWE5YS4uZTM4YzVkNmMwNWQwZGZhZjQyNjgxOTk1
YjllMDRmNGU3NjQ3ZjBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXNS
ZXBsaWVzLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4IGRkNDA5MTk4
OGMxMjY4OTc1YmI5NzkyZTgzMzdjNmUwNjUzN2YzYzguLjY3ZTNlZTY1MTNkOGZhNDNlODFlOGIy
MmM2NThkZjg5NjQwNzY4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0
ZS5oIgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FU
RSkKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXJNZXNzYWdlcy5oIgpAQCAtMTQ2LDQgKzE0Niw0IEBAIHZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGU6OnN0b3BSZWNvcmRpbmcoKQogCiB9CiAKLSNlbmRpZiAvLyBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVj
b3JkZXJQcml2YXRlLmgKaW5kZXggNmQ5ZmFiZTNlYTcyNDczZjQ1OTkwY2U4YWQxNzJkMGNkMDNh
ODEyNi4uZDgwZmNkN2YxOTg4OTc1MjVjOWVmZmM5MTc1N2QyMmZjMzIzZWZmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUg
Ik1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2UuaCIKQEAgLTczLDUgKzczLDUgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8gUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcm92aWRlci5jcHAKaW5kZXggYmNlNzc0YTg4MWRjZWM3OTQyNjM3OTY4NTUyZTNj
Y2M3YmIzNzQwYi4uZDk1OWM5MjVmZGQzYTIyMWEzN2IxYTM3MDdjNmRmMWFkMDJhMGU4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGU+IE1l
ZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoY29uc3QgTWVk
aWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCiB7Ci0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAg
aWYgKG1fdXNlR1BVUHJvY2VzcykKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFSZWNv
cmRlclByaXZhdGU+KHN0cmVhbSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjYmVjMjg1NDlmNTM1MDVjNDU5
YzQ1YWJiNGU4NGJjYTA0MjZhZDhiLi41M2IxM2ViY2VjMDk1YzU1NDI5ZjM4N2U1ZTIzNzk4YmZk
OTExYmY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDItMDQgIHlvdWVubiBmYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJE
ZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgIERpc2FibGUgdGVzdHMgb24gYWxsIHBsYXRmb3JtcyBl
eGNlcHQgdGhlIG9uZXMgc3VwcG9ydGluZyBBVkFzc2V0V3JpdGVyRGVsZWdhdGUuCisKKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRt
bDoKKyAgICAgICAgUmVtb3ZlIHdlYiBhdWRpbyBnZW5lcmF0aW9uIHNpbmNlIHRoZXJlIHNlZW1z
IHRvIGJlIHNvbWUgdW5zdGFiaWxpdHkgaW4gd2ViIGF1ZGlvIC0+IHN0cmVhbSAtPiBtZWRpYSBy
ZWNvcmRlci4KKyAgICAgICAgd2hpY2ggc2hvdWxkIGJlIGZpeGVkIGFzIGZvbGxvdy11cCBzcGVj
aWZpYyBwYXRjaGVzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTAyLTA0ICB5
b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYURldmljZXMg
c2hvdWxkIGhhbmRsZSBjaGFuZ2VzIG9mIGlmcmFtZSBhbGxvdyBhdHRyaWJ1dGUgdmFsdWUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDM2ZWYwNTRiYWY1NDkzNGNmNjA3ZGRlYjAwYmNkNmE5OGVmNDE2
ZDcuLjViN2JmYWJhNjgxYjYxMGQ5Y2FjOTBlZTQ5ZWE2YWM3ZDQ2M2I1ZmYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMzMyNiw3ICszMzI2LDEwIEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL2NvcHktdGV4LWltYWdlLTJkLWZvcm1hdHMuaHRtbCBbIFNraXAgXQogd2ViZ2wvMS4w
LjMvY29uZm9ybWFuY2UvY2FudmFzL3JhcGlkLXJlc2l6aW5nLmh0bWwgWyBTa2lwIF0KIHdlYmds
LzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZHJhdy1idWZmZXJzLmh0bWwgWyBT
a2lwIF0KIAotd2Via2l0Lm9yZy9iLzE5NzY3MyBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS5odG1sIFsgUGFzcyBGYWlsdXJl
IFRpbWVvdXQgXQorIyBOb3Qgc3VwcG9ydGVkIGJ5IGRlZmF1bHQKK2h0dHAvd3B0L21lZGlhcmVj
b3JkZXIgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0
dXJlLXJlY29yZCBbIFNraXAgXQorZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3Jk
ZXIuaHRtbCBbIFNraXAgXQogCiAjIFRvIGFpZCB0cmFuc2l0aW9uIHRvIEFOR0xFIGJhY2tlbmQg
Zm9yIFdlYkdMLCBza2lwIGFsbCBvZiBXZWJHTCAyIHRlc3RzIGZvciBub3cuIAogIyBSZS1lbmFi
bGUgYXMgZWFjaCBjaHVuayBvZiB0ZXN0cyBhcmUgdmVyaWZpZWQgd2l0aCBBTkdMRSBiYWNrZW5k
LgpAQCAtMzQ5Nyw0ICszNTAwLDQgQEAgd2Via2l0Lm9yZy9iLzIwNjc1MyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYmFja2dyb3VuZHMvZmlyc3QtbGUKIAogd2Via2l0
Lm9yZy9iLzIwNjU3OCBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWJhY2tncm91bmRzL2FuaW1hdGlvbnMvYm9yZGVyLWltYWdlLXdpZHRoLWludGVycG9s
YXRpb24uaHRtbCBbIENyYXNoIF0KIHdlYmtpdC5vcmcvYi8yMDY1NzkgWyBEZWJ1ZyBdIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1iYWNrZ3JvdW5kcy9iYWNrZ3JvdW5k
LXNpemUvdmVjdG9yL3plcm8taGVpZ2h0LXJhdGlvLWF1dG8tNXB4Lmh0bWwgWyBDcmFzaCBdCi13
ZWJraXQub3JnL2IvMjA2NTc5IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtYmFja2dyb3VuZHMvYmFja2dyb3VuZC1zaXplL3ZlY3Rvci96ZXJvLXdpZHRo
LXJhdGlvLWF1dG8tNXB4Lmh0bWwgWyBDcmFzaCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQord2Via2l0Lm9yZy9iLzIwNjU3OSBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWJhY2tncm91bmRzL2JhY2tncm91bmQtc2l6ZS92ZWN0b3IvemVyby13
aWR0aC1yYXRpby1hdXRvLTVweC5odG1sIFsgQ3Jhc2ggXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRh
dGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJv
Y2Vzcy5odG1sCmluZGV4IDMzMzA2ZGU3OTQ3YmJiOTI1NzM5NGMzYmExOTYyMDFiMDU4NDc4OGIu
Ljg4MDE0ODY1N2UyNWRkZTMzY2IxMDkzNDZkNmNiZWFhYjdmOWNlZmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12
aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWls
YWJsZS1ncHVwcm9jZXNzLmh0bWwKQEAgLTU2LDE3ICs1Niw3IEBACiAgICAgfQogCiAgICAgYXN5
bmNfdGVzdCh0ID0+IHsKLSAgICAgICAgY29uc3QgYWMgPSBuZXcgQXVkaW9Db250ZXh0KCk7Ci0g
ICAgICAgIGNvbnN0IG9zYyA9IGFjLmNyZWF0ZU9zY2lsbGF0b3IoKTsKLSAgICAgICAgY29uc3Qg
ZGVzdCA9IGFjLmNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKLSAgICAgICAgY29uc3Qg
YXVkaW8gPSBkZXN0LnN0cmVhbTsKLSAgICAgICAgb3NjLmNvbm5lY3QoZGVzdCk7Ci0KICAgICAg
ICAgY29uc3QgdmlkZW8gPSBjcmVhdGVWaWRlb1N0cmVhbSgpOwotICAgICAgICBhc3NlcnRfZXF1
YWxzKHZpZGVvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAwLCAidmlkZW8gbWVkaWFzdHJlYW0g
c3RhcnRzIHdpdGggbm8gYXVkaW8gdHJhY2siKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhdWRp
by5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwgMSwgImF1ZGlvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3
aXRoIG9uZSBhdWRpbyB0cmFjayIpOwotICAgICAgICB2aWRlby5hZGRUcmFjayhhdWRpby5nZXRB
dWRpb1RyYWNrcygpWzBdKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWRlby5nZXRBdWRpb1Ry
YWNrcygpLmxlbmd0aCwgMSwgInZpZGVvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRoIG9uZSBhdWRp
byB0cmFjayIpOwogICAgICAgICBjb25zdCByZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHZp
ZGVvKTsKICAgICAgICAgbGV0IG1vZGUgPSAwOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDRhMzZhZDM2M2EwODBjMzQ2ZTY0MTE3MWUzMjY5ZDBjOWIz
ZWIzYzIuLmYyNGVmYjkyNDBiYTQ5NDQ4ODdmMTBmODViM2Q5MjkxNTY3MTdhMGEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODI4LDYgKzE4MjgsMTAg
QEAgd2Via2l0Lm9yZy9iLzE5NTYzNSBzY3JvbGxpbmdjb29yZGluYXRvci9tYWMvbXVsdGlwbGUt
Zml4ZWQuaHRtbCBbIFBhc3MgVGltZW91dAogWyBDYXRhbGluYSsgXSBmYXN0L3RleHQvZGVzaWdu
LXN5c3RlbS11aS0xNS5odG1sIFsgUGFzcyBdCiBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9kZXNp
Z24tc3lzdGVtLXVpLTE2Lmh0bWwgWyBQYXNzIF0KIAorWyBDYXRhbGluYSsgXSBodHRwL3dwdC9t
ZWRpYXJlY29yZGVyIFsgUGFzcyBdIAorWyBDYXRhbGluYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1yZWNvcmQgWyBQYXNzIF0KK1sgQ2F0YWxpbmErIF0g
ZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIFBhc3MgXQorCiB3
ZWJraXQub3JnL2IvMjAwMTI4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtdmlkZW8tZWxlbWVudC92aWRlb190aW1ldXBk
YXRlX29uX3NlZWsuaHRtbCBbIFRpbWVvdXQgUGFzcyBdCiAKICMgcmRhcjovLzU1NDA1ODUxIChb
IG1hY09TIF0gTGF5b3V0IHRlc3RzIHdlYmdwdS8qLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYXJlIGZs
YWt5IGZhaWx1cmVzLiAoMjAxODI3KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389652</attachid>
            <date>2020-02-04 05:18:01 -0800</date>
            <delta_ts>2020-02-05 06:47:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206582-20200204141756.patch</filename>
            <type>text/plain</type>
            <size>141012</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5MzIzNTdhNDkxNWZlYzc3YjRmM2Fk
M2FjMTFmOTNiMmNjMTRhNzcuLmRjNjZmODhmMWQ1NmY1NzRiY2ZmMGMxMDYzYzNhMDI2NGU0ZmZj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDItMDQgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTAyLTAzICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVk
dWNlIHNpemUgb2YgSGFzaE1hcCBhbmQgSGFzaFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRhMGUxNDBiOTQ4
YWFkM2E2YTI1NTFlYTcyNWYyMGQ2YWUxMTFlMjMuLjU5OGZjZDk2ZjAyZDM2OTYzOWU3Mjg0M2Fi
NDg4YjY5ZmYxZjQ1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NSBAQAorMjAyMC0wMi0wNCAg
eW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2Ug
QVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4OTg1MzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2Fy
bHNvbi4KKworICAgICAgICBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgYWxsb3dzIHRvIGdyYWIgcmVj
b3JkZWQgZGF0YSB3aGVuZXZlciB3YW50ZWQuCisgICAgICAgIFRoaXMgZGVsZWdhdGUgcmVxdWly
ZXMgcGFzc2luZyBjb21wcmVzc2VkIHNhbXBsZXMgdG8gQVZBc3NldFdyaXRlci4KKyAgICAgICAg
SW1wbGVtZW50IHZpZGVvIGVuY29kaW5nIGFuZCBhdWRpbyBlbmNvZGluZyBpbiBkZWRpY2F0ZWQg
Y2xhc3NlcyBhbmQgdXNlIHRoZXNlIGNsYXNzZXMgYmVmb3JlIGFkZGluZyBidWZmZXJzIHRvIEFW
QXNzZXRXcml0ZXIuCisgICAgICAgIFRoZXNlIGNsYXNzZXMgYXJlIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBhbmQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLgorICAgICAgICBUaGV5
IHN1cHBvcnQgQUFDIGFuZCBIMjY0IHNvIGZhciBhbmQgc2hvdWxkIGJlIGZ1cnRoZXIgaW1wcm92
ZWQgdG8gc3VwcG9ydCBtb3JlIGVuY29kaW5nIG9wdGlvbnMuCisKKyAgICAgICAgSW5zdGFudGlh
dGUgcmVhbCB3cml0ZXIgb25seSBmb3IgcGxhdGZvcm1zIHN1cHBvcnRpbmcgQVZBc3NldFdyaXRl
ckRlbGVnYXRlLCBzaW5jZSBpdCBpcyBub3Qgc3VwcG9ydGVkIGV2ZXJ5d2hlcmUuCisgICAgICAg
IFRoZSB3cml0ZXIsIGRvaW5nIHRoZSBwYWNha2dpbmcsIGlzIHJlY2VpdmluZyBjb21wcmVzc2Vk
IGJ1ZmZlciBmcm9tIHRoZSBhdWRpby92aWRlbyBjb21wcmVzc29ycy4KKyAgICAgICAgSXQgdGhl
biBzZW5kcyBkYXRhIHdoZW4gYmVpbmcgcmVxdWVzdCB0byBmbHVzaCB0byBpdHMgZGVsZWdhdGUs
IHdoaWNoIHdpbGwgc2VuZCBkYXRhIHRvIHRoZSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlci4K
KyAgICAgICAgVGhlIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIHN0b3JlcyB0aGUgZGF0YSBp
biBhIFNoYXJlZEJ1ZmZlciB1bnRpbCBNZWRpYVJlY29yZGVyIGFza3MgZm9yIGRhdGEuCisKKyAg
ICAgICAgTm90ZSB0aGF0LCB3aGVuZXZlciB3ZSByZXF1ZXN0IGRhdGEsIHdlIGZsdXNoIHRoZSB3
cml0ZXIgYW5kIGluc2VydCBhbiBlbmQgb2YgdmlkZW8gc2FtcGxlIHRvIGFta2Ugc3VyZSB2aWRl
byBkYXRhIGdldHMgZmx1c2hlZC4KKyAgICAgICAgVGhlcmVmb3JlIGRhdGEgc2hvdWxkIG5vdCBi
ZSByZXF1ZXN0ZWQgdG8gZmFzdCB0byBnZXQgYWRlcXVhdGUgdmlkZW8gY29tcHJlc3Npb24uCisK
KyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VG
b3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphdHRhY2hQcmltaW5nVHJpbXNJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6Omdy
YWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphdWRpb0NvbnZlcnRlckNvbXBs
ZXhJbnB1dERhdGFQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNV
bnRpbExvd1dhdGVyVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0
U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAg
ICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBpbml0V2l0aFdyaXRlcjpdKToKKyAgICAg
ICAgKC1bV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFzc2V0V3JpdGVyOmRpZFByb2R1Y2VGcmFn
bWVudGVkSGVhZGVyRGF0YTpdKToKKyAgICAgICAgKC1bV2ViQVZBc3NldFdyaXRlckRlbGVnYXRl
IGFzc2V0V3JpdGVyOmRpZFByb2R1Y2VGcmFnbWVudGVkTWVkaWFEYXRhOmZyYWdtZW50ZWRNZWRp
YURhdGFSZXBvcnQ6XSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBjbG9z
ZV0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJl
c3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZFZp
ZGVvU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENv
bXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVz
c2VkU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRFbmRzUHJldmlvdXNT
YW1wbGVEdXJhdGlvbk1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6YXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJlc3Nl
ZFNhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlTYW1wbGVCdWZmZXJXaXRoQ3Vy
cmVudFRpbWVTdGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdWRpb1Nh
bXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsLmguCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+Vmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OnZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNl
c3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpw
cm9jZXNzU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZl
cik6CisKIDIwMjAtMDItMDQgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIE1lZGlhRGV2aWNlcyBzaG91bGQgaGFuZGxlIGNoYW5nZXMgb2YgaWZyYW1lIGFsbG93
IGF0dHJpYnV0ZSB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggN2JhNTIzMTRmNDNmMjQ0NjZk
YzA2MTMxMGQ2NThiMDE0NjBlMTEwNC4uODkxZTdlY2U0YTZjNDllZGI4OGIyODNhNWQ0Mzk5YjBi
ZTYwNTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDItMDQg
IHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNl
IEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81ODk4NTM2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24uCisKKyAgICAgICAgQWRkIHNvZnQgbGluayBtYWNyb3MgZm9yIFZpZGVvVG9vbGJveCBh
bmQgQXVkaW9Ub29sYm94LgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcDogQWRkZWQuCisg
ICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmg6IEFkZGVkLgorICAgICAgICAq
IHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHA6CisgICAgICAgICogcGFsL2NmL0NvcmVNZWRp
YVNvZnRMaW5rLmg6CisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDog
QWRkZWQuCisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg6IEFkZGVkLgor
CiAyMDIwLTAyLTAzICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUGFzcyBhIGhpbnQgZnJvbSB0aGUgZXh0ZW5zaW9uIHRvIGRlY2lkZVBvbGljeUZvclNPQXV0
aG9yaXphdGlvbkxvYWRXaXRoQ3VycmVudFBvbGljeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0N2JmZTlhNjI2ZmYz
M2YyZGIyMmM4M2I5MWE2ZTExNWUxNWYzNzNlLi5hMThkYjE5MDJkZTRjYTQ2MWM4OTc1ZjU5NDM4
YTFhNDNhM2Q4YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTAyLTA0ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTg5ODUzNjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29u
LgorCisgICAgICAgIEVuYWJsZSBSZW1vdGVNZWRpYVJlY29yZGVyIG9ubHkgZm9yIHN5c3RlbXMg
c3VwcG9ydGluZyBBVkFzc2V0V3JpdGVyRGVsZWdhdGUuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAg
ICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92
aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRl
TWVkaWFSZWNvcmRlclByaXZhdGUpOgorCiAyMDIwLTAyLTAzICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIFdlYktpdEFkZGl0aW9ucyBob29r
IHRvIHByb3ZpZGUgYWRkaXRpb25hbCBjdXN0b21pemF0aW9ucyB0byBVSURyYWdJbnRlcmFjdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAxNzViNmY1ZWE4ZWRjN2FkMWZkMmMxZjJlN2Y4OGYw
ZWU3YjI2ZjY4Li41M2ZhZTU5MjA1ZjU5ZGNiMjRmYmQ1ODAyYTNjOWIxZmFhNTQyNDIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUhhdmUuaApAQCAtNTY2LDYgKzU2NiwxMCBAQAogI2RlZmluZSBIQVZFX09TX1NJ
R05QT1NUIDEKICNlbmRpZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiAo
ZGVmaW5lZCBfX2hhc19pbmNsdWRlICYmIF9faGFzX2luY2x1ZGUoPEFWRm91bmRhdGlvbi9BVkFz
c2V0V3JpdGVyX1ByaXZhdGUuaD4pKSkKKyNkZWZpbmUgSEFWRV9BVkFTU0VUV1JJVEVSREVMRUdB
VEUgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oV0FU
Q0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5lIEhBVkVfU1lTVEVNX0ZPTlRfU1RZ
TEVfVElUTEVfMCAxCiAjZGVmaW5lIEhBVkVfU1lTVEVNX0ZPTlRfU1RZTEVfVElUTEVfNCAxCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCmluZGV4IGZjYjA5N2VlNzU5ZmY1ZGZiNzY0OThkNTA5
MGU0Y2NjYzBjOWQ1YTYuLmY1NGRmNzFhNGY0M2IzZTZmOWQ0OGJjMWNkNzQ0Mzc2ODcxZTliN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCkBAIC0zNCw3ICszNCwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gTWVk
aWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShjb25zdCBNZWRp
YVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKIHsKKyNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FU
RSkKICAgICByZXR1cm4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUoc3RyZWFt
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0cmVhbSk7CisgICAgcmV0dXJuIG51bGxwdHI7
CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGE0MTlhYzk4YjRkMTkyYzlmMzYxZGIxOTc3M2YyYjZmYjhl
MGM5Y2EuLjNmODE0NmFkMTU1YWZjYzA4NThkNjhiM2QyNzRlMzkyZTBmZjQ3ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEx
NSw2ICsxMTUsMTAgQEAKIAkJMkUxMzQyQ0MyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExp
bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0
MkNBMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggKi87IH07CiAJCTJFMTM0MkNE
MjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUxMzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8qIFVJ
S2l0U29mdExpbmsubW0gKi87IH07CiAJCTMxMzA4QjE0MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0
ZW1QcmV2aWV3U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTMwOEIxMzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovOyB9
OworCQk0MTZFOTk1MzIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTEy
M0RBRTZCRDAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCAqLzsgfTsKKwkJNDE2
RTk5NTQyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1MjIzREFFNkJFMDBF
ODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuaCAqLzsgfTsKKwkJNDE2RTk5NTcyM0RBRUZG
ODAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU1MjNEQUVGRjcwMEU4NzFDQiAvKiBW
aWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgKi87IH07CisJCTQxNkU5OTU4MjNEQUVGRjgwMEU4NzFD
QiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJv
eFNvZnRMaW5rLmggKi87IH07CiAJCTQ0Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Mjk1
NkNDMjE4QTcyREUwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCAqLzsgfTsKIAkJNDQ1MEZDOUYyMUY1
RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1
aWNrTG9va1NvZnRMaW5rLm1tICovOyB9OwogCQk0NDUwRkNBMDIxRjVGNjAyMDA0REZBNTYgLyog
UXVpY2tMb29rU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5o
ICovOyB9OwpAQCAtMjkxLDYgKzI5NSwxMCBAQAogCQkyRTEzNDJDQjIxNUFBMTBBMDA3MTk5RDIg
LyogVUlLaXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFVJS2l0U29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzA4
QjEzMjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN5c3RlbVByZXZpZXdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxMTlB
NzgyMENDQjVGRjAwMkM2REM5IC8qIFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNj
b25maWc7IHBhdGggPSBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rv
b2xib3hTb2Z0TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
dWRpb1Rvb2xib3hTb2Z0TGluay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
NkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGluay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9U
b29sYm94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VmlkZW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTZFOTk1NjIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExpbmsuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0IC8qIFJldmVh
bFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXZlYWxTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1
aWNrTG9va1NvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUXVpY2tMb29rU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0xvb2tTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTI0LDggKzUzMiwxMiBAQAogCQkwQ0Y5OUNBNTFGNzM4NDFDMDA3
RUU3OTMgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAg
Ki8sCisJCQkJNDE2RTk5NTIyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5r
LmggKi8sCiAJCQkJMENGOTlDQTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5r
LmNwcCAqLywKIAkJCQkwQ0Y5OUNBNzFGNzM4NDM3MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExp
bmsuaCAqLywKKwkJCQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29m
dExpbmsuY3BwICovLAorCQkJCTQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xi
b3hTb2Z0TGluay5oICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC03MTUsNiArNzI3LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThC
MjJCMzU5ODkwMDhEMEU4QiAvKiBBcHBTU09Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTc2Q0E5RDYyMkI4NTRBQjAwMzAxNDNDIC8qIEFwcFNTT1NQSS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDE2RTk5NTQyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDAyRTkzQzIwNTZGQUE3MDBBMTM3OTcgLyogQXVkaW9Ub29sYm94
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzJBMTA3ODIyQjQ1NkY1MDBGNDEwQzggLyogQXV0
aEtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc3RTg3QjIyMjZBNDYwMzAwQTJBRkYwIC8q
IEFWRm91bmRhdGlvblNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKQEAgLTgzOCw2ICs4NTEsNyBA
QAogCQkJCTJFMTM0MkNDMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwQzVBRjkyMjFGNDNBNEM3MDAyRUFDMDIgLyogVUlLaXRTUEkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBDMkRBMTQ3MUYzQkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0aW5n
U1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTZFOTk1ODIzREFFRkY4MDBFODcxQ0IgLyogVmlk
ZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTU5MUYzQkVCNDkw
MERCQzMxNyAvKiBXZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
MDgyNkY5MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwpAQCAtOTMwLDYgKzk0NCw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owog
CQkJZmlsZXMgPSAoCiAJCQkJNTdGRDMxOEEyMkIzNTkzRTAwOEQwRThCIC8qIEFwcFNTT1NvZnRM
aW5rLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1
ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3N0U4N0IxMjI2QTQ2
MDIwMEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTBDNUZGRjBGMUY3OEQ5REEwMDlFRkYxQSAvKiBDbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMENGOTlDQTgxRjczODQzNzAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtOTU2LDYgKzk3MSw3IEBACiAJCQkJQTNBQjZFNTcxRjNEMUREQjAwOUMx
NEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZF
NjUxRjNEMjE3RjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQkyRTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBp
biBTb3VyY2VzICovLAorCQkJCTQxNkU5OTU3MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xi
b3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTA4MjZGQTFGNTc2MjkyMDA0Nzcy
QUMgLyogV2ViUGFuZWwubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNmNTUwNTZhY2RhNmY1
NjUzYWRjN2UxN2VjMDJhMmQ4MjZlNDQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFWRk9VTkRBVElP
TikKKworI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvbnZlcnRlci5oPgorI2luY2x1ZGUg
PEF1ZGlvVG9vbGJveC9BdWRpb0Zvcm1hdC5oPgorCisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5n
Lmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCkK
KworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlv
Rm9ybWF0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Gb3JtYXRQcm9wZXJ0eUlEIGluUHJv
cGVydHlJRCwgVUludDMyIGluU3BlY2lmaWVyU2l6ZSwgY29uc3Qgdm9pZCogaW5TcGVjaWZpZXIs
IFVJbnQzMiogaW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5Q
cm9wZXJ0eUlELCBpblNwZWNpZmllclNpemUsIGluU3BlY2lmaWVyLCBpb1Byb3BlcnR5RGF0YVNp
emUsIG91dFByb3BlcnR5RGF0YSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUws
IEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJOZXcsIE9TU3RhdHVzLCAoY29uc3QgQXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpblNvdXJjZUZvcm1hdCwgY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKiBpbkRlc3RpbmF0aW9uRm9ybWF0LCBBdWRpb0NvbnZlcnRlclJlZiog
b3V0QXVkaW9Db252ZXJ0ZXIpLCAoaW5Tb3VyY2VGb3JtYXQsIGluRGVzdGluYXRpb25Gb3JtYXQs
IG91dEF1ZGlvQ29udmVydGVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
QXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlv
Q29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBp
blByb3BlcnR5SUQsIFVJbnQzMiBpblByb3BlcnR5RGF0YVNpemUsIGNvbnN0IHZvaWQqIGluUHJv
cGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW5Qcm9wZXJ0eURh
dGFTaXplLCBpblByb3BlcnR5RGF0YSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQ
QUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChB
dWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5
SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJv
cGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW9Qcm9wZXJ0eURh
dGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExp
bmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNzMxMTg3MTc0YWMxNTU0NDM3MWRlZTAzYjE0MzJlM2U2NTYzMmUwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0
TGluay5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NP
RlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCkKKworU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVy
R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRl
ciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3Bl
cnR5RGF0YVNpemUsIHZvaWQqIG91dFByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBp
blByb3BlcnR5SUQsIGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKyNkZWZp
bmUgQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9D
b252ZXJ0ZXJHZXRQcm9wZXJ0eQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBB
dWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0IEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91
dEF1ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBv
dXRBdWRpb0NvbnZlcnRlcikpCisjZGVmaW5lIEF1ZGlvQ29udmVydGVyTmV3IHNvZnRMaW5rX0F1
ZGlvVG9vbGJveF9BdWRpb0NvbnZlcnRlck5ldworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHksIE9TU3RhdHVz
LCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQcm9w
ZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGluUHJvcGVydHlEYXRhU2l6ZSwgY29uc3Qgdm9p
ZCogaW5Qcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9wZXJ0eUlELCBpblBy
b3BlcnR5RGF0YVNpemUsIGluUHJvcGVydHlEYXRhKSkKKyNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJT
ZXRQcm9wZXJ0eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0
eQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlv
Rm9ybWF0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Gb3JtYXRQcm9wZXJ0eUlEIGluUHJv
cGVydHlJRCwgVUludDMyIGluU3BlY2lmaWVyU2l6ZSwgY29uc3Qgdm9pZCogaW5TcGVjaWZpZXIs
IFVJbnQzMiogaW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5Q
cm9wZXJ0eUlELCBpblNwZWNpZmllclNpemUsIGluU3BlY2lmaWVyLCBpb1Byb3BlcnR5RGF0YVNp
emUsIG91dFByb3BlcnR5RGF0YSkpCisjZGVmaW5lIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkgc29m
dExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvRm9ybWF0R2V0UHJvcGVydHkKKworCisjZW5kaWYgLy8g
VVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5jcHAKaW5kZXggMmI4MjMxMzY1Y2I5YWFmOTM1OTdmMTg3ZmEyMmMxNDliZTQy
ZmIzYS4uZGM4YWI0MWNiYzc4YmExOWNlY2RkYTdmY2ZhNzBkOTM1MDkzYzIzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKQEAgLTQ2LDYg
KzQ2LDcgQEAgU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhKQog
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1
ZmZlckNvcHlEYXRhQnl0ZXMsIE9TU3RhdHVzLCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVTb3VyY2VC
dWZmZXIsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB2b2lkKiBkZXN0
aW5hdGlvbiksICh0aGVTb3VyY2VCdWZmZXIsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZGVz
dGluYXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEs
IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXplX3QsIChDTUJsb2NrQnVmZmVyUmVmIHRo
ZUJ1ZmZlciksICh0aGVCdWZmZXIpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzLCBPU1N0YXR1cywgKGNv
bnN0IHZvaWQqIHNvdXJjZUJ5dGVzLCBDTUJsb2NrQnVmZmVyUmVmIGRlc3RpbmF0aW9uQnVmZmVy
LCBzaXplX3Qgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUxlbmd0aCksIChzb3Vy
Y2VCeXRlcywgZGVzdGluYXRpb25CdWZmZXIsIG9mZnNldEludG9EZXN0aW5hdGlvbiwgZGF0YUxl
bmd0aCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01G
b3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMsIENGRGljdGlvbmFyeVJlZiwgKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQsICh2
b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwg
Q01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyLCBDTUJsb2NrQnVmZmVyUmVmLCAoQ01TYW1wbGVC
dWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKQEAgLTEzNiw2ICsxMzcsNyBAQCBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEJ1ZmZlckNv
dW50LCBDTUl0ZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEs
IENNQnVmZmVyUXVldWVHZXRGaXJzdFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lLCAoQ01C
dWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVT
dGFtcCwgQ01UaW1lLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUluc3Rh
bGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJl
ZiBxdWV1ZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayB0cmlnZ2VyQ2FsbGJhY2ssIHZv
aWQqIHRyaWdnZXJSZWZjb24sIENNQnVmZmVyUXVldWVUcmlnZ2VyQ29uZGl0aW9uIHRyaWdnZXJD
b25kaXRpb24sIENNSXRlbUNvdW50IHRyaWdnZXJUaHJlc2hvbGQsIENNQnVmZmVyUXVldWVUcmln
Z2VyVG9rZW4qIHRyaWdnZXJUb2tlbk91dCksIChxdWV1ZSwgdHJpZ2dlckNhbGxiYWNrLCB0cmln
Z2VyUmVmY29uLCB0cmlnZ2VyQ29uZGl0aW9uLCB0cmlnZ2VyVGhyZXNob2xkLCB0cmlnZ2VyVG9r
ZW5PdXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENN
QnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVl
dWUpLCAocXVldWUpKQogCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIENvcmVN
ZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERpc3BsYXksIENGU3RyaW5nUmVmKQog
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0
dGFjaG1lbnRLZXlfTm90U3luYywgQ0ZTdHJpbmdSZWYpCkBAIC0xNjMsNiArMTY1LDkgQEAgU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9TYW1wbGVC
dWZmZXJDcmVhdGVXaXRoUGFja2UKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0
LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENGQWxsb2NhdG9yUmVmIGJidWZT
dHJ1Y3RBbGxvY2F0b3IsIENGQWxsb2NhdG9yUmVmIGJidWZNZW1vcnlBbGxvY2F0b3IsIHVpbnQz
Ml90IGZsYWdzLCBjb25zdCBBdWRpb0J1ZmZlckxpc3QgKmJ1ZmZlckxpc3QpLCAoc2J1ZiwgYmJ1
ZlN0cnVjdEFsbG9jYXRvciwgYmJ1Zk1lbW9yeUFsbG9jYXRvciwgZmxhZ3MsIGJ1ZmZlckxpc3Qp
KQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxl
QnVmZmVyU2V0RGF0YVJlYWR5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAo
c2J1ZikpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01B
dWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFs
bG9jYXRvciwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBhc2JkLCBzaXplX3Qg
bGF5b3V0U2l6ZSwgY29uc3QgQXVkaW9DaGFubmVsTGF5b3V0KiBsYXlvdXQsIHNpemVfdCBtYWdp
Y0Nvb2tpZVNpemUsIGNvbnN0IHZvaWQqIG1hZ2ljQ29va2llLCBDRkRpY3Rpb25hcnlSZWYgZXh0
ZW5zaW9ucywgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmKiBvdXREZXNjKSwgKGFsbG9jYXRv
ciwgYXNiZCwgbGF5b3V0U2l6ZSwgbGF5b3V0LCBtYWdpY0Nvb2tpZVNpemUsIG1hZ2ljQ29va2ll
LCBleHRlbnNpb25zLCBvdXREZXNjKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZSwgY29u
c3Qgdm9pZCosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYywgc2l6ZV90KiBzaXpl
T3V0KSwgKGRlc2MsIHNpemVPdXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVG
b3JtYXQsIGNvbnN0IEF1ZGlvRm9ybWF0TGlzdEl0ZW0gKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvblJlZiBkZXNjKSwgKGRlc2MpKQorCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQ
QUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2ssIENNQ2xvY2tSZWYsICh2b2lk
KSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01D
bG9ja0dldFRpbWUsIENNVGltZSwgKENNQ2xvY2tSZWYgY2xvY2spLCAoY2xvY2spKQogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ2Fs
bEZvckVhY2hTYW1wbGUsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgT1NTdGF0
dXMgKCogQ01TQU1QTEVCVUZGRVJDQUxMX05PRVNDQVBFIGNhbGxiYWNrKSggQ01TYW1wbGVCdWZm
ZXJSZWYgc2FtcGxlQnVmZmVyLCBDTUl0ZW1Db3VudCBpbmRleCwgdm9pZCAqcmVmY29uKSwgdm9p
ZCAqcmVmY29uKSwgKHNidWYsIGNhbGxiYWNrLCByZWZjb24pKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCmluZGV4IDI2OGQxNjdmMjdkNmQzYWJiZmY1
OTM1MjY3ZmMyMjIzOTEwMTBlM2QuLmEwYzczMjkyNjJlMGIwNmNiYjZjMzZkODI4NDJmMmZkNmYx
Zjg0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
LmgKQEAgLTQ5LDYgKzQ5LDggQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBD
b3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXQKICNkZWZpbmUgQ01C
bG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJD
b3B5RGF0YUJ5dGVzCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRp
YSwgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgsIHNpemVfdCwgKENNQmxvY2tCdWZmZXJSZWYg
dGhlQnVmZmVyKSwgKHRoZUJ1ZmZlcikpCiAjZGVmaW5lIENNQmxvY2tCdWZmZXJHZXREYXRhTGVu
Z3RoIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aAorU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJSZXBs
YWNlRGF0YUJ5dGVzLCBPU1N0YXR1cywgKGNvbnN0IHZvaWQqIHNvdXJjZUJ5dGVzLCBDTUJsb2Nr
QnVmZmVyUmVmIGRlc3RpbmF0aW9uQnVmZmVyLCBzaXplX3Qgb2Zmc2V0SW50b0Rlc3RpbmF0aW9u
LCBzaXplX3QgZGF0YUxlbmd0aCksIChzb3VyY2VCeXRlcywgZGVzdGluYXRpb25CdWZmZXIsIG9m
ZnNldEludG9EZXN0aW5hdGlvbiwgZGF0YUxlbmd0aCkpCisjZGVmaW5lIENNQmxvY2tCdWZmZXJS
ZXBsYWNlRGF0YUJ5dGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyUmVwbGFjZURh
dGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENN
Rm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRpY3Rpb25hcnlSZWYsIChDTUZvcm1h
dERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVmaW5lIENNRm9ybWF0RGVzY3JpcHRp
b25HZXRFeHRlbnNpb25zIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0aW9uR2V0
RXh0ZW5zaW9ucwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEs
IENNU2FtcGxlQnVmZmVyR2V0VHlwZUlELCBDRlR5cGVJRCwgKHZvaWQpLCAoKSkKQEAgLTIyNyw2
ICsyMjksOCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbQogI2RlZmluZSBDTUJ1ZmZlclF1ZXVl
R2V0RW5kUHJlc2VudGF0aW9uVGltZVN0YW1wIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1
ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGltZVN0YW1wCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hF
QURFUihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVn
ZXJUaHJlc2hvbGQsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSwgQ01CdWZmZXJR
dWV1ZVRyaWdnZXJDYWxsYmFjayB0cmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIHRyaWdnZXJSZWZjb24s
IENNQnVmZmVyUXVldWVUcmlnZ2VyQ29uZGl0aW9uIHRyaWdnZXJDb25kaXRpb24sIENNSXRlbUNv
dW50IHRyaWdnZXJUaHJlc2hvbGQsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4qIHRyaWdnZXJU
b2tlbk91dCksIChxdWV1ZSwgdHJpZ2dlckNhbGxiYWNrLCB0cmlnZ2VyUmVmY29uLCB0cmlnZ2Vy
Q29uZGl0aW9uLCB0cmlnZ2VyVGhyZXNob2xkLCB0cmlnZ2VyVG9rZW5PdXQpKQogI2RlZmluZSBD
TUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXJXaXRoSW50ZWdlclRocmVzaG9sZCBzb2Z0TGlua19D
b3JlTWVkaWFfQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1
ZXVlTWFya0VuZE9mRGF0YSwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1
ZXVlKSkKKyNkZWZpbmUgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgc29mdExpbmtfQ29yZU1l
ZGlhX0NNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxh
eSwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNw
bGF5IGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERpc3BsYXkoKQpA
QCAtMjU2LDYgKzI2MCw5IEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkCiAjZGVmaW5lIGtDTVRp
bWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQgZ2V0X0NvcmVNZWRpYV9rQ01UaW1lYmFzZU5v
dGlmaWNhdGlvbl9UaW1lSnVtcGVkKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJD
b25zdW1lZCwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90
aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQ29u
c3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQoKQorCitTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFn
aWNDb29raWUsIGNvbnN0IHZvaWQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2Ms
IHNpemVfdCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkKKyNkZWZpbmUgQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uICosIChDTUF1ZGlv
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKICNkZWZpbmUgQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzb2Z0TGlua19Db3JlTWVkaWFf
Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbgogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDcmVh
dGVXaXRoTWVtb3J5QmxvY2ssIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxs
b2NhdG9yLCB2b2lkKiBtZW1vcnlCbG9jaywgc2l6ZV90IGJsb2NrTGVuZ3RoLCBDRkFsbG9jYXRv
clJlZiBibG9ja0FsbG9jYXRvciwgY29uc3QgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNl
KiBjdXN0b21CbG9ja1NvdXJjZSwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgsIENNQmxvY2tCdWZmZXJGbGFncyBmbGFncywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZm
ZXJPdXQpLCAoc3RydWN0dXJlQWxsb2NhdG9yLCBtZW1vcnlCbG9jaywgYmxvY2tMZW5ndGgsIGJs
b2NrQWxsb2NhdG9yLCBjdXN0b21CbG9ja1NvdXJjZSwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3Ro
LCBmbGFncywgYmxvY2tCdWZmZXJPdXQpKQpAQCAtMjY0LDYgKzI3MSw4IEBAIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlv
QnVmZmVyTGlzdFdpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0
aFJldGFpbmVkQmxvY2tCdWZmZXIgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0
QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMs
IENNSXRlbUNvdW50LCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKICNkZWZpbmUg
Q01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1
ZmZlckdldE51bVNhbXBsZXMKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0
LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25S
ZWYgZGVzYyksIChkZXNjKSkKKyNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0Umlj
aGVzdERlY29kYWJsZUZvcm1hdCBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJh
bmdlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01TYW1wbGVCdWZmZXJS
ZWYgc2J1ZiwgQ0ZSYW5nZSBzYW1wbGVSYW5nZSwgQ01TYW1wbGVCdWZmZXJSZWYqIHNCdWZPdXQp
LCAoYWxsb2NhdG9yLCBzYnVmLCBzYW1wbGVSYW5nZSwgc0J1Zk91dCkpCiAjZGVmaW5lIENNU2Ft
cGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNh
bXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlU2l6ZUFycmF5
LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUNvdW50IHNpemVBcnJh
eUVudHJpZXMsIHNpemVfdCogc2l6ZUFycmF5T3V0LCBDTUl0ZW1Db3VudCogc2l6ZUFycmF5RW50
cmllc05lZWRlZE91dCksIChzYnVmLCBzaXplQXJyYXlFbnRyaWVzLCBzaXplQXJyYXlPdXQsIHNp
emVBcnJheUVudHJpZXNOZWVkZWRPdXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZmU2OTNjYTllNDFmZDg1
OTdhODJiN2M3OTY2MDFiOGE3MGNhYTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKQEAgLTAsMCArMSw0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQVZGT1VOREFUSU9O
KQorCisjaW1wb3J0IDxWaWRlb1Rvb2xib3gvVlRDb21wcmVzc2lvblNlc3Npb24uaD4KKworI2lu
Y2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VS
Q0UoUEFMLCBWaWRlb1Rvb2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBD
TVZpZGVvQ29kZWNUeXBlIGNvZGVjVHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZp
Y2F0aW9uLCBDRkRpY3Rpb25hcnlSZWYgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFs
bG9jYXRvclJlZiBjb21wcmVzc2VkRGF0YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENh
bGxiYWNrIG91dHB1dENhbGxiYWNrLCB2b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21w
cmVzc2lvblNlc3Npb25SZWYqIGNvbXByZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdp
ZHRoLCBoZWlnaHQsIGNvZGVjVHlwZSwgZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdl
QnVmZmVyQXR0cmlidXRlcywgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNr
LCBvdXRwdXRDYWxsYmFja1JlZkNvbiwgY29tcHJlc3Npb25TZXNzaW9uT3V0KSkKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vz
c2lvbkNvbXBsZXRlRnJhbWVzLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNl
c3Npb24sIENNVGltZSBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSwgKHNlc3Np
b24sIGNvbXBsZXRlVW50aWxQcmVzZW50YXRpb25UaW1lU3RhbXApKQorU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5j
b2RlRnJhbWUsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJ
bWFnZUJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwg
Q01UaW1lIGR1cmF0aW9uLCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lkKiBz
b3VyY2VGcmFtZVJlZmNvbiwgVlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChzZXNz
aW9uLCBpbWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJhbWVQ
cm9wZXJ0aWVzLCBzb3VyY2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lv
blByZXBhcmVUb0VuY29kZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJl
ZiBzZXNzaW9uKSwgKHNlc3Npb24pKQorCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsu
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNTA4MzhhM2FmZGVkMmVkN2Q2ZjhlMzQ4ZmZkZjZkZDExNTFiYzRkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGlu
ay5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRf
TElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCkKKworU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNz
aW9uQ3JlYXRlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQsIENNVmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlLCBDRkRpY3Rp
b25hcnlSZWYgZW5jb2RlclNwZWNpZmljYXRpb24sIENGRGljdGlvbmFyeVJlZiBzb3VyY2VJbWFn
ZUJ1ZmZlckF0dHJpYnV0ZXMsIENGQWxsb2NhdG9yUmVmIGNvbXByZXNzZWREYXRhQWxsb2NhdG9y
LCBWVENvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2sgb3V0cHV0Q2FsbGJhY2ssIHZvaWQqIG91dHB1
dENhbGxiYWNrUmVmQ29uLCBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiogY29tcHJlc3Npb25TZXNz
aW9uT3V0KSwgKGFsbG9jYXRvciwgd2lkdGgsIGhlaWdodCwgY29kZWNUeXBlLCBlbmNvZGVyU3Bl
Y2lmaWNhdGlvbiwgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBjb21wcmVzc2VkRGF0YUFs
bG9jYXRvciwgb3V0cHV0Q2FsbGJhY2ssIG91dHB1dENhbGxiYWNrUmVmQ29uLCBjb21wcmVzc2lv
blNlc3Npb25PdXQpKQorI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSBzb2Z0TGlu
a19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNv
bXBsZXRlRnJhbWVzLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24s
IENNVGltZSBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSwgKHNlc3Npb24sIGNv
bXBsZXRlVW50aWxQcmVzZW50YXRpb25UaW1lU3RhbXApKQorI2RlZmluZSBWVENvbXByZXNzaW9u
U2Vzc2lvbkNvbXBsZXRlRnJhbWVzIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9u
U2Vzc2lvbkNvbXBsZXRlRnJhbWVzCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUws
IFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSwgT1NTdGF0dXMs
IChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDVkltYWdlQnVmZmVyUmVmIGltYWdl
QnVmZmVyLCBDTVRpbWUgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUgZHVyYXRpb24sIENG
RGljdGlvbmFyeVJlZiBmcmFtZVByb3BlcnRpZXMsIHZvaWQqIHNvdXJjZUZyYW1lUmVmY29uLCBW
VEVuY29kZUluZm9GbGFncyogaW5mb0ZsYWdzT3V0KSwgKHNlc3Npb24sIGltYWdlQnVmZmVyLCBw
cmVzZW50YXRpb25UaW1lU3RhbXAsIGR1cmF0aW9uLCBmcmFtZVByb3BlcnRpZXMsIHNvdXJjZUZy
YW1lUmVmY29uLCBpbmZvRmxhZ3NPdXQpKQorI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvbkVu
Y29kZUZyYW1lIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvbkVuY29k
ZUZyYW1lCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwg
VlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRD
b21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKyNkZWZpbmUgVlRDb21w
cmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMgc29mdExpbmtfVmlkZW9Ub29sYm94
X1ZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzCisKKyNlbmRpZiAvLyBV
U0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGFmMDQ0MTI0MThlNmRiYjBmMGIzYjE3YTZkOWE4Y2E2YmE4
MTE2YjQuLmEzZTFkN2I1NzdiZWQwZjZhNTc1ZGNlZGZkYzk0NjYxMDI1MzMxM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEw
OTcsNiArMTA5Nyw3IEBACiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyogV3JpdGFibGVTdHJlYW1J
bnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1
aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJC
RDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTgg
LyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTQxNkY3OTkwMjNENzUwQ0YwMDgyOUZDMSAvKiBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tICovOyB9OwogCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEgLyogTWVk
aWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50
cy5oICovOyB9OwogCQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTc2MTJBQjFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAg
Ki87IH07CiAJCTQxNzYxMkIwMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBv
aW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2
MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovOyB9OwpA
QCAtMTEzNyw2ICsxMTM4LDcgQEAKIAkJNDFCODc3NjIyM0RFMTA0NTAwMzYzOEI4IC8qIFJlYWx0
aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUI4Nzc2MDIzREUxMDQyMDAzNjM4QjggLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MUJGMjA0OTIyQkE3QkU4MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1Nv
dXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFC
RjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUM3NjBCMTBFREUwM0Qz
MDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQ0Q2
RjhDMjNENkU4MjEwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUNENkY4QjIzRDZF
ODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9OwogCQk0
MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAv
KiBDb250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxRDEyOUNFMUYzRDBFRjYwMEQxNUU0NyAvKiBXb3JrZXJHbG9iYWxTY29wZUNh
Y2hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFG
QjI3OEQxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmggKi87IH07
CiAJCTQxRDEyOUQwMUYzRDBGMDUwMEQxNUU0NyAvKiBDYWNoZVF1ZXJ5T3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OUIxRjM0Q0VG
MDAwNzk1NDg3IC8qIENhY2hlUXVlcnlPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTczNjEsNiArNzM2Myw4IEBACiAJCTQxNkQ3NTlG
MjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaElkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTI5QTUxMDJGQTk2MjAwN0ZD
MTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdvcmtlclJlcG9ydGluZ1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxNkY3OThEMjNENzUwQ0EwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkY3OThGMjNENzUw
Q0IwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzBBMkU5MUQ4QzBDQzAwMDMxODQ1
MiAvKiBKU0RPTVdyYXBwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNET01XcmFwcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MjUz
QTgxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1l
ZGlhQ29udHJvbEVsZW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhQ29udHJvbEVsZW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NDY4
LDYgKzc0NzIsOCBAQAogCQk0MUM3RTEwNTFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUM3RTEwNjFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFD
N0UxMDgxRTZBQTM3QzAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQ0Q2Rjg5MjNENkU4MUMwMEIxNjQy
MSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxQ0Q2RjhCMjNENkU4MUQwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxQ0Y4QkU0MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RD
OSAvKiBGZXRjaEJvZHlDb25zdW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGZXRjaEJvZHlDb25zdW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQw
MTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29udGVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE4ODkyLDggKzE4ODk4LDEyIEBACiAJCTREM0MwNUQ0MjFBRjQ4MDkwMEYyODkwQSAvKiBj
b2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDE2
Rjc5OEQyM0Q3NTBDQTAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICov
LAorCQkJCTQxNkY3OThGMjNENzUwQ0IwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW0gKi8sCiAJCQkJNEQ3M0Y5NEMyMThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaCAqLywKIAkJCQk0RDczRjk0RDIxOEM0QTg3MDAzQTNFRDYg
LyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSAqLywKKwkJCQk0MUNENkY4OTIz
RDZFODFDMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8sCisJCQkJ
NDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5t
bSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMzM1NDIsNiArMzM1NTIsNyBAQAogCQkJCUE5Nzg3Q0I0MUY1RjVDNjYwMEM1NTFDNiAv
KiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwRUVF
MEUxNDc0M0YzOTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0Q1NTk2OTExNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTZGNzk5MDIzRDc1MENGMDA4MjlGQzEgLyogQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBNzk4MjcxNzBB
Mjc5MTAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNE
OEE3QkJCMTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNr
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzQyNzQsNiArMzQyODUsNyBAQAogCQkJCTdDNzNGQjA3
MTkxRUY0MTcwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTNGQkM0QUYzMTg5ODgxNTYwMDQ2RUUzOCAvKiBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUyRDVBMThGMUM1NDU5MjMw
MERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDFDRDZGOEMyM0Q2RTgyMTAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAv
KiBWaWRlb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1
OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2NzE3
RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDczZjFk
MGExNTE5ZjJjMDNiOTFkNjk1MTA1MTM1YTRmMjBkMWRhNjQuLmYxZjY4MDQ1MjI5MzY1ZDhmYzNi
MDc5NjcyZDJjMjAzM2ZiZWEzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHAKQEAgLTI2LDkgKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgiCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVH
QVRFKQogCiAjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIk1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgpAQCAtNjgsNyArNjksMTQgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbD4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIGF1dG8gd3JpdGVyID0gTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShhdWRpb1RyYWNrLCB2aWRlb1RyYWNrKTsKKworICAg
IGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CisgICAgaWYgKHZpZGVvVHJhY2spIHsKKyAgICAg
ICAgYXV0byYgc2V0dGluZ3MgPSB2aWRlb1RyYWNrLT5zZXR0aW5ncygpOworICAgICAgICB3aWR0
aCA9IHNldHRpbmdzLndpZHRoKCk7CisgICAgICAgIGhlaWdodCA9IHNldHRpbmdzLmhlaWdodCgp
OworICAgIH0KKyAgICBhdXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpj
cmVhdGUoISFhdWRpb1RyYWNrLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBpZiAoIXdyaXRlcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTExOSw0ICsxMjcsNCBAQCBjb25zdCBTdHJpbmcm
IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6bWltZVR5cGUoKQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKaW5kZXggMGNmMGRmM2M2NGNjOTcxM2UzMDU5
YmUzNmNhY2M5ZmM3Y2NjMGIzNi4uMzRlMmE5NmM3OTQxOGQ0ZTg2NmMxYWMyMTA0MDk4Y2M5Mzhm
NDRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCkBAIC0yNCw3ICsy
NCw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2lu
Y2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5oIgpAQCAtNTYsNCArNTYsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9B
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTQ3YmY4MWUxZDQ1NmM3MGMyZDk0NGY3MDQ1YThlMTZlMDU5YmNmOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJ
T04pCisKKyNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKwordHlwZWRlZiBzdHJ1Y3Qg
b3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3Qg
T3BhcXVlQXVkaW9Db252ZXJ0ZXIqIEF1ZGlvQ29udmVydGVyUmVmOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IGNyZWF0ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7CisgICAgfkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvcigpOworCisgICAgdm9pZCBmaW5pc2goKTsKKyAgICB2b2lkIGFkZFNhbXBsZUJ1ZmZl
cihDTVNhbXBsZUJ1ZmZlclJlZik7CisgICAgQ01TYW1wbGVCdWZmZXJSZWYgZ2V0T3V0cHV0U2Ft
cGxlQnVmZmVyKCk7CisgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiB0YWtlT3V0cHV0
U2FtcGxlQnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yKCk7CisgICAgYm9vbCBpbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ss
IHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKworICAgIHN0YXRpYyBPU1N0YXR1cyBhdWRpb0NvbnZl
cnRlckNvbXBsZXhJbnB1dERhdGFQcm9jKEF1ZGlvQ29udmVydGVyUmVmLCBVSW50MzIqLCBBdWRp
b0J1ZmZlckxpc3QqLCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiosIHZvaWQqKTsKKwor
ICAgIHZvaWQgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CisgICAgYm9v
bCBpbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERl
c2NyaXB0aW9uUmVmLCBBdWRpb0Zvcm1hdElEKTsKKyAgICBzaXplX3QgY29tcHV0ZUJ1ZmZlclNp
emVGb3JBdWRpb0Zvcm1hdChBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24sIFVJbnQzMiwgRmxv
YXQzMik7CisgICAgdm9pZCBhdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZChDTVNhbXBsZUJ1ZmZl
clJlZik7CisgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBncmFkdWFsRGVjb2RlclJlZnJlc2hDb3Vu
dCgpOworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKFVJ
bnQzMiBudW1QYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QpOworICAgIHZvaWQgcHJvY2Vzc1NhbXBs
ZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUpOworICAgIE9TU3RhdHVzIHByb3ZpZGVT
b3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIqLCBBdWRpb0J1ZmZlckxpc3QqLCBBdWRp
b1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiopOworCisgICAgUmV0YWluUHRyPENNQnVmZmVyUXVl
dWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CisgICAgUmV0YWluUHRyPENNQnVmZmVyUXVldWVS
ZWY+IG1faW5wdXRCdWZmZXJRdWV1ZTsKKyAgICBkaXNwYXRjaF9xdWV1ZV90IG1fc2VyaWFsRGlz
cGF0Y2hRdWV1ZTsKKyAgICBDTVRpbWUgbV9sb3dXYXRlclRpbWU7CisgICAgYm9vbCBtX2lzRW5j
b2RpbmcgeyBmYWxzZSB9OworCisgICAgUmV0YWluUHRyPEF1ZGlvQ29udmVydGVyUmVmPiBtX2Nv
bnZlcnRlcjsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbV9zb3VyY2VGb3JtYXQ7
CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1fZGVzdGluYXRpb25Gb3JtYXQ7Cisg
ICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fZGVzdGluYXRpb25Gb3JtYXRE
ZXNjcmlwdGlvbjsKKyAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IG1fZ2RyQ291bnROdW07CisgICAg
VUludDMyIG1fbWF4T3V0cHV0UGFja2V0U2l6ZTsKKyAgICBWZWN0b3I8QXVkaW9TdHJlYW1QYWNr
ZXREZXNjcmlwdGlvbj4gbV9kZXN0aW5hdGlvblBhY2tldERlc2NyaXB0aW9uczsKKworICAgIENN
VGltZSBtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXA7CisgICAgQ01UaW1lIG1f
Y3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAgICBDTVRpbWUgbV9yZW1haW5p
bmdQcmltZUR1cmF0aW9uOworCisgICAgVmVjdG9yPGNoYXI+IG1fc291cmNlQnVmZmVyOworICAg
IFZlY3RvcjxjaGFyPiBtX2Rlc3RpbmF0aW9uQnVmZmVyOworCisgICAgUmV0YWluUHRyPENNQmxv
Y2tCdWZmZXJSZWY+IG1fc2FtcGxlQmxvY2tCdWZmZXI7CisgICAgc2l6ZV90IG1fc2FtcGxlQmxv
Y2tCdWZmZXJTaXplOworICAgIHNpemVfdCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVm
ZmVyOworICAgIEF1ZGlvRm9ybWF0SUQgbV9vdXRwdXRDb2RlY1R5cGU7Cit9OworCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NzMzMzc0NmFkZmIwMDNkYzY2MjBhMDJkMTA2YzhkNDBiMWNmZGExCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTAsMCArMSw0OTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
IgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db2RlYy5oPgor
I2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvbnZlcnRlci5oPgorI2luY2x1ZGUgPEF1ZGlv
VG9vbGJveC9BdWRpb0Zvcm1hdC5oPgorI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorCisjaW1wb3J0IDxwYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuaD4KKworI2RlZmluZSBM
T1dfV0FURVJfVElNRV9JTl9TRUNPTkQgMC4xCisKK3VzaW5nIG5hbWVzcGFjZSBQQUw7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoQ01CdWZmZXJRdWV1
ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAg
YXV0byBjb21wcmVzc29yID0gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcj4obmV3IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpKTsKKyAgICBpZiAoIWNvbXBy
ZXNzb3ItPmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0KSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbXByZXNzb3I7Cit9CisKK0F1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKKyAgICA6IG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkgfQorICAgICwg
bV9sb3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNlY29uZHMoTE9XX1dBVEVSX1RJTUVfSU5f
U0VDT05ELCAxMDAwKSB9CisgICAgLCBtX291dHB1dENvZGVjVHlwZSB7IGtBdWRpb0Zvcm1hdE1Q
RUc0QUFDIH0KK3sKK30KKworQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yKCkKK3sKKyAgICBpZiAobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKQor
ICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSk7Cit9CisKK2Jv
b2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXplKENNQnVmZmVyUXVldWVU
cmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KQoreworICAgIENN
QnVmZmVyUXVldWVSZWYgaW5wdXRCdWZmZXJRdWV1ZTsKKyAgICBpZiAoYXV0byBlcnJvciA9IENN
QnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdl
dENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycygpLCAmaW5wdXRCdWZmZXJRdWV1ZSkp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBmb3IgbV9pbnB1dEJ1ZmZlclF1ZXVl
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIG1faW5wdXRCdWZmZXJRdWV1ZSA9IGFkb3B0Q0YoaW5wdXRCdWZmZXJRdWV1ZSk7CisKKyAg
ICBDTUJ1ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVycm9y
ID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1
ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZvdXRwdXRCdWZmZXJR
dWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBmb3IgbV9vdXRwdXRCdWZm
ZXJRdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICBtX291dHB1dEJ1ZmZlclF1ZXVlID0gYWRvcHRDRihvdXRwdXRCdWZmZXJRdWV1
ZSk7CisgICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0cHV0QnVmZmVyUXVldWUu
Z2V0KCksIGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVyUXVldWVUcmlnZ2VyX1do
ZW5EYXRhQmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywgTlVMTCk7CisKKyAgICBtX2lzRW5jb2Rp
bmcgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6ZmluaXNoKCkKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0
Y2hRdWV1ZSwgXnsKKyAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGlt
ZShrQ01UaW1lSW52YWxpZCk7CisgICAgICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFy
a0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZhaWxlZCAlZCIsIGVycm9yKTsKKyAgICAg
ICAgbV9pc0VuY29kaW5nID0gZmFsc2U7CisgICAgfSk7Cit9CisKK2Jvb2wgQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlw
dGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uLCBBdWRpb0Zvcm1h
dElEIG91dHB1dEZvcm1hdElEKQoreworICAgIGNvbnN0IGF1dG8gKmF1ZGlvRm9ybWF0TGlzdEl0
ZW0gPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0KGZv
cm1hdERlc2NyaXB0aW9uKTsKKyAgICBtX3NvdXJjZUZvcm1hdCA9IGF1ZGlvRm9ybWF0TGlzdEl0
ZW0tPm1BU0JEOworCisgICAgbWVtc2V0KCZtX2Rlc3RpbmF0aW9uRm9ybWF0LCAwLCBzaXplb2Yo
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CisgICAgbV9kZXN0aW5hdGlvbkZvcm1hdC5t
Rm9ybWF0SUQgPSBvdXRwdXRGb3JtYXRJRDsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1w
bGVSYXRlID0gbV9zb3VyY2VGb3JtYXQubVNhbXBsZVJhdGU7CisgICAgbV9kZXN0aW5hdGlvbkZv
cm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IG1fc291cmNlRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1l
OworCisgICAgVUludDMyIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlvbkZvcm1hdCk7CisgICAg
aWYgKGF1dG8gZXJyb3IgPSBBdWRpb0Zvcm1hdEdldFByb3BlcnR5KGtBdWRpb0Zvcm1hdFByb3Bl
cnR5X0Zvcm1hdEluZm8sIDAsIE5VTEwsICZzaXplLCAmbV9kZXN0aW5hdGlvbkZvcm1hdCkpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEF1ZGlvQ29udmVydGVyUmVm
IGNvbnZlcnRlcjsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyTmV3KCZtX3Nv
dXJjZUZvcm1hdCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsICZjb252ZXJ0ZXIpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIEF1ZGlvQ29udmVydGVyTmV3IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fY29udmVydGVyID0gYWRvcHRDRihjb252ZXJ0ZXIp
OworCisgICAgc2l6ZV90IGNvb2tpZVNpemUgPSAwOworICAgIGNvbnN0IHZvaWQgKmNvb2tpZSA9
IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llKGZvcm1hdERlc2NyaXB0aW9u
LCAmY29va2llU2l6ZSk7CisgICAgaWYgKGNvb2tpZVNpemUpIHsKKyAgICAgICAgaWYgKGF1dG8g
ZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVk
aW9Db252ZXJ0ZXJEZWNvbXByZXNzaW9uTWFnaWNDb29raWUsIChVSW50MzIpY29va2llU2l6ZSwg
Y29va2llKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJEZWNvbXBy
ZXNzaW9uTWFnaWNDb29raWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzaXplID0gc2l6ZW9mKG1fc291
cmNlRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVy
dHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRJbnB1dFN0cmVhbURl
c2NyaXB0aW9uLCAmc2l6ZSwgJm1fc291cmNlRm9ybWF0KSkgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5n
IGtBdWRpb0NvbnZlcnRlckN1cnJlbnRJbnB1dFN0cmVhbURlc2NyaXB0aW9uIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFt
X3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJtQnl0ZXNQZXJQYWNrZXQgc2hvdWxkIG5vdCBiZSB6ZXJvIik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzaXplID0gc2l6ZW9mKG1fZGVzdGlu
YXRpb25Gb3JtYXQpOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9w
ZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyQ3VycmVudE91dHB1dFN0cmVh
bURlc2NyaXB0aW9uLCAmc2l6ZSwgJm1fZGVzdGluYXRpb25Gb3JtYXQpKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ3VycmVudE91dHB1dFN0cmVhbURlc2NyaXB0aW9uIGZh
aWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubUZvcm1hdElEID09IGtBdWRpb0Zvcm1hdE1QRUc0
QUFDKSB7CisgICAgICAgIC8vIEZJWE1FOiBTZXQgb3V0cHV0Qml0UmF0ZSBhY2NvcmRpbmcgTWVk
aWFSZWNvcmRlck9wdGlvbnMuYXVkaW9CaXRzUGVyU2Vjb25kLgorICAgICAgICBVSW50MzIgb3V0
cHV0Qml0UmF0ZSA9IDY0MDAwOworICAgICAgICBpZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tU2Ft
cGxlUmF0ZSA+PSA0NDEwMCkKKyAgICAgICAgICAgIG91dHB1dEJpdFJhdGUgPSAxOTIwMDA7Cisg
ICAgICAgIGVsc2UgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPCAyMjAwMCkK
KyAgICAgICAgICAgIG91dHB1dEJpdFJhdGUgPSAzMjAwMDsKKworICAgICAgICBzaXplID0gc2l6
ZW9mKG91dHB1dEJpdFJhdGUpOworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVy
dGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckVuY29kZUJp
dFJhdGUsIHNpemUsICZvdXRwdXRCaXRSYXRlKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBr
QXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRSYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFtX2Rl
c3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkgeworICAgICAgICAvLyBJZiB0aGUgZGVz
dGluYXRpb24gZm9ybWF0IGlzIFZCUiwgd2UgbmVlZCB0byBnZXQgbWF4IHNpemUgcGVyIHBhY2tl
dCBmcm9tIHRoZSBjb252ZXJ0ZXIuCisgICAgICAgIHNpemUgPSBzaXplb2YobV9tYXhPdXRwdXRQ
YWNrZXRTaXplKTsKKworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0
UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlclByb3BlcnR5TWF4aW11
bU91dHB1dFBhY2tldFNpemUsICZzaXplLCAmbV9tYXhPdXRwdXRQYWNrZXRTaXplKSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eU1heGltdW1PdXRwdXRQ
YWNrZXRTaXplIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfQorCisgICAgbV9kZXN0aW5hdGlvbkJ1ZmZlci5yZXNlcnZl
Q2FwYWNpdHkoY29tcHV0ZUJ1ZmZlclNpemVGb3JBdWRpb0Zvcm1hdChtX2Rlc3RpbmF0aW9uRm9y
bWF0LCBtX21heE91dHB1dFBhY2tldFNpemUsIExPV19XQVRFUl9USU1FX0lOX1NFQ09ORCkpOwor
ICAgIGlmICghbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpCisgICAgICAgIG1f
ZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnMucmVzZXJ2ZUNhcGFjaXR5KG1fZGVzdGluYXRp
b25CdWZmZXIuY2FwYWNpdHkoKSAvIG1fbWF4T3V0cHV0UGFja2V0U2l6ZSk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworc2l6ZV90IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y29tcHV0
ZUJ1ZmZlclNpemVGb3JBdWRpb0Zvcm1hdChBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gZm9y
bWF0LCBVSW50MzIgbWF4T3V0cHV0UGFja2V0U2l6ZSwgRmxvYXQzMiBkdXJhdGlvbikKK3sKKyAg
ICBVSW50MzIgbnVtUGFja2V0cyA9IChmb3JtYXQubVNhbXBsZVJhdGUgKiBkdXJhdGlvbikgLyBm
b3JtYXQubUZyYW1lc1BlclBhY2tldDsKKyAgICBVSW50MzIgb3V0cHV0UGFja2V0U2l6ZSA9IGZv
cm1hdC5tQnl0ZXNQZXJQYWNrZXQgPyBmb3JtYXQubUJ5dGVzUGVyUGFja2V0IDogbWF4T3V0cHV0
UGFja2V0U2l6ZTsKKyAgICBVSW50MzIgYnVmZmVyU2l6ZSA9IG51bVBhY2tldHMgKiBvdXRwdXRQ
YWNrZXRTaXplOworCisgICAgcmV0dXJuIGJ1ZmZlclNpemU7Cit9CisKK3ZvaWQgQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZChDTVNhbXBsZUJ1
ZmZlclJlZiBidWZmZXIpCit7CisgICAgaWYgKENNVElNRV9JU19JTlZBTElEKG1fcmVtYWluaW5n
UHJpbWVEdXJhdGlvbikpIHsKKyAgICAgICAgQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gcHJpbWVJ
bmZvIHsgMCwgMCB9OworICAgICAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihwcmltZUluZm8pOwor
CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2Nv
bnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyUHJpbWVJbmZvLCAmc2l6ZSwgJnByaW1lSW5m
bykpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyUHJpbWVJbmZvIGZh
aWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uID0gQ01UaW1lTWFrZShwcmltZUluZm8u
bGVhZGluZ0ZyYW1lcywgbV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSk7CisgICAgfQor
CisgICAgaWYgKENNVElNRV9DT01QQVJFX0lOTElORShrQ01UaW1lWmVybywgPCwgbV9yZW1haW5p
bmdQcmltZUR1cmF0aW9uKSkgeworICAgICAgICBDTVRpbWUgc2FtcGxlRHVyYXRpb24gPSBDTVNh
bXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIENNVGltZSB0cmltRHVyYXRp
b24gPSBDTVRpbWVNaW5pbXVtKHNhbXBsZUR1cmF0aW9uLCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRp
b24pOworICAgICAgICBDRkRpY3Rpb25hcnlSZWYgdHJpbUF0U3RhcnREaWN0ID0gQ01UaW1lQ29w
eUFzRGljdGlvbmFyeSh0cmltRHVyYXRpb24sIGtDRkFsbG9jYXRvckRlZmF1bHQpOworICAgICAg
ICBDTVNldEF0dGFjaG1lbnQoYnVmZmVyLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1Ry
aW1EdXJhdGlvbkF0U3RhcnQsIHRyaW1BdFN0YXJ0RGljdCwga0NNQXR0YWNobWVudE1vZGVfU2hv
dWxkUHJvcGFnYXRlKTsKKyAgICAgICAgQ0ZSZWxlYXNlKHRyaW1BdFN0YXJ0RGljdCk7CisgICAg
ICAgIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiA9IENNVGltZVN1YnRyYWN0KG1fcmVtYWluaW5n
UHJpbWVEdXJhdGlvbiwgdHJpbUR1cmF0aW9uKTsKKyAgICB9Cit9CisKK1JldGFpblB0cjxOU051
bWJlcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpncmFkdWFsRGVjb2RlclJlZnJlc2hD
b3VudCgpCit7CisgICAgVUludDMyIGRlbGF5U2l6ZSA9IHNpemVvZih1aW50MzJfdCk7CisgICAg
dWludDMyX3Qgb3JpZ2luYWxEZWxheU1vZGUgPSAwOworICAgIGlmIChhdXRvIGVycm9yID0gQXVk
aW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9w
ZXJ0eURlbGF5TW9kZSwgJmRlbGF5U2l6ZSwgJm9yaWdpbmFsRGVsYXlNb2RlKSkgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBnZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgdWludDMyX3Qgb3B0
aW1hbERlbGF5TW9kZSA9IGtBdWRpb0NvZGVjRGVsYXlNb2RlX09wdGltYWw7CisgICAgaWYgKGF1
dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBr
QXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCBkZWxheVNpemUsICZvcHRpbWFsRGVsYXlNb2Rl
KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAg
VUludDMyIHByaW1lU2l6ZSA9IHNpemVvZihBdWRpb0NvZGVjUHJpbWVJbmZvKTsKKyAgICBBdWRp
b0NvZGVjUHJpbWVJbmZvIHByaW1lSW5mbyB7IDAsIDAgfTsKKyAgICBpZiAoYXV0byBlcnJvciA9
IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVj
UHJvcGVydHlQcmltZUluZm8sICZwcmltZVNpemUsICZwcmltZUluZm8pKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IGdldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1lSW5mbyBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBpZiAoYXV0byBlcnJvciA9
IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVj
UHJvcGVydHlEZWxheU1vZGUsIGRlbGF5U2l6ZSwgJm9yaWdpbmFsRGVsYXlNb2RlKSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIHJldHVybiBhZG9w
dE5TKFtOU051bWJlciBudW1iZXJXaXRoSW50OihwcmltZUluZm8ubGVhZGluZ0ZyYW1lcyAvIG1f
ZGVzdGluYXRpb25Gb3JtYXQubUZyYW1lc1BlclBhY2tldCldKTsKK30KKworQ01TYW1wbGVCdWZm
ZXJSZWYgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpzYW1wbGVCdWZmZXJXaXRoTnVtUGFj
a2V0cyhVSW50MzIgbnVtUGFja2V0cywgQXVkaW9CdWZmZXJMaXN0IGZpbGxCdWZmZXJMaXN0KQor
eworICAgIFZlY3RvcjxjaGFyPiBjb29raWU7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0
RGVzY3JpcHRpb24pIHsKKyAgICAgICAgVUludDMyIGNvb2tpZVNpemUgPSAwOworCisgICAgICAg
IGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5SW5mbyhtX2NvbnZlcnRlci5n
ZXQoKSwga0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgJmNvb2tpZVNpemUs
IE5VTEwpOworICAgICAgICBpZiAoKGVycm9yID09IG5vRXJyKSAmJiAhIWNvb2tpZVNpemUpIHsK
KyAgICAgICAgICAgIGNvb2tpZS5yZXNlcnZlQ2FwYWNpdHkoY29va2llU2l6ZSk7CisKKyAgICAg
ICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZl
cnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgJmNvb2tp
ZVNpemUsIGNvb2tpZS5kYXRhKCkpKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVk
aW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OworICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc3RpbmF0aW9uRm9ybWF0RGVzY3Jp
cHRpb247CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9u
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZtX2Rlc3RpbmF0aW9uRm9ybWF0LCAwLCBOVUxM
LCBjb29raWVTaXplLCBjb29raWUuZGF0YSgpLCBOVUxMLCAmZGVzdGluYXRpb25Gb3JtYXREZXNj
cmlwdGlvbikpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAg
ICAgIH0KKyAgICAgICAgbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uID0gYWRvcHRDRihk
ZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9nZHJDb3VudE51bSA9IGdy
YWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCk7CisgICAgfQorCisgICAgY2hhciAqZGF0YSA9IHN0
YXRpY19jYXN0PGNoYXIqPihmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSk7CisgICAg
c2l6ZV90IGRhdGFTaXplID0gZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6
ZTsKKworICAgIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tCdWZmZXI7CisgICAgaWYgKGF1dG8gZXJy
b3IgPSBDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1
bHQsIE5VTEwsIGRhdGFTaXplLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCAwLCBkYXRhU2l6
ZSwga0NNQmxvY2tCdWZmZXJBc3N1cmVNZW1vcnlOb3dGbGFnLCAmYmxvY2tCdWZmZXIpKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2sgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIGF1dG8gYnVmZmVy
ID0gYWRvcHRDRihibG9ja0J1ZmZlcik7CisKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tC
dWZmZXJSZXBsYWNlRGF0YUJ5dGVzKGRhdGEsIGJ1ZmZlci5nZXQoKSwgMCwgZGF0YVNpemUpKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIENNU2FtcGxlQnVm
ZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKKyAgICBhdXRvIGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1ZmZl
ckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVy
LmdldCgpLCB0cnVlLCBOVUxMLCBOVUxMLCBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24u
Z2V0KCksIG51bVBhY2tldHMsIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCwg
bV9kZXN0aW5hdGlvblBhY2tldERlc2NyaXB0aW9ucy5kYXRhKCksICZzYW1wbGVCdWZmZXIpOwor
ICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0
aFBhY2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICB9CisKKyAgICBpZiAoW21fZ2RyQ291bnROdW0gaW50VmFsdWVdKQorICAg
ICAgICBDTVNldEF0dGFjaG1lbnQoc2FtcGxlQnVmZmVyLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2ht
ZW50S2V5X0dyYWR1YWxEZWNvZGVyUmVmcmVzaCwgKF9fYnJpZGdlIENGVHlwZVJlZiltX2dkckNv
dW50TnVtLmdldCgpLCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOworCisgICAg
cmV0dXJuIHNhbXBsZUJ1ZmZlcjsKK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjphdWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jKEF1ZGlvQ29udmVydGVy
UmVmLCBVSW50MzIgKm51bU91dHB1dFBhY2tldHNQdHIsIEF1ZGlvQnVmZmVyTGlzdCAqYnVmZmVy
TGlzdCwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbiAqKnBhY2tldERlc2NyaXB0aW9uT3V0
LCB2b2lkICphdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpCit7CisgICAgYXV0byAqY29tcHJl
c3NvciA9IHN0YXRpY19jYXN0PEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcio+KGF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcik7CisgICAgcmV0dXJuIGNvbXByZXNzb3ItPnByb3ZpZGVTb3Vy
Y2VEYXRhTnVtT3V0cHV0UGFja2V0cyhudW1PdXRwdXRQYWNrZXRzUHRyLCBidWZmZXJMaXN0LCBw
YWNrZXREZXNjcmlwdGlvbk91dCk7Cit9CisKK09TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKFVJbnQzMiogbnVtT3V0
cHV0UGFja2V0c1B0ciwgQXVkaW9CdWZmZXJMaXN0KiBhdWRpb0J1ZmZlckxpc3QsIEF1ZGlvU3Ry
ZWFtUGFja2V0RGVzY3JpcHRpb24qKiBwYWNrZXREZXNjcmlwdGlvbk91dCkKK3sKKyAgICBpZiAo
cGFja2V0RGVzY3JpcHRpb25PdXQpCisgICAgICAgICpwYWNrZXREZXNjcmlwdGlvbk91dCA9IE5V
TEw7CisKKyAgICBjb25zdCBVSW50MzIgbnVtUGFja2V0c1RvQ29weSA9ICpudW1PdXRwdXRQYWNr
ZXRzUHRyOworICAgIHNpemVfdCBudW1CeXRlc1RvQ29weSA9IChudW1QYWNrZXRzVG9Db3B5ICog
bV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKKworICAgIGlmIChhdWRpb0J1ZmZlckxp
c3QtPm1OdW1iZXJCdWZmZXJzID09IDEpIHsKKyAgICAgICAgc2l6ZV90IGN1cnJlbnRPZmZzZXRJ
blNvdXJjZUJ1ZmZlciA9IDA7CisKKyAgICAgICAgbV9zb3VyY2VCdWZmZXIucmVzZXJ2ZUNhcGFj
aXR5KG51bUJ5dGVzVG9Db3B5KTsKKworICAgICAgICB3aGlsZSAobnVtQnl0ZXNUb0NvcHkpIHsK
KyAgICAgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA8PSBtX2N1cnJlbnRPZmZz
ZXRJblNhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxv
Y2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IG51
bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoQ01CdWZmZXJRdWV1ZUlz
RW1wdHkobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0YoKENNU2Ft
cGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJl
dGFpbihtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworICAgICAgICAgICAgICAgIG1fc2Ft
cGxlQmxvY2tCdWZmZXIgPSBhZG9wdENGKChDTUJsb2NrQnVmZmVyUmVmKShjb25zdF9jYXN0PHZv
aWQqPihDRlJldGFpbihDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdl
dCgpKSkpKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7Cisg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciBmYWlsZWQi
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAg
ICAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFM
ZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9jdXJy
ZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgc2l6ZV90
IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1CeXRlc1RvQ29weSwg
KG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIC0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1
ZmZlcikpOworICAgICAgICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNv
cHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5T
YW1wbGVCbG9ja0J1ZmZlciwgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiwgKG1fc291cmNl
QnVmZmVyLmRhdGEoKSArIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcikpKSB7CisgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIG51bUJ5dGVzVG9Db3B5IC09IG51bUJ5dGVzVG9Db3B5
RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICAgICAgY3VycmVudE9mZnNldEluU291cmNlQnVm
ZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICAgICAgbV9j
dXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1w
bGVCYnVmOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGF1ZGlvQnVmZmVyTGlz
dC0+bUJ1ZmZlcnNbMF0ubURhdGEgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7CisgICAgICAgIGF1
ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGN1cnJlbnRPZmZzZXRJ
blNvdXJjZUJ1ZmZlcjsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tTnVt
YmVyQ2hhbm5lbHMgPSBtX3NvdXJjZUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKworICAgICAg
ICAqbnVtT3V0cHV0UGFja2V0c1B0ciA9IChhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1E
YXRhQnl0ZVNpemUgLyBtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpOworICAgICAgICBy
ZXR1cm4gbm9FcnI7CisgICAgfQorCisgICAgQVNTRVJUKGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJl
ckJ1ZmZlcnMgPT0gMik7CisKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRlcmxlYXZlZCBkYXRh
IGJ5IHVuaW50ZXJsZWF2aW5nIG1fc291cmNlQnVmZmVyIGlmIG5lZWRlZC4KKyAgICBBU1NFUlQo
bV9zb3VyY2VGb3JtYXQubUZvcm1hdEZsYWdzICYga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJs
ZWF2ZWQpOworCisgICAgbV9zb3VyY2VCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KDIgKiBudW1CeXRl
c1RvQ29weSk7CisgICAgYXV0byogZmlyc3RDaGFubmVsID0gbV9zb3VyY2VCdWZmZXIuZGF0YSgp
OworICAgIGF1dG8qIHNlY29uZENoYW5uZWwgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCkgKyBudW1C
eXRlc1RvQ29weTsKKworICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgPSAw
OworICAgIHdoaWxlIChudW1CeXRlc1RvQ29weSkgeworICAgICAgICBpZiAobV9zYW1wbGVCbG9j
a0J1ZmZlclNpemUgPD0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikgeworICAg
ICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBtX3Nh
bXBsZUJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2Nr
QnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChDTUJ1ZmZl
clF1ZXVlSXNFbXB0eShtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0YoKENNU2Ft
cGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJl
dGFpbihtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworICAgICAgICAgICAgbV9zYW1wbGVC
bG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+
KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkp
KSkpKTsKKyAgICAgICAgICAgIGlmICghbV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciBmYWlsZWQiKTsKKyAgICAgICAg
ICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgbV9j
dXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6
ZSA9IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fc2FtcGxlQmxvY2tCdWZmZXIuZ2V0KCkp
IC8gMjsKKyAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAw
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAg
ICAgICAgIHNpemVfdCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmID0gc3RkOjptaW4obnVt
Qnl0ZXNUb0NvcHksIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSAtIG1fY3VycmVudE9mZnNldElu
U2FtcGxlQmxvY2tCdWZmZXIpKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9j
a0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50
T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciwgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1Ziwg
KGZpcnN0Q2hhbm5lbCArIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcikpKSB7CisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgZmlyc3QgY2hhbm5lbCBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5
RGF0YUJ5dGVzKG1fc2FtcGxlQmxvY2tCdWZmZXIuZ2V0KCksIG1fY3VycmVudE9mZnNldEluU2Ft
cGxlQmxvY2tCdWZmZXIgKyBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSwgbnVtQnl0ZXNUb0NvcHlG
cm9tU2FtcGxlQmJ1ZiwgKHNlY29uZENoYW5uZWwgKyBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZm
ZXIpKSkgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIHNl
Y29uZCBjaGFubmVsIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG51bUJ5dGVzVG9Db3B5IC09
IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICBjdXJyZW50T2Zmc2V0
SW5Tb3VyY2VCdWZmZXIgKz0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAg
ICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgKz0gbnVtQnl0ZXNUb0NvcHlG
cm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1ZGlvQnVmZmVyTGlzdC0+
bUJ1ZmZlcnNbMF0ubURhdGEgPSBmaXJzdENoYW5uZWw7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5t
QnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOwor
ICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gMTsKKwor
ICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubURhdGEgPSBzZWNvbmRDaGFubmVsOwor
ICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubURhdGFCeXRlU2l6ZSA9IGN1cnJlbnRP
ZmZzZXRJblNvdXJjZUJ1ZmZlcjsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzFdLm1O
dW1iZXJDaGFubmVscyA9IDE7CisKKyAgICAqbnVtT3V0cHV0UGFja2V0c1B0ciA9IChhdWRpb0J1
ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgLyBtX3NvdXJjZUZvcm1hdC5tQnl0
ZXNQZXJQYWNrZXQpOworICAgIHJldHVybiBub0VycjsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUoQ01U
aW1lIGxvd1dhdGVyVGltZSkKK3sKKyAgICBpZiAoIW1fY29udmVydGVyKSB7CisgICAgICAgIGF1
dG8gYnVmZmVyID0gKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZl
clF1ZXVlR2V0SGVhZChtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7CisgICAgICAgIEFTU0VS
VChidWZmZXIpOworCisgICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFt
cCA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlcik7CisgICAg
ICAgIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNU2FtcGxlQnVmZmVy
R2V0T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlcik7CisKKyAgICAgICAgYXV0byBm
b3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24oYnVm
ZmVyKTsKKyAgICAgICAgaWYgKCFpbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNj
cmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbiwgbV9vdXRwdXRDb2RlY1R5cGUpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHdoaWxlIChDTVRJTUVfSVNfSU5WQUxJRChsb3dXYXRl
clRpbWUpIHx8IENNVElNRV9DT01QQVJFX0lOTElORShsb3dXYXRlclRpbWUsIDwsIENNQnVmZmVy
UXVldWVHZXREdXJhdGlvbihtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkgeworICAgICAgICBB
dWRpb0J1ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3Q7CisKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3Qu
bU51bWJlckJ1ZmZlcnMgPSAxOworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5t
TnVtYmVyQ2hhbm5lbHMgPSBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lOwor
ICAgICAgICBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gKFVJbnQz
MiltX2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5KCk7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0
Lm1CdWZmZXJzWzBdLm1EYXRhID0gbV9kZXN0aW5hdGlvbkJ1ZmZlci5kYXRhKCk7CisKKyAgICAg
ICAgVUludDMyIG91dHB1dFBhY2tldFNpemUgPSBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1Bl
clBhY2tldCA/IG1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0IDogbV9tYXhPdXRw
dXRQYWNrZXRTaXplOworICAgICAgICBVSW50MzIgbnVtT3V0cHV0UGFja2V0cyA9IChVSW50MzIp
bV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpIC8gb3V0cHV0UGFja2V0U2l6ZTsKKworICAg
ICAgICBhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJGaWxsQ29tcGxleEJ1ZmZlcihtX2NvbnZl
cnRlci5nZXQoKSwgYXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYywgdGhpcywgJm51
bU91dHB1dFBhY2tldHMsICZmaWxsQnVmZmVyTGlzdCwgbV9kZXN0aW5hdGlvblBhY2tldERlc2Ny
aXB0aW9ucy5kYXRhKCkpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIEF1
ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW51bU91dHB1dFBh
Y2tldHMpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGJ1ZmZlciA9IHNhbXBs
ZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKG51bU91dHB1dFBhY2tldHMsIGZpbGxCdWZmZXJMaXN0KTsK
KworICAgICAgICBhdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZChidWZmZXIpOworCisgICAgICAg
IGVycm9yID0gQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVm
ZmVyLCBtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXApOworICAgICAgICBpZiAo
ZXJyb3IpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNU2FtcGxlQnVmZmVyU2V0T3V0cHV0UHJlc2VudGF0
aW9uVGltZVN0YW1wIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgQ01UaW1lIG5hdGl2ZUR1cmF0aW9uID0gQ01TYW1wbGVC
dWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgICAgICBtX2N1cnJlbnROYXRpdmVQcmVzZW50
YXRpb25UaW1lU3RhbXAgPSBDTVRpbWVBZGQobV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGlt
ZVN0YW1wLCBuYXRpdmVEdXJhdGlvbik7CisKKyAgICAgICAgQ01UaW1lIG91dHB1dER1cmF0aW9u
ID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXREdXJhdGlvbihidWZmZXIpOworICAgICAgICBtX2N1
cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVRpbWVBZGQobV9jdXJyZW50T3V0
cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wLCBvdXRwdXREdXJhdGlvbik7CisKKyAgICAgICAgZXJy
b3IgPSBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZShtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZm
ZXIpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVF
bnF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJv
Y2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgYXV0byBl
cnJvciA9IENNQnVmZmVyUXVldWVFbnF1ZXVlKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSwgYnVm
ZmVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CisKKyAgICBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1l
KG1fbG93V2F0ZXJUaW1lKTsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgZGlzcGF0
Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGlmIChtX2lzRW5jb2Rp
bmcpCisgICAgICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyKGJ1ZmZlcik7CisgICAgfSk7Cit9
CisKK0NNU2FtcGxlQnVmZmVyUmVmIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z2V0T3V0
cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gKENNU2FtcGxlQnVmZmVyUmVmKShjb25z
dF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0SGVhZChtX291dHB1dEJ1ZmZlclF1ZXVlLmdl
dCgpKSkpOworfQorCitSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIGFk
b3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVl
RGVxdWV1ZUFuZFJldGFpbihtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsKK30KKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5k
ZXggYjE0N2NhMjg4MjliMGYxMDMwYmRhNzRhMDg0MjZjNDU2NWU5ODcxZS4uMDUxODYwODZhMjU2
MTYwMjQ2Y2Q4ZDMyMjE1OGM1Njg5MWE0MmM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTI0LDcgKzI0LDkgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorCisjaW5jbHVkZSAiQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oIgogCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC0zNSwxMCArMzcsMTYgQEAKICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5o
PgogCisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+CisjaW5jbHVkZSA8Q29y
ZU1lZGlhL0NNVGltZS5oPgorCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAq
Q01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERl
c2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVl
Q01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiAqQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbjsKIAog
T0JKQ19DTEFTUyBBVkFzc2V0V3JpdGVyOwogT0JKQ19DTEFTUyBBVkFzc2V0V3JpdGVySW5wdXQ7
CitPQkpDX0NMQVNTIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdURiB7
CiBjbGFzcyBNZWRpYVRpbWU7CkBAIC00Niw1MSArNTQsNzIgQEAgY2xhc3MgTWVkaWFUaW1lOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjsKIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOworY2xhc3MgVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdlYWtQ
dHJGYWN0b3J5SW5pdGlhbGl6YXRpb246OkVhZ2VyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlKiBhdWRpb1RyYWNrLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSog
dmlkZW9UcmFjayk7CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cj4gY3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgICAgfk1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCk7Ci0gICAgCi0gICAgYm9vbCBzZXR1cFdyaXRlcigp
OwotICAgIGJvb2wgc2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotICAgIGJv
b2wgc2V0QXVkaW9JbnB1dCgpOworCiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihD
TVNhbXBsZUJ1ZmZlclJlZik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcihjb25z
dCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBjb25z
dCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7CiAg
ICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmKT4mJik7CiAKKyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgY2hhciosIHNpemVfdCk7
CisgICAgdm9pZCBhcHBlbmREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCiBwcml2YXRlOgot
ICAgIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiYm
LCBTdHJpbmcmJiBwYXRoKTsKKyAgICBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihib29sIGhh
c0F1ZGlvLCBib29sIGhhc1ZpZGVvKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBSZXRhaW5Q
dHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7Ci0gICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJ
bnB1dD4gbV92aWRlb0lucHV0OwotICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1f
YXVkaW9JbnB1dDsKLQotICAgIFN0cmluZyBtX3BhdGg7Ci0gICAgTG9jayBtX3ZpZGVvTG9jazsK
LSAgICBMb2NrIG1fYXVkaW9Mb2NrOwotICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRp
bmdTZW1hcGhvcmU7Ci0gICAgQmluYXJ5U2VtYXBob3JlIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2Vt
YXBob3JlOwotICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9y
ZTsKKyAgICBib29sIGluaXRpYWxpemUoKTsKKworICAgIHN0YXRpYyB2b2lkIGNvbXByZXNzZWRW
aWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2Vu
KTsKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2
b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CisKKyAgICB2b2lkIHN0YXJ0QXNzZXRX
cml0ZXIoKTsKKyAgICB2b2lkIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisKKyAg
ICBib29sIGFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpOworICAgIGJvb2wgYXBw
ZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKCk7CisKKyAgICB2b2lkIHByb2Nlc3NOZXdD
b21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCk7CisgICAgdm9pZCBwcm9jZXNzTmV3Q29tcHJl
c3NlZFZpZGVvU2FtcGxlQnVmZmVycygpOworCisgICAgdm9pZCBmbHVzaENvbXByZXNzZWRTYW1w
bGVCdWZmZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBhcHBlbmRF
bmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworCiAgICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNGaXJzdEF1ZGlvU2FtcGxlIHsg
dHJ1ZSB9OwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9hdWRpb1B1bGxRdWV1ZTsKLSAgICBkaXNw
YXRjaF9xdWV1ZV90IG1fdmlkZW9QdWxsUXVldWU7Ci0gICAgRGVxdWU8UmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPj4gbV92aWRlb0J1ZmZlclBvb2w7Ci0gICAgRGVxdWU8UmV0YWluUHRyPENN
U2FtcGxlQnVmZmVyUmVmPj4gbV9hdWRpb0J1ZmZlclBvb2w7CisKKyAgICBSZXRhaW5QdHI8QVZB
c3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBib29sIG1faXNTdG9wcGluZyB7IGZhbHNlIH07
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRs
ZXI7CisKKyAgICBib29sIG1faGFzQXVkaW87CisgICAgYm9vbCBtX2hhc1ZpZGVvOworCisgICAg
UmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlv
bjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBtX2F1
ZGlvQ29tcHJlc3NvcjsKKyAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX2F1ZGlv
QXNzZXRXcml0ZXJJbnB1dDsKKworICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVm
PiBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV92aWRlb0NvbXByZXNzb3I7CisgICAgUmV0YWluUHRyPEFW
QXNzZXRXcml0ZXJJbnB1dD4gbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQ7CisgICAgQ01UaW1lIG1f
bGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZTsKKyAgICBDTVRpbWUgbV9sYXN0VmlkZW9EZWNvZGlu
Z1RpbWU7CisgICAgYm9vbCBtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMgeyBmYWxzZSB9OworCisg
ICAgUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4gbV93cml0ZXJEZWxlZ2F0ZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJ
VEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0KaW5kZXggMjMzNTRmNDc4NGRlMDkyZjA0ODdjMTg1NGZjNWIyNmE1ZTIy
MTFhYy4uZWMzYmI2ZWY0MzI0NWU5ZTM5Mjk4YjAxZmZkMjdiNmJhZTljNjFhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAt
MjYsMjUzICsyNiwzNDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZB
U1NFVFdSSVRFUkRFTEVHQVRFKQogCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmgiCiAjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUg
IlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVy
TGlzdC5oIgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyLmg+CiAjaW5jbHVk
ZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJJbnB1dC5oPgorI2luY2x1ZGUgPEFWRm91bmRh
dGlvbi9BVkFzc2V0V3JpdGVyX1ByaXZhdGUuaD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9u
L01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0
TGluay5oPgorI2luY2x1ZGUgPHd0Zi9CbG9ja1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0
TGluay5oPgogCi0jdW5kZWYgQVZFbmNvZGVyQml0UmF0ZUtleQotI2RlZmluZSBBVkVuY29kZXJC
aXRSYXRlS2V5IGdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2soKQotI3VuZGVmIEFW
Rm9ybWF0SURLZXkKLSNkZWZpbmUgQVZGb3JtYXRJREtleSBnZXRBVkZvcm1hdElES2V5V2l0aEZh
bGxiYWNrKCkKLSN1bmRlZiBBVk51bWJlck9mQ2hhbm5lbHNLZXkKLSNkZWZpbmUgQVZOdW1iZXJP
ZkNoYW5uZWxzS2V5IGdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCi0jdW5k
ZWYgQVZTYW1wbGVSYXRlS2V5Ci0jZGVmaW5lIEFWU2FtcGxlUmF0ZUtleSBnZXRBVlNhbXBsZVJh
dGVLZXlXaXRoRmFsbGJhY2soKQorQGludGVyZmFjZSBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
OiBOU09iamVjdCA8QVZBc3NldFdyaXRlckRlbGVnYXRlPiB7CisgICAgV2Vha1B0cjxXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gbV93cml0ZXI7Cit9CiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIqKXdyaXRlcjsKKy0gKHZvaWQpY2xvc2U7CiAKLXVzaW5nIG5h
bWVzcGFjZSBQQUw7CitAZW5kCiAKLXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZGb3JtYXRJREtleVdp
dGhGYWxsYmFjaygpCitAaW1wbGVtZW50YXRpb24gV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIHsK
K307CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXIqKXdyaXRlcgogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3Vu
ZGF0aW9uX0FWRm9ybWF0SURLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRh
dGlvbl9BVkZvcm1hdElES2V5KCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmIChzZWxmKQorICAgICAgICBzZWxmLT5tX3dyaXRl
ciA9IG1ha2VXZWFrUHRyKHdyaXRlcik7CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwg
IkZhaWxlZCB0byBsb2FkIEFWRm9ybWF0SURLZXkiKTsKLSAgICByZXR1cm4gQCJBVkZvcm1hdElE
S2V5IjsKKyAgICByZXR1cm4gc2VsZjsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVk51bWJl
ck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2soKQorLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3Nl
dFdyaXRlciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YTooTlNE
YXRhICopZnJhZ21lbnRlZEhlYWRlckRhdGEKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91
bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5lbHNLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0
X0FWRm91bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5lbHNLZXkoKTsKKyAgICBVTlVTRURfUEFSQU0o
YXNzZXRXcml0ZXIpOworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKGF1
dG8gc2l6ZSA9IFtmcmFnbWVudGVkSGVhZGVyRGF0YSBsZW5ndGhdKSB7CisgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0
ZXJEZWxlZ2F0ZT4oc2VsZiksIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwg
c2l6ZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPm1f
d3JpdGVyKQorICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlci0+YXBw
ZW5kRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFp
bGVkIHRvIGxvYWQgQVZOdW1iZXJPZkNoYW5uZWxzS2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZOdW1i
ZXJPZkNoYW5uZWxzS2V5IjsKKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLT5h
cHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZEhlYWRlckRhdGEg
Ynl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pOwogfQogCi1zdGF0aWMgTlNT
dHJpbmcgKmdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCistICh2b2lkKWFzc2V0V3Jp
dGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRNZWRp
YURhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRNZWRpYURhdGEgZnJhZ21lbnRlZE1lZGlhRGF0YVJl
cG9ydDooQVZGcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0ICopZnJhZ21lbnRlZE1lZGlhRGF0YVJl
cG9ydAogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtl
eSgpKQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtl
eSgpOworICAgIFVOVVNFRF9QQVJBTShhc3NldFdyaXRlcik7CisgICAgVU5VU0VEX1BBUkFNKGZy
YWdtZW50ZWRNZWRpYURhdGFSZXBvcnQpOworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gc2l6ZSA9IFtmcmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0pIHsKKyAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2Vi
QVZBc3NldFdyaXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkTWVkaWFEYXRh
IGJ5dGVzXSksIHNpemUpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0
ZWRTZWxmLT5tX3dyaXRlcikKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+bV93
cml0ZXItPmFwcGVuZERhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWU2FtcGxlUmF0ZUtleSIpOwotICAgIHJldHVybiBAIkFW
U2FtcGxlUmF0ZUtleSI7CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dyaXRlci0+YXBw
ZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRNZWRpYURhdGEgYnl0
ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSk7CiB9CiAKLXN0YXRpYyBOU1N0cmlu
ZyAqZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCistICh2b2lkKWNsb3NlCiB7
Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgp
KQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVL
ZXkoKTsKKyAgICBtX3dyaXRlciA9IG51bGxwdHI7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgUEFMOwogCi0gICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkVuY29kZXJCaXRSYXRlS2V5Iik7Ci0gICAgcmV0dXJu
IEAiQVZFbmNvZGVyQml0UmF0ZUtleSI7CitSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihoYXNBdWRpbywgd2lkdGggJiYgaGVpZ2h0KSk7Cisg
ICAgaWYgKCF3cml0ZXItPmluaXRpYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIHdyaXRlcjsKIH0KIAotUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
PiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlKiBhdWRpb1RyYWNrLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdmlk
ZW9UcmFjaykKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRWaWRl
b091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQgKm1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBD
TUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKQogewotICAgIGludCB3aWR0aCA9IDAsIGhlaWdodCA9
IDA7Ci0gICAgaWYgKHZpZGVvVHJhY2spIHsKLSAgICAgICAgYXV0byYgc2V0dGluZ3MgPSB2aWRl
b1RyYWNrLT5zZXR0aW5ncygpOwotICAgICAgICB3aWR0aCA9IHNldHRpbmdzLndpZHRoKCk7Ci0g
ICAgICAgIGhlaWdodCA9IHNldHRpbmdzLmhlaWdodCgpOwotICAgIH0KLSAgICByZXR1cm4gY3Jl
YXRlKCEhYXVkaW9UcmFjaywgd2lkdGgsIGhlaWdodCk7CisgICAgYXV0byAqd3JpdGVyID0gc3Rh
dGljX2Nhc3Q8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcik7CisgICAgd3JpdGVyLT5wcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVm
ZmVycygpOwogfQogCi1SZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZEF1ZGlv
T3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCAqbWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENN
QnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pCiB7Ci0gICAgTlNTdHJpbmcgKmRpcmVjdG9yeSA9IEZp
bGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAInZpZGVvcyIpOwotICAgIE5TU3Ry
aW5nICpmaWxlbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiLyVsbGQubXA0Iiwg
Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSkudmFsdWVdOwotICAgIE5T
U3RyaW5nICpwYXRoID0gW2RpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpmaWxlbmFt
ZV07CisgICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7CisgICAgd3JpdGVyLT5wcm9jZXNz
TmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOworfQorCitNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9vbCBoYXNBdWRpbywgYm9v
bCBoYXNWaWRlbykKKyAgICA6IG1faGFzQXVkaW8oaGFzQXVkaW8pCisgICAgLCBtX2hhc1ZpZGVv
KGhhc1ZpZGVvKQoreworfQorCitNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKCkKK3sKKyAgICBjbGVhcigpOworfQogCi0gICAgTlNVUkwgKm91
dHB1dFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF07Ci0gICAgU3RyaW5nIGZpbGVQ
YXRoID0gW3BhdGggVVRGOFN0cmluZ107Citib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojppbml0aWFsaXplKCkKK3sKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBhdXRvIGF2
QXNzZXRXcml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkg
aW5pdFdpdGhVUkw6b3V0cHV0VVJMIGZpbGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJy
b3JdKTsKKyAgICBtX3dyaXRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5z
dGFuY2UoKSBpbml0V2l0aEZpbGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsK
ICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVs
ZCIsIChsb25nKWVycm9yLmNvZGUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpLCBXVEZNb3Zl
KGZpbGVQYXRoKSkpOworICAgIG1fd3JpdGVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQVZBc3Nl
dFdyaXRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFdyaXRlcjogdGhpc10pOworICAgIFttX3dy
aXRlci5nZXQoKSBzZXREZWxlZ2F0ZTptX3dyaXRlckRlbGVnYXRlLmdldCgpXTsKIAotICAgIGlm
IChoYXNBdWRpbyAmJiAhd3JpdGVyLT5zZXRBdWRpb0lucHV0KCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewotICAgICAgICBpZiAoIXdyaXRl
ci0+c2V0VmlkZW9JbnB1dCh3aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmIChtX2hhc0F1ZGlvKSB7CisgICAgICAgIG1fYXVkaW9Db21wcmVzc29yID0g
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoY29tcHJlc3NlZEF1ZGlvT3V0cHV0
QnVmZmVyQ2FsbGJhY2ssIHRoaXMpOworICAgICAgICBpZiAoIW1fYXVkaW9Db21wcmVzc29yKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHdy
aXRlcik7CisgICAgaWYgKG1faGFzVmlkZW8pIHsKKyAgICAgICAgbV92aWRlb0NvbXByZXNzb3Ig
PSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShrQ01WaWRlb0NvZGVjVHlwZV9I
MjY0LCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7CisgICAgICAg
IGlmICghbV92aWRlb0NvbXByZXNzb3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOwogfQogCi1NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYgYXZBc3Nl
dFdyaXRlciwgU3RyaW5nJiYgZmlsZVBhdGgpCi0gICAgOiBtX3dyaXRlcihXVEZNb3ZlKGF2QXNz
ZXRXcml0ZXIpKQotICAgICwgbV9wYXRoKFdURk1vdmUoZmlsZVBhdGgpKQordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZl
cnMoKQogeworICAgIEFTU0VSVChtX2hhc1ZpZGVvKTsKKyAgICBpZiAoIW1fdmlkZW9Gb3JtYXRE
ZXNjcmlwdGlvbikgeworICAgICAgICBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBs
ZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKG1fdmlkZW9Db21wcmVzc29yLT5nZXRPdXRwdXRT
YW1wbGVCdWZmZXIoKSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIHRoaXNdIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAobV9oYXNBdWRpbyAmJiAhbV9h
dWRpb0Zvcm1hdERlc2NyaXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgc3RhcnRBc3NldFdyaXRlcigpOworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFt
X2hhc1N0YXJ0ZWRXcml0aW5nKQorICAgICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3Nl
ZFNhbXBsZUJ1ZmZlcnMoKTsKIH0KIAotTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojpwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpCiB7Ci0gICAgY2xlYXIo
KTsKKyAgICBBU1NFUlQobV9oYXNBdWRpbyk7CisgICAgaWYgKCFtX2F1ZGlvRm9ybWF0RGVzY3Jp
cHRpb24pIHsKKyAgICAgICAgbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZm
ZXJHZXRGb3JtYXREZXNjcmlwdGlvbihtX2F1ZGlvQ29tcHJlc3Nvci0+Z2V0T3V0cHV0U2FtcGxl
QnVmZmVyKCkpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCB0aGlzXSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1faGFzVmlkZW8g
JiYgIW1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICAgICAgfSk7CisgICAgfQorICAg
IGlmICghbV9oYXNTdGFydGVkV3JpdGluZykKKyAgICAgICAgcmV0dXJuOworICAgIGFwcGVuZENv
bXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNsZWFyKCkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNz
ZXRXcml0ZXIoKQogewotICAgIGlmIChtX3ZpZGVvSW5wdXQpIHsKLSAgICAgICAgbV92aWRlb0lu
cHV0LmNsZWFyKCk7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV92aWRlb1B1bGxRdWV1ZSk7
CisgICAgaWYgKG1faGFzVmlkZW8pIHsKKyAgICAgICAgbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0
aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOm5pbCBzb3VyY2VGb3Jt
YXRIaW50Om1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKV0pOworICAgICAgICBbbV92aWRl
b0Fzc2V0V3JpdGVySW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07Cisg
ICAgICAgIGlmICghW21fd3JpdGVyLmdldCgpIGNhbkFkZElucHV0Om1fdmlkZW9Bc3NldFdyaXRl
cklucHV0LmdldCgpXSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlciBmYWlsZWQg
Y2FuQWRkSW5wdXQgZm9yIHZpZGVvIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgW21fd3JpdGVyLmdldCgpIGFkZElucHV0Om1fdmlkZW9Bc3NldFdyaXRlcklucHV0
LmdldCgpXTsKICAgICB9Ci0gICAgaWYgKG1fYXVkaW9JbnB1dCkgewotICAgICAgICBtX2F1ZGlv
SW5wdXQuY2xlYXIoKTsKLSAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2F1ZGlvUHVsbFF1ZXVl
KTsKKyAgICAKKyAgICBpZiAobV9oYXNBdWRpbykgeworICAgICAgICBtX2F1ZGlvQXNzZXRXcml0
ZXJJbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgp
IGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6bmlsIHNv
dXJjZUZvcm1hdEhpbnQ6bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7CisgICAgICAg
IFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0
cnVlXTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV9hdWRpb0Fz
c2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVy
IGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgYXVkaW8iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV9hdWRpb0Fzc2V0V3Jp
dGVySW5wdXQuZ2V0KCldOworICAgIH0KKyAgICAKKyAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBz
dGFydFdyaXRpbmddKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIHN0YXJ0
V3JpdGluZyIpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX3dyaXRlcikKLSAg
ICAgICAgbV93cml0ZXIuY2xlYXIoKTsKIAotICAgIG1fZGF0YSA9IG51bGxwdHI7Ci0gICAgaWYg
KGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhh
bmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICBbbV93cml0
ZXIuZ2V0KCkgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOmtDTVRpbWVaZXJvXTsKKworICAgIGFw
cGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisKKyAgICBtX2hhc1N0YXJ0ZWRXcml0aW5n
ID0gdHJ1ZTsKIH0KIAotYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0VmlkZW9J
bnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjphcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKQogewotICAgIEFTU0VSVCgh
bV92aWRlb0lucHV0KTsKLSAgICAKLSAgICBOU0RpY3Rpb25hcnkgKmNvbXByZXNzaW9uUHJvcGVy
dGllcyA9IEB7Ci0gICAgICAgIEFWVmlkZW9BdmVyYWdlQml0UmF0ZUtleSA6IFtOU051bWJlciBu
dW1iZXJXaXRoSW50OndpZHRoICogaGVpZ2h0ICogMTJdLAotICAgICAgICBBVlZpZGVvRXhwZWN0
ZWRTb3VyY2VGcmFtZVJhdGVLZXkgOiBAKDMwKSwKLSAgICAgICAgQVZWaWRlb01heEtleUZyYW1l
SW50ZXJ2YWxLZXkgOiBAKDEyMCksCi0gICAgICAgIEFWVmlkZW9Qcm9maWxlTGV2ZWxLZXkgOiBB
VlZpZGVvUHJvZmlsZUxldmVsSDI2NE1haW5BdXRvTGV2ZWwKLSAgICB9OwotCi0gICAgTlNEaWN0
aW9uYXJ5ICp2aWRlb1NldHRpbmdzID0gQHsKLSAgICAgICAgQVZWaWRlb0NvZGVjS2V5OiBBVlZp
ZGVvQ29kZWNIMjY0LAotICAgICAgICBBVlZpZGVvV2lkdGhLZXk6IFtOU051bWJlciBudW1iZXJX
aXRoSW50OndpZHRoXSwKLSAgICAgICAgQVZWaWRlb0hlaWdodEtleTogW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6aGVpZ2h0XSwKLSAgICAgICAgQVZWaWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tl
eTogY29tcHJlc3Npb25Qcm9wZXJ0aWVzCi0gICAgfTsKLSAgICAKLSAgICBtX3ZpZGVvSW5wdXQg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0
aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOnZpZGVvU2V0dGluZ3Mg
c291cmNlRm9ybWF0SGludDpuaWxdKTsKLSAgICBbbV92aWRlb0lucHV0IHNldEV4cGVjdHNNZWRp
YURhdGFJblJlYWxUaW1lOnRydWVdOwotICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElu
cHV0Om1fdmlkZW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV92aWRlb0lucHV0ID0gbnVsbHB0
cjsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgdmlkZW8gaW5w
dXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7CisgICAgaWYg
KCFtX2F1ZGlvQ29tcHJlc3NvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBb
bV93cml0ZXIgYWRkSW5wdXQ6bV92aWRlb0lucHV0LmdldCgpXTsKLSAgICBtX3ZpZGVvUHVsbFF1
ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3JlVmlkZW9SZWNvcmRpbmdQdWxsQnVm
ZmVyUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworCisgICAgaWYgKCFbbV9hdWRpb0Fz
c2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYXVkaW9Db21wcmVzc29yLT50YWtlT3V0cHV0
U2FtcGxlQnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSBhcHBlbmRTYW1wbGVCdWZmZXI6
YnVmZmVyLmdldCgpXTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6c2V0QXVkaW9JbnB1dCgpCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIoKQogewotICAgIEFTU0VS
VCghbV9hdWRpb0lucHV0KTsKKyAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29yKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBOU0RpY3Rpb25hcnkgKmF1ZGlvU2V0dGluZ3MgPSBAewotICAg
ICAgICBBVkVuY29kZXJCaXRSYXRlS2V5IDogQCgyODAwMCksCi0gICAgICAgIEFWRm9ybWF0SURL
ZXkgOiBAKGtBdWRpb0Zvcm1hdE1QRUc0QUFDKSwKLSAgICAgICAgQVZOdW1iZXJPZkNoYW5uZWxz
S2V5IDogQCgxKSwKLSAgICAgICAgQVZTYW1wbGVSYXRlS2V5IDogQCgyMjA1MCkKLSAgICB9Owor
ICAgIGlmICghW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRh
XSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9hdWRpb0lucHV0ID0gYWRvcHROUyhb
UEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6
QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczphdWRpb1NldHRpbmdzIHNvdXJjZUZvcm1h
dEhpbnQ6bmlsXSk7Ci0gICAgW21fYXVkaW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFs
VGltZTp0cnVlXTsKLSAgICAKLSAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1dDptX2F1ZGlv
SW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1dCA9IG51bGxwdHI7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIGF1ZGlvIGlucHV0IGlzIG5vdCBh
bGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOworICAgIGF1dG8gYnVmZmVyID0g
bV92aWRlb0NvbXByZXNzb3ItPnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBbbV93cml0ZXIgYWRkSW5w
dXQ6bV9hdWRpb0lucHV0LmdldCgpXTsKLSAgICBtX2F1ZGlvUHVsbFF1ZXVlID0gZGlzcGF0Y2hf
cXVldWVfY3JlYXRlKCJXZWJDb3JlQXVkaW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQ
QVRDSF9RVUVVRV9TRVJJQUwpOworCisgICAgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1lID0g
Q01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyLmdldCgpKTsKKyAg
ICBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0RGVjb2RlVGltZVN0
YW1wKGJ1ZmZlci5nZXQoKSk7CisgICAgbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzID0gdHJ1ZTsK
KworICAgIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSBhcHBlbmRTYW1wbGVCdWZmZXI6
YnVmZmVyLmdldCgpXTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKQoreworICAgIHdo
aWxlIChhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIoKSB8fCBhcHBlbmRDb21wcmVz
c2VkQXVkaW9TYW1wbGVCdWZmZXIoKSkgeyB9OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXBw
ZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIoQVZBc3NldFdyaXRlcklucHV0ICph
c3NldFdyaXRlcklucHV0LCBDTVRpbWUgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUgZGVj
b2RpbmdUaW1lU3RhbXApCit7CisgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm8gPSB7
IGtDTVRpbWVJbnZhbGlkLCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGRlY29kaW5nVGltZVN0YW1w
fTsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlciA9IE5VTEw7CisgICAgYXV0byBlcnJv
ciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIHRydWUs
IE5VTEwsIE5VTEwsIE5VTEwsIDAsIDEsICZ0aW1pbmdJbmZvLCAwLCBOVUxMLCAmYnVmZmVyKTsK
KyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJh
dGlvbk1hcmtlciBmYWlsZWQgQ01TYW1wbGVCdWZmZXJDcmVhdGUgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0Yo
YnVmZmVyKTsKKworICAgIENNU2V0QXR0YWNobWVudChzYW1wbGVCdWZmZXIuZ2V0KCksIGtDTVNh
bXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb24sIGtDRkJv
b2xlYW5UcnVlLCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOworICAgIGlmICgh
W2Fzc2V0V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOnNhbXBsZUJ1ZmZlci5nZXQoKV0p
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIgYXBwZW5kU2FtcGxlQnVmZmVyIHRvIHdyaXRlciBpbnB1dCBmYWlsZWQiKTsK
K30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRW5kT2ZWaWRlb1Nh
bXBsZUR1cmF0aW9uSWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGlmICghbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKKyAg
ICAgICAgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIobV92aWRlb0Fzc2V0
V3JpdGVySW5wdXQuZ2V0KCksIG1fbGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZSwgbV9sYXN0Vmlk
ZW9EZWNvZGluZ1RpbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byBibG9jayA9IG1ha2VCbG9ja1B0cihbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKSB7Cisg
ICAgICAgICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihtX3ZpZGVv
QXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1lLCBtX2xh
c3RWaWRlb0RlY29kaW5nVGltZSk7CisgICAgICAgICAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5w
dXQgbWFya0FzRmluaXNoZWRdOworICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgfSk7CisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IHJlcXVlc3RNZWRpYURh
dGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9jazpi
bG9jay5nZXQoKV07Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZsdXNo
Q29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7Cisg
ICAgYXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVh
cigpCit7CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dyaXRlci5jbGVhcigpOworCisg
ICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG51bGxwdHIpOworfQorCisKIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxl
QnVmZmVyUmVmPiBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoQ01TYW1wbGVC
dWZmZXJSZWYgb3JpZ2luYWxCdWZmZXIpCiB7CiAgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNQ2xv
Y2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOwogICAgIENNSXRlbUNvdW50IGNv
dW50ID0gMDsKICAgICBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmln
aW5hbEJ1ZmZlciwgMCwgbmlsLCAmY291bnQpOwotICAgIAorCiAgICAgVmVjdG9yPENNU2FtcGxl
VGltaW5nSW5mbz4gdGltZUluZm8oY291bnQpOwogICAgIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxl
VGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAm
Y291bnQpOwotICAgIAotICAgIGZvciAoQ01JdGVtQ291bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7CisKKyAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgIHRp
bWVJbmZvW2ldLmRlY29kZVRpbWVTdGFtcCA9IGtDTVRpbWVJbnZhbGlkOwogICAgICAgICB0aW1l
SW5mb1tpXS5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBzdGFydFRpbWU7CiAgICAgfQotICAgIAor
CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3QnVmZmVyID0gbnVsbHB0cjsKLSAgICBhdXRvIGVy
cm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZl
cik7Ci0gICAgaWYgKGVycm9yKQorICAgIGlmIChhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJD
cmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZl
ciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTVNh
bXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YobmV3
QnVmZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kVmlk
ZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKQogewotICAgIEFT
U0VSVChtX3ZpZGVvSW5wdXQpOwotICAgIGlmIChtX2lzU3RvcHBlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKSB7Ci0gICAgICAgIGlmICghW21fd3Jp
dGVyIHN0YXJ0V3JpdGluZ10pIHsKLSAgICAgICAgICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRX
cml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAobG9uZylbbV93cml0
ZXIgZXJyb3JdKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBbbV93
cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRI
b3N0VGltZUNsb2NrKCkpXTsKLSAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7Ci0g
ICAgICAgIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9
IHRoaXM7Ci0gICAgICAgIFttX3ZpZGVvSW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9u
UXVldWU6bV92aWRlb1B1bGxRdWV1ZSB1c2luZ0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAg
ICAgIGlmICghW21fdmlkZW9JbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCi0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV92aWRlb0xvY2spOwotICAgICAgICAgICAgICAgIGlmIChtX3ZpZGVvQnVmZmVyUG9vbC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gbV92aWRlb0J1ZmZlclBvb2wudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICAg
ICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lu
cHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldKQotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpOwotICAgICAgICAgICAgaWYgKG1f
aXNTdG9wcGVkICYmIG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
ICAgIFttX3ZpZGVvSW5wdXQgbWFya0FzRmluaXNoZWRdOwotICAgICAgICAgICAgICAgIG1fZmlu
aXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLnNpZ25hbCgpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9XTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGJ1ZmZlcldpdGhDdXJyZW50
VGltZSA9IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFtcChzYW1wbGVCdWZmZXIp
OwotICAgIGlmICghYnVmZmVyV2l0aEN1cnJlbnRUaW1lKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2NrKTsKLSAgICBtX3ZpZGVvQnVmZmVy
UG9vbC5hcHBlbmQoV1RGTW92ZShidWZmZXJXaXRoQ3VycmVudFRpbWUpKTsKKyAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG5vdCBzZXQgdGhlIHRpbWVzdGFtcHMgaWYgdGhleSBhcmUgYWxyZWFkeSBz
ZXQuCisgICAgaWYgKGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZl
cldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcikpCisgICAgICAgIG1fdmlkZW9Db21w
cmVzc29yLT5hZGRTYW1wbGVCdWZmZXIoYnVmZmVyV2l0aEN1cnJlbnRUaW1lLmdldCgpKTsKIH0K
IAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRl
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbikKQEAgLTI4MCw2OCArMzc1LDM5IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENN
Rm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29uCiAg
ICAgYXV0byBiYXNpY0Rlc2NyaXB0aW9uID0gV1RGOjpnZXQ8Y29uc3QgQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLmRlc2NyaXB0
aW9uKTsKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdCA9IG51bGxwdHI7CiAgICAg
YXV0byBlcnJvciA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBiYXNpY0Rlc2NyaXB0aW9uLCAwLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0
KTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YoZm9ybWF0KTsKIH0KIAot
c3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUF1ZGlvU2Ft
cGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZv
cm1hdCwgc2l6ZV90IHNhbXBsZUNvdW50KQotewotICAgIENNVGltZSBzdGFydFRpbWUgPSBDTUNs
b2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsKLSAgICBDTVNhbXBsZUJ1ZmZl
clJlZiBzYW1wbGVCdWZmZXIgPSBudWxscHRyOwotICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2Ft
cGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgZm9ybWF0LCBzYW1wbGVDb3VudCwgc3RhcnRUaW1l
LCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBhZG9wdENGKHNhbXBsZUJ1ZmZlcik7Ci19Ci0KLXZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBzaXplX3Qgc2FtcGxlQ291bnQpCitzdGF0
aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQXVkaW9TYW1wbGVC
dWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgc2l6ZV90
IHNhbXBsZUNvdW50KQogewotICAgIEFTU0VSVChtX2F1ZGlvSW5wdXQpOwotICAgIGlmICgoIW1f
aGFzU3RhcnRlZFdyaXRpbmcgJiYgbV92aWRlb0lucHV0KSB8fCBtX2lzU3RvcHBlZCkKLSAgICAg
ICAgcmV0dXJuOwogICAgIGF1dG8gZm9ybWF0ID0gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlv
bihkZXNjcmlwdGlvbik7CiAgICAgaWYgKCFmb3JtYXQpCi0gICAgICAgIHJldHVybjsKLSAgICBp
ZiAobV9pc0ZpcnN0QXVkaW9TYW1wbGUpIHsKLSAgICAgICAgaWYgKCFtX3ZpZGVvSW5wdXQpIHsK
LSAgICAgICAgICAgIC8vIGF1ZGlvLW9ubHkgcmVjb3JkaW5nLgotICAgICAgICAgICAgaWYgKCFb
bV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewotICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xv
Y2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKLSAgICAgICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcg
PSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIG1faXNGaXJzdEF1ZGlvU2FtcGxlID0gZmFsc2U7
Ci0gICAgICAgIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhp
cyA9IHRoaXM7Ci0gICAgICAgIFttX2F1ZGlvSW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFk
eU9uUXVldWU6bV9hdWRpb1B1bGxRdWV1ZSB1c2luZ0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewotICAgICAgICAgICAgZG8gewotICAgICAgICAg
ICAgICAgIGlmICghW21fYXVkaW9JbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCi0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9hdWRpb0xvY2spOwotICAgICAgICAgICAgICAgIGlmIChtX2F1ZGlvQnVmZmVyUG9v
bC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gbV9hdWRpb0J1ZmZlclBvb2wudGFrZUZpcnN0KCk7Ci0gICAgICAgICAg
ICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7Ci0gICAgICAgICAgICAgICAgW21fYXVkaW9JbnB1
dCBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKLSAgICAgICAgICAgIH0gd2hpbGUg
KHRydWUpOwotICAgICAgICAgICAgaWYgKG1faXNTdG9wcGVkICYmIG1fYXVkaW9CdWZmZXJQb29s
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgbWFya0FzRmluaXNo
ZWRdOwotICAgICAgICAgICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLnNpZ25h
bCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9XTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBudWxscHRyOworICAgIGF1
dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9u
cyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgZm9ybWF0Lmdl
dCgpLCBzYW1wbGVDb3VudCwgdG9DTVRpbWUodGltZSksIE5VTEwsICZzYW1wbGVCdWZmZXIpOwor
ICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
Ik1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBh
Y2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQorICAgIGF1dG8gYnVmZmVyID0gYWRvcHRDRihzYW1wbGVCdWZmZXIp
OwogCi0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQ
YWNrZXREZXNjcmlwdGlvbnMoZm9ybWF0LmdldCgpLCBzYW1wbGVDb3VudCk7Ci0gICAgaWYgKCFz
YW1wbGVCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVC
dWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdChzYW1wbGVCdWZmZXIuZ2V0KCks
IGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdl
YkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkubGlzdCgpKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAg
IHJldHVybjsKKyAgICBlcnJvciA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRp
b0J1ZmZlckxpc3QoYnVmZmVyLmdldCgpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCBkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxpc3Q+KGRhdGEpLmxpc3QoKSk7
CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVy
RnJvbUF1ZGlvQnVmZmVyTGlzdCBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBidWZmZXI7Cit9CiAKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2NrKTsKLSAgICBtX2F1ZGlvQnVmZmVyUG9vbC5hcHBl
bmQoV1RGTW92ZShzYW1wbGVCdWZmZXIpKTsKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRh
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgV1RGOjpN
ZWRpYVRpbWUmIHRpbWUsIHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBpZiAoYXV0byBzYW1w
bGVCdWZmZXIgPSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcihkYXRhLCBkZXNjcmlwdGlvbiwgdGlt
ZSwgc2FtcGxlQ291bnQpKQorICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nvci0+YWRkU2FtcGxlQnVm
ZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnN0b3BSZWNvcmRpbmcoKQpAQCAtMzUwLDM1ICs0MTYsNDAgQEAgdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKworICAgIGlmIChtX3ZpZGVvQ29tcHJlc3NvcikKKyAg
ICAgICAgbV92aWRlb0NvbXByZXNzb3ItPmZpbmlzaCgpOworICAgIGlmIChtX2F1ZGlvQ29tcHJl
c3NvcikKKyAgICAgICAgbV9hdWRpb0NvbXByZXNzb3ItPmZpbmlzaCgpOworCiAgICAgaWYgKCFt
X2hhc1N0YXJ0ZWRXcml0aW5nKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKFttX3dyaXRl
ciBzdGF0dXNdID09IEFWQXNzZXRXcml0ZXJTdGF0dXNXcml0aW5nKTsKLSAgICBpZiAobV92aWRl
b0lucHV0KQotICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZS53YWl0KCk7Ci0K
LSAgICBpZiAobV9hdWRpb0lucHV0KQotICAgICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFw
aG9yZS53YWl0KCk7CiAKICAgICBtX2lzU3RvcHBpbmcgPSB0cnVlOwotICAgIFttX3dyaXRlciBm
aW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrUHRyID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSgpIG11dGFibGUgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrUHRyID0gV1RGTW92ZSh3ZWFrUHRyKSwgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlm
ICghd2Vha1B0cikKLSAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIG1faXNT
dG9wcGluZyA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhh
bmRsZXIpCi0gICAgICAgICAgICAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGJ1ZmZlcikpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZGF0YSA9
IFdURk1vdmUoYnVmZmVyKTsKKyAgICBmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2lzU3RvcHBl
ZCA9IGZhbHNlOwotICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlOwotICAg
ICAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSB0cnVlOwotICAgICAgICAgICAgY2xlYXIo
KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZS5zaWduYWwo
KTsKLSAgICB9XTsKLSAgICBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmUud2FpdCgpOworICAgICAg
ICBbbV93cml0ZXIgZmx1c2hdOworICAgICAgICBbbV93cml0ZXIgZmluaXNoV3JpdGluZ1dpdGhD
b21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0g
V1RGTW92ZSh3ZWFrVGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgbV9p
c1N0b3BwaW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG1fZmV0Y2hEYXRhQ29tcGxl
dGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXVEZNb3Zl
KG1fZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBtX2lzU3RvcHBlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIG1faGFzU3RhcnRlZFdyaXRp
bmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBjbGVhcigpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH1dOworICAgIH0pOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTM5Miw2ICs0NjMsMjQgQEAgdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPFNoYXJlZEIKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOwogfQog
Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIGlmICghbV9kYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQoreworICAgIGlmICghbV9kYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoYnVmZmVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU0Mjg5MzUyMzYw
Y2IxNzgwMGRkMDZlNmI1YjE1Mzg3OTYyYzc5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRl
IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZURXJyb3Jz
Lmg+CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZl
clJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZVZUQ29tcHJlc3Npb25TZXNzaW9uICpWVENvbXBy
ZXNzaW9uU2Vzc2lvblJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yPiBjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFj
aywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworICAgIH5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IoKTsKKworICAgIHZvaWQgZmluaXNoKCk7CisgICAgdm9pZCBhZGRTYW1wbGVCdWZmZXIoQ01T
YW1wbGVCdWZmZXJSZWYpOworICAgIENNU2FtcGxlQnVmZmVyUmVmIGdldE91dHB1dFNhbXBsZUJ1
ZmZlcigpOworICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gdGFrZU91dHB1dFNhbXBs
ZUJ1ZmZlcigpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZShDTUJ1ZmZl
clF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7CisKKyAgICB2b2lk
IHByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOworICAgIGJvb2wgaW5pdENv
bXByZXNzaW9uU2Vzc2lvbihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYpOworCisgICAgc3Rh
dGljIHZvaWQgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9T
U3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJSZWYpOworCisgICAgZGlz
cGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgUmV0YWluUHRyPENNQnVm
ZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CisgICAgUmV0YWluUHRyPFZUQ29tcHJl
c3Npb25TZXNzaW9uUmVmPiBtX3Z0U2Vzc2lvbjsKKworICAgIGJvb2wgbV9pc0VuY29kaW5nIHsg
ZmFsc2UgfTsKKworICAgIENNVmlkZW9Db2RlY1R5cGUgbV9vdXRwdXRDb2RlY1R5cGU7CisgICAg
ZmxvYXQgbV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24geyAyLjAgfTsKKyAgICB1bnNpZ25l
ZCBtX2V4cGVjdGVkRnJhbWVSYXRlIHsgMzAgfTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIw
OGZlNDMyOTVlZjUyYTY3OTBmZjFkZWNhY2E2ZjMwZDliYmJhZmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9y
dCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgorI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxWaWRlb1Rvb2xib3gvVlRDb21wcmVz
c2lvblNlc3Npb24uaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaW1wb3J0IDxw
YWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaD4KKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yPiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShDTVZpZGVvQ29k
ZWNUeXBlIG91dHB1dENvZGVjVHlwZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxs
YmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgYXV0byBjb21wcmVzc29yID0gc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4obmV3IFZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvcihvdXRwdXRDb2RlY1R5cGUpKTsKKyAgICBpZiAoIWNvbXByZXNzb3It
PmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIGNvbXByZXNzb3I7Cit9CisKK1ZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKENNVmlkZW9Db2RlY1R5cGUgb3V0
cHV0Q29kZWNUeXBlKQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgZGlzcGF0Y2hfcXVl
dWVfY3JlYXRlKCJjb20uYXBwbGUuVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFU
Q0hfUVVFVUVfU0VSSUFMKSB9CisgICAgLCBtX291dHB1dENvZGVjVHlwZSB7IG91dHB1dENvZGVj
VHlwZSB9Cit7Cit9CisKK1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6flZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvcigpCit7CisgICAgaWYgKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSkKKyAg
ICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOworfQorCitib29s
IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJp
Z2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBDTUJ1
ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01C
dWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0
Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZvdXRwdXRCdWZmZXJRdWV1ZSkp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgdW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgcXVldWUgJWQiLCBlcnJvcik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9vdXRwdXRCdWZmZXJRdWV1ZSA9
IG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcihtX291
dHB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QsIGtDTUJ1ZmZl
clF1ZXVlVHJpZ2dlcl9XaGVuRGF0YUJlY29tZXNSZWFkeSwga0NNVGltZVplcm8sIE5VTEwpOwor
CisgICAgbV9pc0VuY29kaW5nID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCit7CisgICAgZGlzcGF0Y2hfc3lu
YyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGF1dG8gZXJyb3IgPSBWVENvbXBy
ZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzKG1fdnRTZXNzaW9uLmdldCgpLCBrQ01UaW1lSW52
YWxpZCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwg
IlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRl
RnJhbWVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgICAgIGVycm9yID0gQ01CdWZm
ZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKworICAgICAgICBtX2lzRW5jb2RpbmcgPSBmYWxzZTsKKyAgICB9KTsKK30KKwor
dm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnZpZGVvQ29tcHJlc3Npb25DYWxsYmFj
ayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cyBzdGF0dXMsIFZURW5jb2RlSW5mb0ZsYWdz
LCBDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYo
c3RhdHVzLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB2aWRlb0Nv
bXByZXNzaW9uQ2FsbGJhY2sgc3RhdHVzIGlzICVkIiwgc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVz
ICE9IG5vRXJyKQorICAgICAgICByZXR1cm47CisKKyAgICBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgKmNvbXByZXNzb3IgPSBzdGF0aWNfY2FzdDxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IqPihyZWZDb24pOworCisgICAgYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVFbnF1ZXVlKGNv
bXByZXNzb3ItPm1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIENNQnVmZmVyUXVldWVFbnF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworfQor
Citib29sIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdENvbXByZXNzaW9uU2Vzc2lv
bihDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCit7CisgICAg
Q01WaWRlb0RpbWVuc2lvbnMgZGltZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdl
dERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBO
U0RpY3Rpb25hcnkgKmVuY29kZXJTcGVjaWZpY2F0aW9ucyA9IG5pbDsKKyNlbHNlCisgICAgTlNE
aWN0aW9uYXJ5ICplbmNvZGVyU3BlY2lmaWNhdGlvbnMgPSBAeyhfX2JyaWRnZSBOU1N0cmluZyAq
KWtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZp
ZGVvRW5jb2RlcjpAWUVTfTsKKyNlbmRpZgorCisgICAgVlRDb21wcmVzc2lvblNlc3Npb25SZWYg
dnRTZXNzaW9uOworICAgIGF1dG8gZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmhlaWdodCwg
bV9vdXRwdXRDb2RlY1R5cGUsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZW5jb2RlclNwZWNp
ZmljYXRpb25zLCBOVUxMLCBOVUxMLCB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2ssIHRoaXMsICZ2
dFNlc3Npb24pOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vz
c2lvbkNyZWF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIE5POwor
ICAgIH0KKyAgICBtX3Z0U2Vzc2lvbiA9IGFkb3B0Q0YodnRTZXNzaW9uKTsKKworICAgIGVycm9y
ID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9u
UHJvcGVydHlLZXlfUmVhbFRpbWUsIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
VlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5
KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1l
SW50ZXJ2YWxEdXJhdGlvbiwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1fbWF4S2V5RnJhbWVJbnRl
cnZhbER1cmF0aW9uKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3Ry
ZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtW
VENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uIGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOworICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92
dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0ZWRGcmFtZVJh
dGUsIChfX2JyaWRnZSBDRlR5cGVSZWYpQChtX2V4cGVjdGVkRnJhbWVSYXRlKSk7CisgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlf
RXhwZWN0ZWRGcmFtZVJhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICAvLyBGSVhN
RTogU2V0IHZpZGVvIGNvbXByZXNzaW9uIHJhdGUuCisgICAgZXJyb3IgPSBWVENvbXByZXNzaW9u
U2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyhtX3Z0U2Vzc2lvbi5nZXQoKSk7CisgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzIGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgcmV0dXJuIFlFUzsKK30KKwordm9pZCBWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJS
ZWYgYnVmZmVyKQoreworICAgIGlmICghbV92dFNlc3Npb24pIHsKKyAgICAgICAgaWYgKCFpbml0
Q29tcHJlc3Npb25TZXNzaW9uKENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24oYnVm
ZmVyKSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIoYnVmZmVyKTsKKyAgICBhdXRvIHByZXNl
bnRhdGlvblRpbWVTdGFtcCA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1w
KGJ1ZmZlcik7CisgICAgYXV0byBkdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24o
YnVmZmVyKTsKKyAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFt
ZShtX3Z0U2Vzc2lvbi5nZXQoKSwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwg
ZHVyYXRpb24sIE5VTEwsIHRoaXMsIE5VTEwpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVy
cm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNz
aW9uU2Vzc2lvbkVuY29kZUZyYW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworfQorCit2b2lk
IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVm
ZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1
ZSwgXnsKKyAgICAgICAgaWYgKCFtX2lzRW5jb2RpbmcpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihidWZmZXIpOworICAgIH0pOworfQorCitDTVNh
bXBsZUJ1ZmZlclJlZiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdldE91dHB1dFNhbXBs
ZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2
b2lkKj4oQ01CdWZmZXJRdWV1ZUdldEhlYWQobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsK
K30KKworUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVybiBhZG9wdENGKChD
TVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVB
bmRSZXRhaW4obV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Cit9CisKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IGE2Y2VlNTRjOTdjOTIxNWE2ODczZjRkY2IxMmJkZTQ3YzFkYzQwZWMu
LmYzMTBmNDhlZDdlZGU1OGZlMmU1Yjc4NDY0ZjYyYzkwZTJkMDExNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
QEAgLTE0OSw2ICsxNDksNyBAQCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5JiBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjp1c2VyTWVkaWFDYXB0dXJlTWFuYWdlcgogICAgIHJldHVybiAq
bV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OwogfQogCisjaWYgSEFWRShBVkFTU0VUV1JJ
VEVSREVMRUdBVEUpCiBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciYgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bWVkaWFSZWNvcmRlck1hbmFnZXIoKQogewogICAgIGlmICghbV9yZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlcikKQEAgLTE1Niw2ICsxNTcsNyBAQCBSZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFSZWNvcmRlck1hbmFn
ZXIoKQogCiAgICAgcmV0dXJuICptX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogfQorI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmF1ZGlvVHJhY2tS
ZW5kZXJlck1hbmFnZXIoKQpAQCAtMTc0LDcgKzE3Niw3IEBAIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNhbXBsZUJ1ZmZl
ckRpCiAgICAgcmV0dXJuICptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiB9CiAj
ZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vICBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQogTGliV2Vi
UlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxpYldlYlJUQ0NvZGVj
c1Byb3h5KCkKQEAgLTIwMyw2ICsyMDUsNyBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSQogICAg
ICAgICB1c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
R1BVUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgbWVkaWFSZWNvcmRlck1hbmFnZXIoKS5k
aWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAg
ICAgICByZXR1cm47CkBAIC0yMTEsNiArMjE0LDcgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIEkK
ICAgICAgICAgbWVkaWFSZWNvcmRlck1hbmFnZXIoKS5kaWRSZWNlaXZlUmVtb3RlTWVkaWFSZWNv
cmRlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisjZW5kaWYgLy8gSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGF1ZGlvVHJhY2tSZW5k
ZXJlck1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24s
IGRlY29kZXIpOwpAQCAtMjI4LDggKzIzMiw4IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJCiAg
ICAgICAgIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKS5kaWRSZWNlaXZlTGF5ZXJN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotI2Vu
ZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFZJREVPX1RS
QUNLKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSB7CiAgICAgICAgIGxpYldlYlJUQ0NvZGVjc1Byb3h5KCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
V2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDJiOWJkMWY4ODdi
YWRhZmE0ZWE1YzRiYTM0MTY5ZDhiOTc4ZmQ2MmQuLjc4NjYzYmNkYmEwNzMyZWZmNWIxMWI5NGM1
ZGNhMjM4ODJlZTliODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNzksNyArNzksOSBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgp
OworI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIFJlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyJiBtZWRpYVJlY29yZGVyTWFuYWdlcigpOworI2VuZGlmCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdl
ciYgYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcigpOwogICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXImIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKTsKQEAg
LTEwMiw3ICsxMDQsOSBAQCBwcml2YXRlOgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklE
OwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PiBtX3VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHk7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyPiBtX3JlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyOworI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI+IG1f
YXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggY2IyNGRkYmYyNzlmYjI2NTk0NmFhMTIxY2IwNzIy
YjYyYjhjNmFmNy4uNTY4YzI4MDE3MThmZTkwYjhiZTA4MmZlYTM1ZWU3NTBkNjNkZGI4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFSZWNvcmRlci5oIgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBI
QVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJT
dG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KQEAgLTEzNiw0ICsx
MzYsNCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnN0b3BSZWNvcmRpbmcoKQogCiB9CiAK
LSNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuaAppbmRleCBmZjVhODI5ODRmYjM5NjQxZWQxZTU2MTU0ODk4Zjk1MjZjOWJkNTJhLi5h
ODNkYTMwNTUyZWI0MWVmOTU5NDRkYjNhYTUwNGZmY2EzZjY4MzgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
SEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJNZWRpYVJlY29yZGVySWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgpAQCAtODIsNCArODIsNCBA
QCBwcml2YXRlOgogCiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NF
VFdSSVRFUkRFTEVHQVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCmluZGV4IDU0YmE2
NGQ1NmZiZWEzMGZjYmIzOTZkYWQ1ZWEzZmMzMGM5OTVkZWUuLmNlMzJiNzA0ZTdlYzhjNDc3YmUw
NTFlMjBkN2QyN2FmMGM0ZjgyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KQEAg
LTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRF
TEVHQVRFKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlY29yZGVyIE5vdFJlZkNvdW50ZWQg
ewogICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpI
YW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ci5jcHAKaW5kZXggMzcwY2Q5YjM4NzU2OWE5OGU4NGUxNzgwOWYwODVkNjJiM2I2ZTlkNi4uMDE5
ZTRiODVmMGVlYmI2MjRlNTY5NTg4YTdhYWU0ODQyMTI1ODZkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oIgogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKaW5kZXgg
NTQ3MWJiZDQ4NGRkOWIzZDBjOGVlM2RkNjExYzA1ZTkwZDAzNmM3Yy4uYWI4MDFiYzExNGM0OTIz
ZWE5ZDc5MGY5MjNjNTJkZjQ5YWExMWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaApAQCAt
MjcsNyArMjcsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
SEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJNZWRpYVJlY29yZGVySWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMzg3YTQxMzYxY2RiZDliN2VhZTJjMzM3
MzY1MmE5OGY0OTM0ZTE3NC4uYzUxODQxMGNiNDlmYWRhNjg4ZDM3N2QxZDdhMDZjZGUzYmFjNzk3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yMSw3
ICsyMSw3IEBACiAjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKICMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FU
RSkKIAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIgTm90UmVmQ291bnRl
ZCB7CiAgICAgQ3JlYXRlUmVjb3JkZXIoV2ViS2l0OjpNZWRpYVJlY29yZGVySWRlbnRpZmllciBp
ZCwgYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSAtPiAoT3B0aW9uYWw8V2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YT4gY3JlYXRpb25FcnJvcikgQXN5bmMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgKaW5kZXggOWY5YjMwYzc2MTYyM2RkOTQ4ZDI5
YmUwZjM3ZjBhZDBmNDdlNWE5YS4uZTM4YzVkNmMwNWQwZGZhZjQyNjgxOTk1YjllMDRmNGU3NjQ3
ZjBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgiCiAj
aW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFj
ZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TWVkaWFSZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4IGRkNDA5MTk4OGMxMjY4OTc1YmI5
NzkyZTgzMzdjNmUwNjUzN2YzYzguLjY3ZTNlZTY1MTNkOGZhNDNlODFlOGIyMmM2NThkZjg5NjQw
NzY4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZS5oIgogCi0jaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1
ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXJNZXNzYWdlcy5oIgpAQCAtMTQ2LDQgKzE0Niw0IEBAIHZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGU6OnN0b3BSZWNvcmRpbmcoKQogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2VuZGlm
IC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmgKaW5kZXggNmQ5ZmFiZTNlYTcyNDczZjQ1OTkwY2U4YWQxNzJkMGNkMDNhODEyNi4uZDgwZmNk
N2YxOTg4OTc1MjVjOWVmZmM5MTc1N2QyMmZjMzIzZWZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5o
CkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUgIk1lZGlhUmVjb3Jk
ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKQEAg
LTczLDUgKzczLDUgQEAgcHJpdmF0ZToKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0Ep
ICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92
aWRlci5jcHAKaW5kZXggYmNlNzc0YTg4MWRjZWM3OTQyNjM3OTY4NTUyZTNjY2M3YmIzNzQwYi4u
ZDk1OWM5MjVmZGQzYTIyMWEzN2IxYTM3MDdjNmRmMWFkMDJhMGU4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJvdmlkZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGU+IE1lZGlhUmVjb3JkZXJQ
cm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoY29uc3QgTWVkaWFTdHJlYW1Qcml2
YXRlJiBzdHJlYW0pCiB7Ci0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgaWYgKG1fdXNlR1BV
UHJvY2VzcykKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGU+
KHN0cmVhbSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjYmVjMjg1NDlmNTM1MDVjNDU5YzQ1YWJiNGU4NGJj
YTA0MjZhZDhiLi4zYzFkZGNjNTE5YjUxOTg5MjMyZTkyZTQ1NTJkN2M3OGM2NDExOTE2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDItMDQgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBp
bXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29u
LgorCisgICAgICAgIERpc2FibGUgdGVzdHMgb24gYWxsIHBsYXRmb3JtcyBleGNlcHQgdGhlIG9u
ZXMgc3VwcG9ydGluZyBBVkFzc2V0V3JpdGVyRGVsZWdhdGUuCisKKyAgICAgICAgKiBUZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbDoKKyAgICAgICAg
UmVtb3ZlIHdlYiBhdWRpbyBnZW5lcmF0aW9uIHNpbmNlIHRoZXJlIHNlZW1zIHRvIGJlIHNvbWUg
dW5zdGFiaWxpdHkgaW4gd2ViIGF1ZGlvIC0+IHN0cmVhbSAtPiBtZWRpYSByZWNvcmRlci4KKyAg
ICAgICAgd2hpY2ggc2hvdWxkIGJlIGZpeGVkIGFzIGZvbGxvdy11cCBzcGVjaWZpYyBwYXRjaGVz
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTAyLTA0
ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYURldmlj
ZXMgc2hvdWxkIGhhbmRsZSBjaGFuZ2VzIG9mIGlmcmFtZSBhbGxvdyBhdHRyaWJ1dGUgdmFsdWUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDM2ZWYwNTRiYWY1NDkzNGNmNjA3ZGRlYjAwYmNkNmE5OGVm
NDE2ZDcuLjhmZDc0OGVlOTdiNzE0NGQyMmVjOGE2YTU0Yjg2NGZkMTNiNzUyYjEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMzMyNiw3ICszMzI2LDEwIEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNl
L3RleHR1cmVzL2NvcHktdGV4LWltYWdlLTJkLWZvcm1hdHMuaHRtbCBbIFNraXAgXQogd2ViZ2wv
MS4wLjMvY29uZm9ybWFuY2UvY2FudmFzL3JhcGlkLXJlc2l6aW5nLmh0bWwgWyBTa2lwIF0KIHdl
YmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZHJhdy1idWZmZXJzLmh0bWwg
WyBTa2lwIF0KIAotd2Via2l0Lm9yZy9iLzE5NzY3MyBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS5odG1sIFsgUGFzcyBGYWls
dXJlIFRpbWVvdXQgXQorIyBOb3Qgc3VwcG9ydGVkIGJ5IGRlZmF1bHQKK2h0dHAvd3B0L21lZGlh
cmVjb3JkZXIgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFj
YXB0dXJlLXJlY29yZCBbIFNraXAgXQorZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtbWVkaWEtcmVj
b3JkZXIuaHRtbCBbIFNraXAgXQogCiAjIFRvIGFpZCB0cmFuc2l0aW9uIHRvIEFOR0xFIGJhY2tl
bmQgZm9yIFdlYkdMLCBza2lwIGFsbCBvZiBXZWJHTCAyIHRlc3RzIGZvciBub3cuIAogIyBSZS1l
bmFibGUgYXMgZWFjaCBjaHVuayBvZiB0ZXN0cyBhcmUgdmVyaWZpZWQgd2l0aCBBTkdMRSBiYWNr
ZW5kLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlv
LXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sCmluZGV4IDMzMzA2ZGU3OTQ3YmJi
OTI1NzM5NGMzYmExOTYyMDFiMDU4NDc4OGIuLjg4MDE0ODY1N2UyNWRkZTMzY2IxMDkzNDZkNmNi
ZWFhYjdmOWNlZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3Mu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwKQEAgLTU2LDE3
ICs1Niw3IEBACiAgICAgfQogCiAgICAgYXN5bmNfdGVzdCh0ID0+IHsKLSAgICAgICAgY29uc3Qg
YWMgPSBuZXcgQXVkaW9Db250ZXh0KCk7Ci0gICAgICAgIGNvbnN0IG9zYyA9IGFjLmNyZWF0ZU9z
Y2lsbGF0b3IoKTsKLSAgICAgICAgY29uc3QgZGVzdCA9IGFjLmNyZWF0ZU1lZGlhU3RyZWFtRGVz
dGluYXRpb24oKTsKLSAgICAgICAgY29uc3QgYXVkaW8gPSBkZXN0LnN0cmVhbTsKLSAgICAgICAg
b3NjLmNvbm5lY3QoZGVzdCk7Ci0KICAgICAgICAgY29uc3QgdmlkZW8gPSBjcmVhdGVWaWRlb1N0
cmVhbSgpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHZpZGVvLmdldEF1ZGlvVHJhY2tzKCkubGVu
Z3RoLCAwLCAidmlkZW8gbWVkaWFzdHJlYW0gc3RhcnRzIHdpdGggbm8gYXVkaW8gdHJhY2siKTsK
LSAgICAgICAgYXNzZXJ0X2VxdWFscyhhdWRpby5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwgMSwg
ImF1ZGlvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRoIG9uZSBhdWRpbyB0cmFjayIpOwotICAgICAg
ICB2aWRlby5hZGRUcmFjayhhdWRpby5nZXRBdWRpb1RyYWNrcygpWzBdKTsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyh2aWRlby5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwgMSwgInZpZGVvIG1lZGlh
c3RyZWFtIHN0YXJ0cyB3aXRoIG9uZSBhdWRpbyB0cmFjayIpOwogICAgICAgICBjb25zdCByZWNv
cmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHZpZGVvKTsKICAgICAgICAgbGV0IG1vZGUgPSAwOwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDRhMzZhZDM2
M2EwODBjMzQ2ZTY0MTE3MWUzMjY5ZDBjOWIzZWIzYzIuLmYyNGVmYjkyNDBiYTQ5NDQ4ODdmMTBm
ODViM2Q5MjkxNTY3MTdhMGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0
YXRpb25zCkBAIC0xODI4LDYgKzE4MjgsMTAgQEAgd2Via2l0Lm9yZy9iLzE5NTYzNSBzY3JvbGxp
bmdjb29yZGluYXRvci9tYWMvbXVsdGlwbGUtZml4ZWQuaHRtbCBbIFBhc3MgVGltZW91dAogWyBD
YXRhbGluYSsgXSBmYXN0L3RleHQvZGVzaWduLXN5c3RlbS11aS0xNS5odG1sIFsgUGFzcyBdCiBb
IENhdGFsaW5hKyBdIGZhc3QvdGV4dC9kZXNpZ24tc3lzdGVtLXVpLTE2Lmh0bWwgWyBQYXNzIF0K
IAorWyBDYXRhbGluYSsgXSBodHRwL3dwdC9tZWRpYXJlY29yZGVyIFsgUGFzcyBdIAorWyBDYXRh
bGluYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1yZWNv
cmQgWyBQYXNzIF0KK1sgQ2F0YWxpbmErIF0gZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtbWVkaWEt
cmVjb3JkZXIuaHRtbCBbIFBhc3MgXQorCiB3ZWJraXQub3JnL2IvMjAwMTI4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUt
dmlkZW8tZWxlbWVudC92aWRlb190aW1ldXBkYXRlX29uX3NlZWsuaHRtbCBbIFRpbWVvdXQgUGFz
cyBdCiAKICMgcmRhcjovLzU1NDA1ODUxIChbIG1hY09TIF0gTGF5b3V0IHRlc3RzIHdlYmdwdS8q
LXRyaWFuZ2xlLXN0cmlwLmh0bWwgYXJlIGZsYWt5IGZhaWx1cmVzLiAoMjAxODI3KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389803</attachid>
            <date>2020-02-05 06:47:58 -0800</date>
            <delta_ts>2020-02-05 23:21:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206582-20200205154755.patch</filename>
            <type>text/plain</type>
            <size>145484</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQwNjEyNGE4YmYzMDk1MDMyODEyMzY2
OTcxMWE3MTJjYjlkY2ZkY2EuLjVjZjY3YjQyNmNmYzExZTZhNjI1MjM2ZDUwYzgyMTk1OTMzYTBh
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDItMDUgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTAyLTA0ICBB
ZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9u
LXVuaWZpZWQgYnVpbGQgZml4ZXMgZWFybHkgRmVicnVhcnkgMjAyMCBlZGl0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYzdkYWY3N2YzMmQzMzE4MjMxNzE3ZjkwZWZiYjI3YTAxYWFkMTcyYy4uMDQ2ZmExYzNi
MTdiNjE0NzU5Y2QyMzRhMzQ3YzI5NjQ3ZWVhOTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1
IEBACisyMDIwLTAyLTA1ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlh
UmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjU4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg5ODUzNjg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBh
bGxvd3MgdG8gZ3JhYiByZWNvcmRlZCBkYXRhIHdoZW5ldmVyIHdhbnRlZC4KKyAgICAgICAgVGhp
cyBkZWxlZ2F0ZSByZXF1aXJlcyBwYXNzaW5nIGNvbXByZXNzZWQgc2FtcGxlcyB0byBBVkFzc2V0
V3JpdGVyLgorICAgICAgICBJbXBsZW1lbnQgdmlkZW8gZW5jb2RpbmcgYW5kIGF1ZGlvIGVuY29k
aW5nIGluIGRlZGljYXRlZCBjbGFzc2VzIGFuZCB1c2UgdGhlc2UgY2xhc3NlcyBiZWZvcmUgYWRk
aW5nIGJ1ZmZlcnMgdG8gQVZBc3NldFdyaXRlci4KKyAgICAgICAgVGhlc2UgY2xhc3NlcyBhcmUg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGFuZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IuCisgICAgICAgIFRoZXkgc3VwcG9ydCBBQUMgYW5kIEgyNjQgc28gZmFyIGFuZCBzaG91bGQg
YmUgZnVydGhlciBpbXByb3ZlZCB0byBzdXBwb3J0IG1vcmUgZW5jb2Rpbmcgb3B0aW9ucy4KKwor
ICAgICAgICBJbnN0YW50aWF0ZSByZWFsIHdyaXRlciBvbmx5IGZvciBwbGF0Zm9ybXMgc3VwcG9y
dGluZyBBVkFzc2V0V3JpdGVyRGVsZWdhdGUsIHNpbmNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgZXZl
cnl3aGVyZS4KKyAgICAgICAgVGhlIHdyaXRlciwgZG9pbmcgdGhlIHBhY2FrZ2luZywgaXMgcmVj
ZWl2aW5nIGNvbXByZXNzZWQgYnVmZmVyIGZyb20gdGhlIGF1ZGlvL3ZpZGVvIGNvbXByZXNzb3Jz
LgorICAgICAgICBJdCB0aGVuIHNlbmRzIGRhdGEgd2hlbiBiZWluZyByZXF1ZXN0IHRvIGZsdXNo
IHRvIGl0cyBkZWxlZ2F0ZSwgd2hpY2ggd2lsbCBzZW5kIGRhdGEgdG8gdGhlIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyLgorICAgICAgICBUaGUgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIg
c3RvcmVzIHRoZSBkYXRhIGluIGEgU2hhcmVkQnVmZmVyIHVudGlsIE1lZGlhUmVjb3JkZXIgYXNr
cyBmb3IgZGF0YS4KKworICAgICAgICBOb3RlIHRoYXQsIHdoZW5ldmVyIHdlIHJlcXVlc3QgZGF0
YSwgd2UgZmx1c2ggdGhlIHdyaXRlciBhbmQgaW5zZXJ0IGFuIGVuZCBvZiB2aWRlbyBzYW1wbGUg
dG8gbWFrZSBzdXJlIHZpZGVvIGRhdGEgZ2V0cyBmbHVzaGVkLgorICAgICAgICBUaGVyZWZvcmUg
ZGF0YSBzaG91bGQgbm90IGJlIHJlcXVlc3RlZCB0b28gZmFzdCB0byBnZXQgYWRlcXVhdGUgdmlk
ZW8gY29tcHJlc3Npb24uCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJl
Y29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9D
b252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3Jt
YXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphdHRh
Y2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0aE51bVBh
Y2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjph
dWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNr
ZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJv
Y2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRw
dXRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBpbml0V2l0
aFdyaXRlcjpdKToKKyAgICAgICAgKC1bV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFzc2V0V3Jp
dGVyOmRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YTpdKToKKyAgICAgICAgKC1bV2ViQVZB
c3NldFdyaXRlckRlbGVnYXRlIGFzc2V0V3JpdGVyOmRpZFByb2R1Y2VGcmFnbWVudGVkTWVkaWFE
YXRhOmZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQ6XSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRX
cml0ZXJEZWxlZ2F0ZSBjbG9zZV0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRBdWRpb091
dHB1dEJ1ZmZlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9j
ZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBs
ZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnN0YXJ0QXNzZXRXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVv
U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0
aW9uSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlT
YW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmguCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnZpZGVvQ29tcHJlc3Npb25D
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmluaXRDb21wcmVzc2lvblNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFr
ZU91dHB1dFNhbXBsZUJ1ZmZlcik6CisKIDIwMjAtMDItMDUgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIENhbmNlbGluZyBhbiBh
Y2NlbGVyYXRlZCBhbmltYXRpb24gYmVmb3JlIGl0IHdhcyBjb21taXR0ZWQgZG9lcyBub3QgcHJl
dmVudCBpdCBmcm9tIHBsYXlpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGVhMjhkOWI0ZWI1YTRj
ZDVkYzE3ZWQ4YWE2YzY5N2Y0ODk0ZjQwMzIuLmNjZTIzZmVhN2JmZTIxYWJmNTA2OTY2ZDEzMTk1
ZGU3N2UzZTk5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAy
LTA1ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2Fd
IFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTg5ODUzNjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgorCisgICAgICAgIEFkZCBzb2Z0IGxpbmsgbWFjcm9zIGZvciBWaWRlb1Rvb2xi
b3ggYW5kIEF1ZGlvVG9vbGJveC4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5jcHA6IEFkZGVk
LgorICAgICAgICAqIHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwOgorICAgICAgICAqIHBhbC9jZi9Db3Jl
TWVkaWFTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5j
cHA6IEFkZGVkLgorICAgICAgICAqIHBhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5oOiBBZGRl
ZC4KKwogMjAyMC0wMi0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIE5TS2V5ZWRBcmNoaXZlclNQSS5oIG5vdyB0aGF0IFdlYktpdCBvbmx5IHVzZXMg
QVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGRjYWY2OThhZGUzOTQxZDI2ZjVlNmQyNjJjNGQyYzQ2OTJlZDU5MGQu
LmJkYmUyNTNkMzBmZGY2NmQ4ZTA3NTdhYjIxOTNkMDQxMTVkZjVhYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMjAtMDItMDUgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1l
bnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2NTgyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODk4NTM2OD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgRW5hYmxlIFJlbW90ZU1l
ZGlhUmVjb3JkZXIgb25seSBmb3Igc3lzdGVtcyBzdXBwb3J0aW5nIEFWQXNzZXRXcml0ZXJEZWxl
Z2F0ZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2Vp
dmVNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisKIDIw
MjAtMDItMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTiAocjI1MTMyMCk6IENhbid0IGRvdWJsZSB0YXAgdG8gc2VsZWN0IHdvcmQg
aW4gTm90ZXMgb24gaUNsb3VkLmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAxNzViNmY1ZWE4
ZWRjN2FkMWZkMmMxZjJlN2Y4OGYwZWU3YjI2ZjY4Li41M2ZhZTU5MjA1ZjU5ZGNiMjRmYmQ1ODAy
YTNjOWIxZmFhNTQyNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtNTY2LDYgKzU2NiwxMCBA
QAogI2RlZmluZSBIQVZFX09TX1NJR05QT1NUIDEKICNlbmRpZgogCisjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiAoZGVmaW5lZCBfX2hhc19pbmNsdWRlICYmIF9faGFzX2luY2x1
ZGUoPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyX1ByaXZhdGUuaD4pKSkKKyNkZWZpbmUgSEFW
RV9BVkFTU0VUV1JJVEVSREVMRUdBVEUgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5l
IEhBVkVfU1lTVEVNX0ZPTlRfU1RZTEVfVElUTEVfMCAxCiAjZGVmaW5lIEhBVkVfU1lTVEVNX0ZP
TlRfU1RZTEVfVElUTEVfNCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCmluZGV4IGZjYjA5
N2VlNzU5ZmY1ZGZiNzY0OThkNTA5MGU0Y2NjYzBjOWQ1YTYuLmY1NGRmNzFhNGY0M2IzZTZmOWQ0
OGJjMWNkNzQ0Mzc2ODcxZTliN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCkBAIC0z
NCw3ICszNCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZWRp
YVJlY29yZGVyUHJpdmF0ZT4gTWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29y
ZGVyUHJpdmF0ZShjb25zdCBNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKIHsKKyNpZiBIQVZF
KEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICByZXR1cm4gTWVkaWFSZWNvcmRlclByaXZhdGVB
VkZJbXBsOjpjcmVhdGUoc3RyZWFtKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0cmVhbSk7
CisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4ZDdmYTllNWQwOWMy
Y2Q5ZDhjNjA4ZWJhMzhlNzA1MDRhMzA5NmEuLmMyODFiOTJhMTdiNDliZDZlMDcxOGE5NjFmMDY0
MDg4NjVlMWViNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTExNSw2ICsxMTUsMTAgQEAKIAkJMkUxMzQyQ0MyMTVBQTEwQTAw
NzE5OUQyIC8qIFVJS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNBMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5r
LmggKi87IH07CiAJCTJFMTM0MkNEMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUxMzQyQ0Iy
MTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi87IH07CiAJCTMxMzA4QjE0MjBB
MjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMwOEIxMzIwQTIxNzA1MDAzRkI5MjkgLyogU3lz
dGVtUHJldmlld1NQSS5oICovOyB9OworCQk0MTZFOTk1MzIzREFFNkJFMDBFODcxQ0IgLyogQXVk
aW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE2RTk5NTEyM0RBRTZCRDAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRM
aW5rLmNwcCAqLzsgfTsKKwkJNDE2RTk5NTQyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJv
eFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuaCAqLzsg
fTsKKwkJNDE2RTk5NTcyM0RBRUZGODAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU1
MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgKi87IH07CisJCTQx
NkU5OTU4MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTYyM0RBRUZGNzAw
RTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggKi87IH07CiAJCTQ0Mjk1NkNEMjE4QTcy
REYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ0Mjk1NkNDMjE4QTcyREUwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCAq
LzsgfTsKIAkJNDQ1MEZDOUYyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1MEZDOUQy
MUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tICovOyB9OwogCQk0NDUwRkNB
MDIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAv
KiBRdWlja0xvb2tTb2Z0TGluay5oICovOyB9OwpAQCAtMjkwLDYgKzI5NCwxMCBAQAogCQkyRTEz
NDJDQjIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJS2l0U29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxMzA4QjEzMjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3
U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVByZXZpZXdTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzcxMTlBNzgyMENDQjVGRjAwMkM2REM5IC8qIFdlYktpdFRhcmdldENv
bmRpdGlvbmFscy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJLaXRUYXJnZXRDb25kaXRpb25h
bHMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkU5OTUxMjNEQUU2
QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxNkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xi
b3hTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Rvb2xi
b3hTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1NTIzREFF
RkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1NjIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29s
Ym94U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9Ub29s
Ym94U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQyOTU2Q0MyMThB
NzJERTAwODBEQjU0IC8qIFJldmVhbFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZXZlYWxTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1MEZDOUQy
MUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVpY2tMb29rU29mdExpbmsubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tT
b2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0xvb2tTb2Z0
TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTIxLDggKzUyOSwxMiBAQAog
CQkwQ0Y5OUNBNTFGNzM4NDFDMDA3RUU3OTMgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRp
b1Rvb2xib3hTb2Z0TGluay5jcHAgKi8sCisJCQkJNDE2RTk5NTIyM0RBRTZCRTAwRTg3MUNCIC8q
IEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi8sCiAJCQkJMENGOTlDQTYxRjczODQzNjAwN0VFNzkz
IC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLywKIAkJCQkwQ0Y5OUNBNzFGNzM4NDM3MDA3RUU3
OTMgLyogQ29yZU1lZGlhU29mdExpbmsuaCAqLywKKwkJCQk0MTZFOTk1NTIzREFFRkY3MDBFODcx
Q0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovLAorCQkJCTQxNkU5OTU2MjNEQUVGRjcw
MEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5oICovLAogCQkJKTsKIAkJCXBhdGggPSBj
ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MTIsNiArNzI0LDcgQEAKIAkJCWZp
bGVzID0gKAogCQkJCTU3RkQzMThCMjJCMzU5ODkwMDhEMEU4QiAvKiBBcHBTU09Tb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDYyMkI4NTRBQjAwMzAxNDNDIC8qIEFwcFNTT1NQ
SS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTk5NTQyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlv
VG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDAyRTkzQzIwNTZGQUE3MDBB
MTM3OTcgLyogQXVkaW9Ub29sYm94U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzJBMTA3ODIy
QjQ1NkY1MDBGNDEwQzggLyogQXV0aEtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc3RTg3
QjIyMjZBNDYwMzAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLmggaW4gSGVhZGVycyAq
LywKQEAgLTgzNCw2ICs4NDcsNyBAQAogCQkJCTJFMTM0MkNDMjE1QUExMEEwMDcxOTlEMiAvKiBV
SUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzVBRjkyMjFGNDNBNEM3MDAyRUFD
MDIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTQ3MUYzQkVCNDkwMERC
QzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTZFOTk1ODIz
REFFRkY4MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBDMkRBMTU5MUYzQkVCNDkwMERCQzMxNyAvKiBXZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaCBp
biBIZWFkZXJzICovLAogCQkJCUExMDgyNkY5MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtOTI2LDYgKzk0MCw3IEBACiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJNTdGRDMxOEEyMkIzNTkzRTAw
OEQwRThCIC8qIEFwcFNTT1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDE2RTk5NTMy
M0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3N0U4N0IxMjI2QTQ2MDIwMEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTBDNUZGRjBGMUY3OEQ5REEwMDlFRkYxQSAvKiBDbG9ja0NN
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMENGOTlDQTgxRjczODQzNzAwN0VFNzkzIC8qIENvcmVN
ZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTUyLDYgKzk2Nyw3IEBACiAJCQkJ
QTNBQjZFNTcxRjNEMUREQjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTNBQjZFNjUxRjNEMjE3RjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlz
dGVuZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIg
LyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNkU5OTU3MjNEQUVGRjgw
MEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
MTA4MjZGQTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwubW0gaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWNmNTUwNTZhY2RhNmY1NjUzYWRjN2UxN2VjMDJhMmQ4MjZlNDQ3ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsu
Y3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0Nv
bnZlcnRlci5oPgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0Zvcm1hdC5oPgorCisjaW5j
bHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJD
RShQQUwsIEF1ZGlvVG9vbGJveCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBBdWRpb1Rvb2xib3gsIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9G
b3JtYXRQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGluU3BlY2lmaWVyU2l6ZSwgY29u
c3Qgdm9pZCogaW5TcGVjaWZpZXIsIFVJbnQzMiogaW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBv
dXRQcm9wZXJ0eURhdGEpLCAoaW5Qcm9wZXJ0eUlELCBpblNwZWNpZmllclNpemUsIGluU3BlY2lm
aWVyLCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkpCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJOZXcsIE9T
U3RhdHVzLCAoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpblNvdXJjZUZvcm1h
dCwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpbkRlc3RpbmF0aW9uRm9ybWF0
LCBBdWRpb0NvbnZlcnRlclJlZiogb3V0QXVkaW9Db252ZXJ0ZXIpLCAoaW5Tb3VyY2VGb3JtYXQs
IGluRGVzdGluYXRpb25Gb3JtYXQsIG91dEF1ZGlvQ29udmVydGVyKSkKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlclNldFByb3Bl
cnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlv
Q29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblByb3BlcnR5RGF0YVNp
emUsIGNvbnN0IHZvaWQqIGluUHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJv
cGVydHlJRCwgaW5Qcm9wZXJ0eURhdGFTaXplLCBpblByb3BlcnR5RGF0YSkpCitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJHZXRQ
cm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBB
dWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIqIGlvUHJvcGVydHlE
YXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJv
cGVydHlJRCwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorCisjZW5kaWYg
Ly8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y2YvQXVkaW9Ub29sYm94U29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVk
aW9Ub29sYm94U29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzMxMTg3MTc0YWMxNTU0NDM3MWRlZTAz
YjE0MzJlM2U2NTYzMmUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSA8d3Rm
L1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQQUwsIEF1
ZGlvVG9vbGJveCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rv
b2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0
ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVy
dHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91dFByb3BlcnR5RGF0YSks
IChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0
UHJvcGVydHlEYXRhKSkKKyNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSBzb2Z0TGlu
a19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eQorU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0
YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQs
IGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwg
QXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBp
bkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCisjZGVmaW5lIEF1ZGlvQ29u
dmVydGVyTmV3IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0NvbnZlcnRlck5ldworU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVy
U2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRl
ciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGluUHJvcGVy
dHlEYXRhU2l6ZSwgY29uc3Qgdm9pZCogaW5Qcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRl
ciwgaW5Qcm9wZXJ0eUlELCBpblByb3BlcnR5RGF0YVNpemUsIGluUHJvcGVydHlEYXRhKSkKKyNk
ZWZpbmUgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVk
aW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBBdWRpb1Rvb2xib3gsIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9G
b3JtYXRQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGluU3BlY2lmaWVyU2l6ZSwgY29u
c3Qgdm9pZCogaW5TcGVjaWZpZXIsIFVJbnQzMiogaW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBv
dXRQcm9wZXJ0eURhdGEpLCAoaW5Qcm9wZXJ0eUlELCBpblNwZWNpZmllclNpemUsIGluU3BlY2lm
aWVyLCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkpCisjZGVmaW5lIEF1ZGlv
Rm9ybWF0R2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvRm9ybWF0R2V0UHJv
cGVydHkKKworCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKaW5kZXggMmI4MjMxMzY1Y2I5YWFm
OTM1OTdmMTg3ZmEyMmMxNDliZTQyZmIzYS4uZmEyMmNlY2MxMzczYWM3ZmJiOTU1ZmQ2NDFmN2Iy
MTE2NjEzOWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAgU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhKQogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUws
IENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMsIE9TU3RhdHVzLCAoQ01CbG9j
a0J1ZmZlclJlZiB0aGVTb3VyY2VCdWZmZXIsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCB2b2lkKiBkZXN0aW5hdGlvbiksICh0aGVTb3VyY2VCdWZmZXIsIG9mZnNldFRv
RGF0YSwgZGF0YUxlbmd0aCwgZGVzdGluYXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXplX3Qs
IChDTUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciksICh0aGVCdWZmZXIpKQorU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0
YUJ5dGVzLCBPU1N0YXR1cywgKGNvbnN0IHZvaWQqIHNvdXJjZUJ5dGVzLCBDTUJsb2NrQnVmZmVy
UmVmIGRlc3RpbmF0aW9uQnVmZmVyLCBzaXplX3Qgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBzaXpl
X3QgZGF0YUxlbmd0aCksIChzb3VyY2VCeXRlcywgZGVzdGluYXRpb25CdWZmZXIsIG9mZnNldElu
dG9EZXN0aW5hdGlvbiwgZGF0YUxlbmd0aCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RShQQUwsIENvcmVNZWRpYSwgQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMsIENGRGlj
dGlvbmFyeVJlZiwgKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdl
dFR5cGVJRCwgQ0ZUeXBlSUQsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyLCBDTUJsb2Nr
QnVmZmVyUmVmLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKQEAgLTEzMyw5ICsx
MzQsMTEgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENN
QnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluLCBDTUIKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSwgT1NTdGF0dXMsIChD
TUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlLCBDTUJ1ZmZlclJlZiBidWZmZXIpLCAocXVldWUsIGJ1ZmZl
cikpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZm
ZXJRdWV1ZUlzRW1wdHksIEJvb2xlYW4sIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVl
KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZl
clF1ZXVlR2V0QnVmZmVyQ291bnQsIENNSXRlbUNvdW50LCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1
ZSksIChxdWV1ZSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRp
YSwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycywgY29u
c3QgQ01CdWZmZXJDYWxsYmFja3MgKiwgKCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRGaXJzdFByZXNlbnRhdGlvblRp
bWVTdGFtcCwgQ01UaW1lLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdl
dEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1
ZSksIChxdWV1ZSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRp
YSwgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQsIE9TU3Rh
dHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFj
ayB0cmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIHRyaWdnZXJSZWZjb24sIENNQnVmZmVyUXVldWVUcmln
Z2VyQ29uZGl0aW9uIHRyaWdnZXJDb25kaXRpb24sIENNSXRlbUNvdW50IHRyaWdnZXJUaHJlc2hv
bGQsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4qIHRyaWdnZXJUb2tlbk91dCksIChxdWV1ZSwg
dHJpZ2dlckNhbGxiYWNrLCB0cmlnZ2VyUmVmY29uLCB0cmlnZ2VyQ29uZGl0aW9uLCB0cmlnZ2Vy
VGhyZXNob2xkLCB0cmlnZ2VyVG9rZW5PdXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhLCBPU1N0YXR1cywg
KENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogCiBTT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERp
c3BsYXksIENGU3RyaW5nUmVmKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBD
b3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfTm90U3luYywgQ0ZTdHJpbmdSZWYpCkBA
IC0xNDksNiArMTUyLDkgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfU2FtcGwKIFNPRlRfTElOS19DT05T
VEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0Rp
c3BsYXlJbW1lZGlhdGVseSwgQ0ZTdHJpbmdSZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Jc0RlcGVuZGVkT25C
eU90aGVycywgQ0ZTdHJpbmdSZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUws
IENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29u
c3VtZWQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBD
b3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxl
RHVyYXRpb24sIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERlY29kZXJS
ZWZyZXNoLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJp
bUR1cmF0aW9uQXRTdGFydCwgQ0ZTdHJpbmdSZWYpCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
U09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9FZmZlY3RpdmVS
YXRlQ2hhbmdlZCwgQ0ZTdHJpbmdSZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQ
QUwsIENvcmVNZWRpYSwga0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCwgQ0ZTdHJp
bmdSZWYpCkBAIC0xNjMsNiArMTY5LDkgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
UEFMLCBDb3JlTWVkaWEsIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2UKIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlclNl
dERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVy
UmVmIHNidWYsIENGQWxsb2NhdG9yUmVmIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIENGQWxsb2NhdG9y
UmVmIGJidWZNZW1vcnlBbGxvY2F0b3IsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBBdWRpb0J1ZmZl
ckxpc3QgKmJ1ZmZlckxpc3QpLCAoc2J1ZiwgYmJ1ZlN0cnVjdEFsbG9jYXRvciwgYmJ1Zk1lbW9y
eUFsbG9jYXRvciwgZmxhZ3MsIGJ1ZmZlckxpc3QpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyU2V0RGF0YVJlYWR5LCBPU1N0YXR1
cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRl
LCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKiBhc2JkLCBzaXplX3QgbGF5b3V0U2l6ZSwgY29uc3QgQXVkaW9DaGFu
bmVsTGF5b3V0KiBsYXlvdXQsIHNpemVfdCBtYWdpY0Nvb2tpZVNpemUsIGNvbnN0IHZvaWQqIG1h
Z2ljQ29va2llLCBDRkRpY3Rpb25hcnlSZWYgZXh0ZW5zaW9ucywgQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uUmVmKiBvdXREZXNjKSwgKGFsbG9jYXRvciwgYXNiZCwgbGF5b3V0U2l6ZSwgbGF5b3V0
LCBtYWdpY0Nvb2tpZVNpemUsIG1hZ2ljQ29va2llLCBleHRlbnNpb25zLCBvdXREZXNjKSkKK1NP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZSwgY29uc3Qgdm9pZCosIChDTUF1ZGlvRm9ybWF0RGVz
Y3JpcHRpb25SZWYgZGVzYywgc2l6ZV90KiBzaXplT3V0KSwgKGRlc2MsIHNpemVPdXQpKQorU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQsIGNvbnN0IEF1ZGlvRm9ybWF0TGlz
dEl0ZW0gKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQorCiBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldEhv
c3RUaW1lQ2xvY2ssIENNQ2xvY2tSZWYsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldFRpbWUsIENNVGltZSwgKENNQ2xv
Y2tSZWYgY2xvY2spLCAoY2xvY2spKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ2FsbEZvckVhY2hTYW1wbGUsIE9TU3RhdHVzLCAo
Q01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgT1NTdGF0dXMgKCogQ01TQU1QTEVCVUZGRVJDQUxMX05P
RVNDQVBFIGNhbGxiYWNrKSggQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBDTUl0ZW1D
b3VudCBpbmRleCwgdm9pZCAqcmVmY29uKSwgdm9pZCAqcmVmY29uKSwgKHNidWYsIGNhbGxiYWNr
LCByZWZjb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oCmluZGV4IDI2OGQxNjdmMjdkNmQzYWJiZmY1OTM1MjY3ZmMyMjIzOTEwMTBlM2QuLjgzZmY0
ZDY2MjNiZGZiZTExZDk3ZjZhM2U2M2ZmZmM5YWZiNjA0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKQEAgLTQ5LDYgKzQ5LDggQEAgU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDb3B5
RGF0YUJ5dGVzLCBPU1N0YXQKICNkZWZpbmUgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc29m
dExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5n
dGgsIHNpemVfdCwgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZlcikpCiAj
ZGVmaW5lIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJs
b2NrQnVmZmVyR2V0RGF0YUxlbmd0aAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzLCBPU1N0YXR1cywgKGNv
bnN0IHZvaWQqIHNvdXJjZUJ5dGVzLCBDTUJsb2NrQnVmZmVyUmVmIGRlc3RpbmF0aW9uQnVmZmVy
LCBzaXplX3Qgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUxlbmd0aCksIChzb3Vy
Y2VCeXRlcywgZGVzdGluYXRpb25CdWZmZXIsIG9mZnNldEludG9EZXN0aW5hdGlvbiwgZGF0YUxl
bmd0aCkpCisjZGVmaW5lIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzIHNvZnRMaW5rX0Nv
cmVNZWRpYV9DTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNp
b25zLCBDRkRpY3Rpb25hcnlSZWYsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVz
YykpCiAjZGVmaW5lIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zIHNvZnRMaW5rX0Nv
cmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucwogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0VHlwZUlELCBD
RlR5cGVJRCwgKHZvaWQpLCAoKSkKQEAgLTIyMywxMCArMjI1LDE0IEBAIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0QnVmZmVyQ291
bnQsIENNSXRlCiAjZGVmaW5lIENNQnVmZmVyUXVldWVHZXRCdWZmZXJDb3VudCBzb2Z0TGlua19D
b3JlTWVkaWFfQ01CdWZmZXJRdWV1ZUdldEJ1ZmZlckNvdW50CiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0
aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkK
ICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0YW1wIHNvZnRM
aW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25UaW1lU3RhbXAK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1
ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzLCBjb25zdCBDTUJ1ZmZlckNh
bGxiYWNrcyAqLCAoKSwgKCkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JV
bnNvcnRlZFNhbXBsZUJ1ZmZlcnMgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVHZXRD
YWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGlt
ZVN0YW1wLCBDTVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKICNkZWZp
bmUgQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3Jl
TWVkaWFfQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcAogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJbnN0YWxs
VHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYg
cXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNrLCB2b2lk
KiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmlnZ2VyQ29u
ZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dl
clRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywgdHJpZ2dl
clJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dlclRva2Vu
T3V0KSkKICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJl
c2hvbGQgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJ
bnRlZ2VyVGhyZXNob2xkCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVN
ZWRpYSwgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1
ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRh
IHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YQogCiBTT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVu
dEtleV9Eb05vdERpc3BsYXksIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVBdHRhY2ht
ZW50S2V5X0RvTm90RGlzcGxheSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1lbnRLZXlf
RG9Ob3REaXNwbGF5KCkKQEAgLTI1Niw2ICsyNjIsMTUgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1w
ZWQKICNkZWZpbmUga0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCBnZXRfQ29yZU1l
ZGlhX2tDTVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQoKQogU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90
aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBDRlN0cmluZ1JlZikKICNkZWZpbmUga0NNU2FtcGxl
QnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQgZ2V0X0NvcmVNZWRpYV9r
Q01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCgpCitTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVy
QXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpCisj
ZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxlRHVy
YXRpb24gZ2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0VuZHNQcmV2
aW91c1NhbXBsZUR1cmF0aW9uKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwg
Q29yZU1lZGlhLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0dyYWR1YWxEZWNvZGVyUmVm
cmVzaCwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlf
R3JhZHVhbERlY29kZXJSZWZyZXNoIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNo
bWVudEtleV9HcmFkdWFsRGVjb2RlclJlZnJlc2goKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9I
RUFERVIoUEFMLCBDb3JlTWVkaWEsIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNo
bWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUgZ2V0X0Nv
cmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3RhcnQg
Z2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0
U3RhcnQoKQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUsIGNvbnN0IHZvaWQqLCAoQ01B
dWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MsIHNpemVfdCogc2l6ZU91dCksIChkZXNjLCBz
aXplT3V0KSkKKyNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUg
c29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2ll
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgY29uc3QgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyks
IChkZXNjKSkKICNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2ssIE9TU3RhdHVz
LCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxsb2NhdG9yLCB2b2lkKiBtZW1vcnlCbG9jaywg
c2l6ZV90IGJsb2NrTGVuZ3RoLCBDRkFsbG9jYXRvclJlZiBibG9ja0FsbG9jYXRvciwgY29uc3Qg
Q01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlKiBjdXN0b21CbG9ja1NvdXJjZSwgc2l6ZV90
IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIENNQmxvY2tCdWZmZXJGbGFncyBmbGFn
cywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJlQWxsb2NhdG9y
LCBtZW1vcnlCbG9jaywgYmxvY2tMZW5ndGgsIGJsb2NrQWxsb2NhdG9yLCBjdXN0b21CbG9ja1Nv
dXJjZSwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncywgYmxvY2tCdWZmZXJPdXQpKQpA
QCAtMjY0LDYgKzI3OSw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpCiAjZGVmaW5lIENNU2Ft
cGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIgc29mdExp
bmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVk
QmxvY2tCdWZmZXIKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlh
LCBDTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMsIENNSXRlbUNvdW50LCAoQ01TYW1wbGVCdWZm
ZXJSZWYgc2J1ZiksIChzYnVmKSkKICNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVz
IHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3Jp
cHRpb25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVt
ICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKKyNkZWZpbmUg
Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdCBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZv
cm1hdAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2Ft
cGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9y
UmVmIGFsbG9jYXRvciwgQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZSYW5nZSBzYW1wbGVSYW5n
ZSwgQ01TYW1wbGVCdWZmZXJSZWYqIHNCdWZPdXQpLCAoYWxsb2NhdG9yLCBzYnVmLCBzYW1wbGVS
YW5nZSwgc0J1Zk91dCkpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZv
clJhbmdlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJG
b3JSYW5nZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENN
U2FtcGxlQnVmZmVyR2V0U2FtcGxlU2l6ZUFycmF5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVy
UmVmIHNidWYsIENNSXRlbUNvdW50IHNpemVBcnJheUVudHJpZXMsIHNpemVfdCogc2l6ZUFycmF5
T3V0LCBDTUl0ZW1Db3VudCogc2l6ZUFycmF5RW50cmllc05lZWRlZE91dCksIChzYnVmLCBzaXpl
QXJyYXlFbnRyaWVzLCBzaXplQXJyYXlPdXQsIHNpemVBcnJheUVudHJpZXNOZWVkZWRPdXQpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGlu
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZGJhMzc2MTc3YTBmZTc4MGUyMWUzNzczYjA4NmFjMmE1YjE5MTMzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hT
b2Z0TGluay5jcHAKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0IDxWaWRlb1Rvb2xib3gv
VlRDb21wcmVzc2lvblNlc3Npb24uaD4KKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgor
CitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gpCisKK1NP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRDb21wcmVz
c2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCBDRlN0cmluZ1JlZikKK1NPRlRfTElO
S19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRDb21wcmVzc2lvblBy
b3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpCitTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Np
b25Qcm9wZXJ0eUtleV9SZWFsVGltZSwgQ0ZTdHJpbmdSZWYpCisKK1NPRlRfTElOS19DT05TVEFO
VF9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0
aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsIENGU3RyaW5nUmVmKQor
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21w
cmVzc2lvblNlc3Npb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9y
LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgQ01WaWRlb0NvZGVjVHlwZSBjb2RlY1R5
cGUsIENGRGljdGlvbmFyeVJlZiBlbmNvZGVyU3BlY2lmaWNhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVm
IHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgQ0ZBbGxvY2F0b3JSZWYgY29tcHJlc3NlZERh
dGFBbGxvY2F0b3IsIFZUQ29tcHJlc3Npb25PdXRwdXRDYWxsYmFjayBvdXRwdXRDYWxsYmFjaywg
dm9pZCogb3V0cHV0Q2FsbGJhY2tSZWZDb24sIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmKiBjb21w
cmVzc2lvblNlc3Npb25PdXQpLCAoYWxsb2NhdG9yLCB3aWR0aCwgaGVpZ2h0LCBjb2RlY1R5cGUs
IGVuY29kZXJTcGVjaWZpY2F0aW9uLCBzb3VyY2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMsIGNvbXBy
ZXNzZWREYXRhQWxsb2NhdG9yLCBvdXRwdXRDYWxsYmFjaywgb3V0cHV0Q2FsbGJhY2tSZWZDb24s
IGNvbXByZXNzaW9uU2Vzc2lvbk91dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQ
QUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NT
dGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVV
bnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2Vu
dGF0aW9uVGltZVN0YW1wKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlk
ZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lLCBPU1N0YXR1cywgKFZU
Q29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VCdWZm
ZXIsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBkdXJhdGlvbiwgQ0ZEaWN0
aW9uYXJ5UmVmIGZyYW1lUHJvcGVydGllcywgdm9pZCogc291cmNlRnJhbWVSZWZjb24sIFZURW5j
b2RlSW5mb0ZsYWdzKiBpbmZvRmxhZ3NPdXQpLCAoc2Vzc2lvbiwgaW1hZ2VCdWZmZXIsIHByZXNl
bnRhdGlvblRpbWVTdGFtcCwgZHVyYXRpb24sIGZyYW1lUHJvcGVydGllcywgc291cmNlRnJhbWVS
ZWZjb24sIGluZm9GbGFnc091dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUws
IFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMs
IE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkK
KworI2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE5ZmU1MWUwZmYxNWNm
MjNkYWQ5ODA4OWMyNTk2YWRmMTkwYWQ0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaApAQCAtMCwwICsxLDUyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2lu
Y2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFE
RVIoUEFMLCBWaWRlb1Rvb2xib3gpCisKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBB
TCwgVmlkZW9Ub29sYm94LCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVS
YXRlLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBl
Y3RlZEZyYW1lUmF0ZSBnZXRfVmlkZW9Ub29sYm94X2tWVENvbXByZXNzaW9uUHJvcGVydHlLZXlf
RXhwZWN0ZWRGcmFtZVJhdGUoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBW
aWRlb1Rvb2xib3gsIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZh
bER1cmF0aW9uLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24gZ2V0X1ZpZGVvVG9vbGJveF9rVlRDb21wcmVz
c2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbigpCitTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9w
ZXJ0eUtleV9SZWFsVGltZSwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtWVENvbXByZXNzaW9uUHJv
cGVydHlLZXlfUmVhbFRpbWUgZ2V0X1ZpZGVvVG9vbGJveF9rVlRDb21wcmVzc2lvblByb3BlcnR5
S2V5X1JlYWxUaW1lKCkKKworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBWaWRl
b1Rvb2xib3gsIGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2Nl
bGVyYXRlZFZpZGVvRW5jb2RlciwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtWVFZpZGVvRW5jb2Rl
clNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRW5jb2RlciBnZXRf
VmlkZW9Ub29sYm94X2tWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVB
Y2NlbGVyYXRlZFZpZGVvRW5jb2RlcigpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMs
IChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
LCBDTVZpZGVvQ29kZWNUeXBlIGNvZGVjVHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVj
aWZpY2F0aW9uLCBDRkRpY3Rpb25hcnlSZWYgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBD
RkFsbG9jYXRvclJlZiBjb21wcmVzc2VkRGF0YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1
dENhbGxiYWNrIG91dHB1dENhbGxiYWNrLCB2b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRD
b21wcmVzc2lvblNlc3Npb25SZWYqIGNvbXByZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3Is
IHdpZHRoLCBoZWlnaHQsIGNvZGVjVHlwZSwgZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUlt
YWdlQnVmZmVyQXR0cmlidXRlcywgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxi
YWNrLCBvdXRwdXRDYWxsYmFja1JlZkNvbiwgY29tcHJlc3Npb25TZXNzaW9uT3V0KSkKKyNkZWZp
bmUgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29t
cHJlc3Npb25TZXNzaW9uQ3JlYXRlCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUws
IFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0
dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRp
bFByZXNlbnRhdGlvblRpbWVTdGFtcCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0
aW9uVGltZVN0YW1wKSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1l
cyBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1l
cworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29t
cHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Np
b25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNl
bnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lIGR1cmF0aW9uLCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQ
cm9wZXJ0aWVzLCB2b2lkKiBzb3VyY2VGcmFtZVJlZmNvbiwgVlRFbmNvZGVJbmZvRmxhZ3MqIGlu
Zm9GbGFnc091dCksIChzZXNzaW9uLCBpbWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1w
LCBkdXJhdGlvbiwgZnJhbWVQcm9wZXJ0aWVzLCBzb3VyY2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdz
T3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSBzb2Z0TGlua19W
aWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZQorU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9u
UHJlcGFyZVRvRW5jb2RlRnJhbWVzLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVm
IHNlc3Npb24pLCAoc2Vzc2lvbikpCisjZGVmaW5lIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFy
ZVRvRW5jb2RlRnJhbWVzIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lv
blByZXBhcmVUb0VuY29kZUZyYW1lcworCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBmZWJmMDVlYjA1OTcyOGY2YmVhOTgxOTM0NjI2MDAwZjhjYjUwYWU0Li5lNTVkM2E4MTFiMDVi
ODBkZjVkYjk2NGU4NGMwMTU1NGVjMDgxOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDk3LDYgKzEwOTcsNyBAQAogCQk0
MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4
MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZF
OTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2
NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNTMgLyogV3Jp
dGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVp
bHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk0MTZGNzk5MDIzRDc1MENGMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2Rjc5
OEYyM0Q3NTBDQjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLzsg
fTsKIAkJNDE3MjUzQUIxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTcyNTNBOTEz
NTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKIAkJNDE3NjEy
QUYxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUIxRTNBOTkzQjAw
QzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwICovOyB9OwogCQk0MTc2MTJCMDFF
M0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUMxRTNBOTkzQjAwQzNEODFE
IC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCAqLzsgfTsKQEAgLTExMzcsNiArMTEzOCw3IEBA
CiAJCTQxQjg3NzYyMjNERTEwNDUwMDM2MzhCOCAvKiBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFC
ODc3NjAyM0RFMTA0MjAwMzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFCRjIw
NDkyMkJBN0JFODAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkYyMDQwMjJCOTQ3MTYwMDA0Rjgx
MiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM3
NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUNENkY4QzIzRDZFODIxMDBCMTY0MjEg
LyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLzsgfTsKIAkJNDFEMDE1Q0EwRjRCNUM3MTAwNEE2
NjJGIC8qIENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUQxMjlDRTFG
M0QwRUY2MDBEMTVFNDcgLyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkIyNzhEMUYzNEMyODIwMDc5NTQ4
NyAvKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5oICovOyB9OwogCQk0MUQxMjlEMDFGM0QwRjA1
MDBEMTVFNDcgLyogQ2FjaGVRdWVyeU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkIyNzlCMUYzNENFRjAwMDc5NTQ4NyAvKiBDYWNoZVF1
ZXJ5T3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC03MzYwLDYgKzczNjIsOCBAQAogCQk0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyog
TmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRp
bmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBvcnRp
bmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZGNzk4RDIzRDc1MENB
MDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTcwQTJFOTFEOEMwQ0MwMDAzMTg0NTIgLyogSlNET01XcmFwcGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NV3JhcHBlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E4MTM1NEJCQkMwMDM2MEYyQSAv
KiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ2Nyw2ICs3NDcxLDggQEAKIAkJNDFD
N0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRp
YVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDYx
RTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdFMTA4MUU2QUEzN0MwMDI3QjRE
RSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUNENkY4OTIzRDZFODFDMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNE
NkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUNGOEJFNDFENDYy
MjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUNGOEJFNTFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3Vt
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJG
IC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRl
bnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODg4OSw4ICsxODg5NSwx
MiBAQAogCQk0RDNDMDVENDIxQUY0ODA5MDBGMjg5MEEgLyogY29jb2EgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNkY3OThEMjNENzUwQ0EwMDgyOUZD
MSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAqLywKKwkJCQk0MTZGNzk4RjIzRDc1
MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovLAogCQkJCTRE
NzNGOTRDMjE4QzRBODcwMDNBM0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmggKi8sCiAJCQkJNEQ3M0Y5NEQyMThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EubW0gKi8sCisJCQkJNDFDRDZGODkyM0Q2RTgxQzAwQjE2NDIxIC8qIFZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovLAorCQkJCTQxQ0Q2RjhCMjNENkU4MUQwMEIx
NjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzNTM2LDYgKzMzNTQ2
LDcgQEAKIAkJCQlBOTc4N0NCNDFGNUY1QzY2MDBDNTUxQzYgLyogQWNjZXNzaWJpbGl0eU1lZGlh
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAv
KiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENTU5NjkxMTQ3
NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDE2Rjc5OTAyM0Q3NTBDRjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRp
b1Nlc3Npb25JT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2
NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlC
RTg4RTBEODE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTM0MjY4LDYgKzM0Mjc5LDcgQEAKIAkJCQk3QzczRkIwNzE5MUVGNDE3MDA3REUwNjEgLyog
VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzRkJD
NEFGMzE4OTg4MTU2MDA0NkVFMzggLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1MkQ1QTE4RjFDNTQ1OTIzMDBERTM0QTMgLyogVmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxQ0Q2RjhDMjNE
NkU4MjEwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCRTg4RTBERTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCRTg4RTBFMTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzMzZGNjcxN0ZBMEFDNjAwREREQ0QwIC8qIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVB
VkZJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAppbmRleCA3M2YxZDBhMTUxOWYyYzAzYjkxZDY5NTEw
NTEzNWE0ZjIwZDFkYTY0Li5mMWY2ODA0NTIyOTM2NWQ4ZmMzYjA3OTY3MmQyYzIwMzNmYmVhMzkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC0yNiw5ICsy
NiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5oIgogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUgIkF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJNZWRpYVN0
cmVhbVByaXZhdGUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTY4LDcgKzY5LDE0
IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgIH0KLSAgICBhdXRvIHdyaXRlciA9IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpj
cmVhdGUoYXVkaW9UcmFjaywgdmlkZW9UcmFjayk7CisKKyAgICBpbnQgd2lkdGggPSAwLCBoZWln
aHQgPSAwOworICAgIGlmICh2aWRlb1RyYWNrKSB7CisgICAgICAgIGF1dG8mIHNldHRpbmdzID0g
dmlkZW9UcmFjay0+c2V0dGluZ3MoKTsKKyAgICAgICAgd2lkdGggPSBzZXR0aW5ncy53aWR0aCgp
OworICAgICAgICBoZWlnaHQgPSBzZXR0aW5ncy5oZWlnaHQoKTsKKyAgICB9CisgICAgYXV0byB3
cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKCEhYXVkaW9UcmFjaywg
d2lkdGgsIGhlaWdodCk7CiAgICAgaWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC0xMTksNCArMTI3LDQgQEAgY29uc3QgU3RyaW5nJiBNZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGw6Om1pbWVUeXBlKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
QVZGSW1wbC5oCmluZGV4IDBjZjBkZjNjNjRjYzk3MTNlMzA1OWJlMzZjYWNjOWZjN2NjYzBiMzYu
LjM0ZTJhOTZjNzk0MThkNGU4NjZjMWFjMjEwNDA5OGNjOTM4ZjQ0YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVB
VkZJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaApAQCAtMjQsNyArMjQsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJNZWRpYVJlY29yZGVy
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIK
QEAgLTU2LDQgKzU2LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0N2JmODFlMWQ0NTZjNzBj
MmQ5NDRmNzA0NWE4ZTE2ZTA1OWJjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0IDxDb3Jl
TWVkaWEvQ29yZU1lZGlhLmg+CisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVy
ICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUF1ZGlvQ29udmVydGVy
KiBBdWRpb0NvbnZlcnRlclJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yPiBjcmVhdGUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tPYmplY3QpOworICAgIH5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKworICAgIHZv
aWQgZmluaXNoKCk7CisgICAgdm9pZCBhZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYp
OworICAgIENNU2FtcGxlQnVmZmVyUmVmIGdldE91dHB1dFNhbXBsZUJ1ZmZlcigpOworICAgIFJl
dGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gdGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOworCitw
cml2YXRlOgorICAgIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpOworICAgIGJvb2wgaW5p
dGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVj
dCk7CisKKyAgICBzdGF0aWMgT1NTdGF0dXMgYXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRh
UHJvYyhBdWRpb0NvbnZlcnRlclJlZiwgVUludDMyKiwgQXVkaW9CdWZmZXJMaXN0KiwgQXVkaW9T
dHJlYW1QYWNrZXREZXNjcmlwdGlvbioqLCB2b2lkKik7CisKKyAgICB2b2lkIHByb2Nlc3NTYW1w
bGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOworICAgIGJvb2wgaW5pdEF1ZGlvQ29udmVydGVy
Rm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiwgQXVkaW9G
b3JtYXRJRCk7CisgICAgc2l6ZV90IGNvbXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQoQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uLCBVSW50MzIsIEZsb2F0MzIpOworICAgIHZvaWQgYXR0
YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoQ01TYW1wbGVCdWZmZXJSZWYpOworICAgIFJldGFpblB0
cjxOU051bWJlcj4gZ3JhZHVhbERlY29kZXJSZWZyZXNoQ291bnQoKTsKKyAgICBDTVNhbXBsZUJ1
ZmZlclJlZiBzYW1wbGVCdWZmZXJXaXRoTnVtUGFja2V0cyhVSW50MzIgbnVtUGFja2V0cywgQXVk
aW9CdWZmZXJMaXN0KTsKKyAgICB2b2lkIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRl
clRpbWUoQ01UaW1lKTsKKyAgICBPU1N0YXR1cyBwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBh
Y2tldHMoVUludDMyKiwgQXVkaW9CdWZmZXJMaXN0KiwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlw
dGlvbioqKTsKKworICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZl
clF1ZXVlOworICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX2lucHV0QnVmZmVyUXVl
dWU7CisgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgQ01U
aW1lIG1fbG93V2F0ZXJUaW1lOworICAgIGJvb2wgbV9pc0VuY29kaW5nIHsgZmFsc2UgfTsKKwor
ICAgIFJldGFpblB0cjxBdWRpb0NvbnZlcnRlclJlZj4gbV9jb252ZXJ0ZXI7CisgICAgQXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1fc291cmNlRm9ybWF0OworICAgIEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiBtX2Rlc3RpbmF0aW9uRm9ybWF0OworICAgIFJldGFpblB0cjxDTUZvcm1h
dERlc2NyaXB0aW9uUmVmPiBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb247CisgICAgUmV0
YWluUHRyPE5TTnVtYmVyPiBtX2dkckNvdW50TnVtOworICAgIFVJbnQzMiBtX21heE91dHB1dFBh
Y2tldFNpemU7CisgICAgVmVjdG9yPEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24+IG1fZGVz
dGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnM7CisKKyAgICBDTVRpbWUgbV9jdXJyZW50TmF0aXZl
UHJlc2VudGF0aW9uVGltZVN0YW1wOworICAgIENNVGltZSBtX2N1cnJlbnRPdXRwdXRQcmVzZW50
YXRpb25UaW1lU3RhbXA7CisgICAgQ01UaW1lIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbjsKKwor
ICAgIFZlY3RvcjxjaGFyPiBtX3NvdXJjZUJ1ZmZlcjsKKyAgICBWZWN0b3I8Y2hhcj4gbV9kZXN0
aW5hdGlvbkJ1ZmZlcjsKKworICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX3NhbXBs
ZUJsb2NrQnVmZmVyOworICAgIHNpemVfdCBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZTsKKyAgICBz
aXplX3QgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcjsKKyAgICBBdWRpb0Zvcm1h
dElEIG1fb3V0cHV0Q29kZWNUeXBlOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IxNTEyMDYwZDcwYTBiN2Q3MmMx
ZDFiYmVlYzBlNGY2NTRjOTU4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1t
CkBAIC0wLDAgKzEsNDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29kZWMuaD4KKyNpbmNsdWRlIDxBdWRpb1Rvb2xi
b3gvQXVkaW9Db252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQu
aD4KKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworI2ltcG9ydCA8cGFsL2Nm
L0F1ZGlvVG9vbGJveFNvZnRMaW5rLmg+CisKKyNkZWZpbmUgTE9XX1dBVEVSX1RJTUVfSU5fU0VD
T05EUyAwLjEKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBhdXRvIGNvbXByZXNzb3IgPSBz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcgQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yKCkpOworICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShj
YWxsYmFjaywgY2FsbGJhY2tPYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gY29tcHJlc3NvcjsKK30KKworQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsg
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSB9CisgICAgLCBtX2xvd1dhdGVyVGltZSB7IENN
VGltZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9JTl9TRUNPTkRTLCAxMDAwKSB9Cisg
ICAgLCBtX291dHB1dENvZGVjVHlwZSB7IGtBdWRpb0Zvcm1hdE1QRUc0QUFDIH0KK3sKK30KKwor
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
KCkKK3sKKyAgICBpZiAobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKQorICAgICAgICBkaXNwYXRjaF9y
ZWxlYXNlKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSk7Cit9CisKK2Jvb2wgQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjppbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2Fs
bGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KQoreworICAgIENNQnVmZmVyUXVldWVSZWYgaW5w
dXRCdWZmZXJRdWV1ZTsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29y
dGVkU2FtcGxlQnVmZmVycygpLCAmaW5wdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01C
dWZmZXJRdWV1ZUNyZWF0ZSBmb3IgbV9pbnB1dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1faW5wdXRCdWZmZXJR
dWV1ZSA9IGFkb3B0Q0YoaW5wdXRCdWZmZXJRdWV1ZSk7CisKKyAgICBDTUJ1ZmZlclF1ZXVlUmVm
IG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9y
VW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZvdXRwdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBmb3IgbV9vdXRwdXRCdWZmZXJRdWV1ZSBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX291dHB1
dEJ1ZmZlclF1ZXVlID0gYWRvcHRDRihvdXRwdXRCdWZmZXJRdWV1ZSk7CisgICAgQ01CdWZmZXJR
dWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGNhbGxiYWNrLCBj
YWxsYmFja09iamVjdCwga0NNQnVmZmVyUXVldWVUcmlnZ2VyX1doZW5EYXRhQmVjb21lc1JlYWR5
LCBrQ01UaW1lWmVybywgTlVMTCk7CisKKyAgICBtX2lzRW5jb2RpbmcgPSB0cnVlOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNo
KCkKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAg
ICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShrQ01UaW1lSW52YWxpZCk7
CisgICAgICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1
dEJ1ZmZlclF1ZXVlLmdldCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3Is
IE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVN
YXJrRW5kT2ZEYXRhIGZhaWxlZCAlZCIsIGVycm9yKTsKKyAgICAgICAgbV9pc0VuY29kaW5nID0g
ZmFsc2U7CisgICAgfSk7Cit9CisKK2Jvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uLCBBdWRpb0Zvcm1hdElEIG91dHB1dEZvcm1hdElE
KQoreworICAgIGNvbnN0IGF1dG8gKmF1ZGlvRm9ybWF0TGlzdEl0ZW0gPSBDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0KGZvcm1hdERlc2NyaXB0aW9uKTsK
KyAgICBtX3NvdXJjZUZvcm1hdCA9IGF1ZGlvRm9ybWF0TGlzdEl0ZW0tPm1BU0JEOworCisgICAg
bWVtc2V0KCZtX2Rlc3RpbmF0aW9uRm9ybWF0LCAwLCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uKSk7CisgICAgbV9kZXN0aW5hdGlvbkZvcm1hdC5tRm9ybWF0SUQgPSBvdXRwdXRG
b3JtYXRJRDsKKyAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlID0gbV9zb3VyY2VG
b3JtYXQubVNhbXBsZVJhdGU7CisgICAgbV9kZXN0aW5hdGlvbkZvcm1hdC5tQ2hhbm5lbHNQZXJG
cmFtZSA9IG1fc291cmNlRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lOworCisgICAgVUludDMyIHNp
emUgPSBzaXplb2YobV9kZXN0aW5hdGlvbkZvcm1hdCk7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBB
dWRpb0Zvcm1hdEdldFByb3BlcnR5KGtBdWRpb0Zvcm1hdFByb3BlcnR5X0Zvcm1hdEluZm8sIDAs
IE5VTEwsICZzaXplLCAmbV9kZXN0aW5hdGlvbkZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9G
b3JtYXRHZXRQcm9wZXJ0eSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIEF1ZGlvQ29udmVydGVyUmVmIGNvbnZlcnRlcjsKKyAgICBp
ZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyTmV3KCZtX3NvdXJjZUZvcm1hdCwgJm1fZGVz
dGluYXRpb25Gb3JtYXQsICZjb252ZXJ0ZXIpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIEF1ZGlvQ29udmVydGVy
TmV3IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIG1fY29udmVydGVyID0gYWRvcHRDRihjb252ZXJ0ZXIpOworCisgICAgc2l6ZV90IGNv
b2tpZVNpemUgPSAwOworICAgIGNvbnN0IHZvaWQgKmNvb2tpZSA9IENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvbkdldE1hZ2ljQ29va2llKGZvcm1hdERlc2NyaXB0aW9uLCAmY29va2llU2l6ZSk7Cisg
ICAgaWYgKGNvb2tpZVNpemUpIHsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZl
cnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJEZWNvbXBy
ZXNzaW9uTWFnaWNDb29raWUsIChVSW50MzIpY29va2llU2l6ZSwgY29va2llKSkgeworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJEZWNvbXByZXNzaW9uTWFnaWNDb29raWUg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBzaXplID0gc2l6ZW9mKG1fc291cmNlRm9ybWF0KTsKKyAgICBp
ZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0
KCksIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRJbnB1dFN0cmVhbURlc2NyaXB0aW9uLCAmc2l6ZSwg
Jm1fc291cmNlRm9ybWF0KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckN1
cnJlbnRJbnB1dFN0cmVhbURlc2NyaXB0aW9uIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFtX3NvdXJjZUZvcm1hdC5tQnl0
ZXNQZXJQYWNrZXQpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJt
Qnl0ZXNQZXJQYWNrZXQgc2hvdWxkIG5vdCBiZSB6ZXJvIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBzaXplID0gc2l6ZW9mKG1fZGVzdGluYXRpb25Gb3JtYXQpOworICAg
IGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5n
ZXQoKSwga0F1ZGlvQ29udmVydGVyQ3VycmVudE91dHB1dFN0cmVhbURlc2NyaXB0aW9uLCAmc2l6
ZSwgJm1fZGVzdGluYXRpb25Gb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29u
dmVydGVyQ3VycmVudE91dHB1dFN0cmVhbURlc2NyaXB0aW9uIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1fZGVzdGluYXRp
b25Gb3JtYXQubUZvcm1hdElEID09IGtBdWRpb0Zvcm1hdE1QRUc0QUFDKSB7CisgICAgICAgIC8v
IEZJWE1FOiBTZXQgb3V0cHV0Qml0UmF0ZSBhY2NvcmRpbmcgTWVkaWFSZWNvcmRlck9wdGlvbnMu
YXVkaW9CaXRzUGVyU2Vjb25kLgorICAgICAgICBVSW50MzIgb3V0cHV0Qml0UmF0ZSA9IDY0MDAw
OworICAgICAgICBpZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA+PSA0NDEwMCkK
KyAgICAgICAgICAgIG91dHB1dEJpdFJhdGUgPSAxOTIwMDA7CisgICAgICAgIGVsc2UgaWYgKG1f
ZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPCAyMjAwMCkKKyAgICAgICAgICAgIG91dHB1
dEJpdFJhdGUgPSAzMjAwMDsKKworICAgICAgICBzaXplID0gc2l6ZW9mKG91dHB1dEJpdFJhdGUp
OworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9j
b252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckVuY29kZUJpdFJhdGUsIHNpemUsICZvdXRw
dXRCaXRSYXRlKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJFbmNv
ZGVCaXRSYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1C
eXRlc1BlclBhY2tldCkgeworICAgICAgICAvLyBJZiB0aGUgZGVzdGluYXRpb24gZm9ybWF0IGlz
IFZCUiwgd2UgbmVlZCB0byBnZXQgbWF4IHNpemUgcGVyIHBhY2tldCBmcm9tIHRoZSBjb252ZXJ0
ZXIuCisgICAgICAgIHNpemUgPSBzaXplb2YobV9tYXhPdXRwdXRQYWNrZXRTaXplKTsKKworICAg
ICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0
ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlclByb3BlcnR5TWF4aW11bU91dHB1dFBhY2tldFNpemUs
ICZzaXplLCAmbV9tYXhPdXRwdXRQYWNrZXRTaXplKSkgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGlu
ZyBrQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eU1heGltdW1PdXRwdXRQYWNrZXRTaXplIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbV9kZXN0aW5hdGlvbkJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkoY29tcHV0ZUJ1
ZmZlclNpemVGb3JBdWRpb0Zvcm1hdChtX2Rlc3RpbmF0aW9uRm9ybWF0LCBtX21heE91dHB1dFBh
Y2tldFNpemUsIExPV19XQVRFUl9USU1FX0lOX1NFQ09ORFMpKTsKKyAgICBpZiAoIW1fZGVzdGlu
YXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0KQorICAgICAgICBtX2Rlc3RpbmF0aW9uUGFja2V0
RGVzY3JpcHRpb25zLnJlc2VydmVDYXBhY2l0eShtX2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5
KCkgLyBtX21heE91dHB1dFBhY2tldFNpemUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Np
emVfdCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVk
aW9Gb3JtYXQoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIGZvcm1hdCwgVUludDMyIG1heE91
dHB1dFBhY2tldFNpemUsIEZsb2F0MzIgZHVyYXRpb24pCit7CisgICAgVUludDMyIG51bVBhY2tl
dHMgPSAoZm9ybWF0Lm1TYW1wbGVSYXRlICogZHVyYXRpb24pIC8gZm9ybWF0Lm1GcmFtZXNQZXJQ
YWNrZXQ7CisgICAgVUludDMyIG91dHB1dFBhY2tldFNpemUgPSBmb3JtYXQubUJ5dGVzUGVyUGFj
a2V0ID8gZm9ybWF0Lm1CeXRlc1BlclBhY2tldCA6IG1heE91dHB1dFBhY2tldFNpemU7CisgICAg
VUludDMyIGJ1ZmZlclNpemUgPSBudW1QYWNrZXRzICogb3V0cHV0UGFja2V0U2l6ZTsKKworICAg
IHJldHVybiBidWZmZXJTaXplOworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQor
eworICAgIGlmIChDTVRJTUVfSVNfSU5WQUxJRChtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7
CisgICAgICAgIEF1ZGlvQ29udmVydGVyUHJpbWVJbmZvIHByaW1lSW5mbyB7IDAsIDAgfTsKKyAg
ICAgICAgVUludDMyIHNpemUgPSBzaXplb2YocHJpbWVJbmZvKTsKKworICAgICAgICBpZiAoYXV0
byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtB
dWRpb0NvbnZlcnRlclByaW1lSW5mbywgJnNpemUsICZwcmltZUluZm8pKSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fcmVtYWlu
aW5nUHJpbWVEdXJhdGlvbiA9IENNVGltZU1ha2UocHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMsIG1f
ZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUpOworICAgIH0KKworICAgIGlmIChDTVRJTUVf
Q09NUEFSRV9JTkxJTkUoa0NNVGltZVplcm8sIDwsIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbikp
IHsKKyAgICAgICAgQ01UaW1lIHNhbXBsZUR1cmF0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXREdXJh
dGlvbihidWZmZXIpOworICAgICAgICBDTVRpbWUgdHJpbUR1cmF0aW9uID0gQ01UaW1lTWluaW11
bShzYW1wbGVEdXJhdGlvbiwgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uKTsKKyAgICAgICAgQ0ZE
aWN0aW9uYXJ5UmVmIHRyaW1BdFN0YXJ0RGljdCA9IENNVGltZUNvcHlBc0RpY3Rpb25hcnkodHJp
bUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKKyAgICAgICAgQ01TZXRBdHRhY2htZW50
KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0
LCB0cmltQXRTdGFydERpY3QsIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7Cisg
ICAgICAgIENGUmVsZWFzZSh0cmltQXRTdGFydERpY3QpOworICAgICAgICBtX3JlbWFpbmluZ1By
aW1lRHVyYXRpb24gPSBDTVRpbWVTdWJ0cmFjdChtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24sIHRy
aW1EdXJhdGlvbik7CisgICAgfQorfQorCitSZXRhaW5QdHI8TlNOdW1iZXI+IEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6Z3JhZHVhbERlY29kZXJSZWZyZXNoQ291bnQoKQoreworICAgIFVJ
bnQzMiBkZWxheVNpemUgPSBzaXplb2YodWludDMyX3QpOworICAgIHVpbnQzMl90IG9yaWdpbmFs
RGVsYXlNb2RlID0gMDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJv
cGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUsICZk
ZWxheVNpemUsICZvcmlnaW5hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVk
aW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAg
ICByZXR1cm4gbmlsOworICAgIH0KKworICAgIHVpbnQzMl90IG9wdGltYWxEZWxheU1vZGUgPSBr
QXVkaW9Db2RlY0RlbGF5TW9kZV9PcHRpbWFsOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9D
b252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0
eURlbGF5TW9kZSwgZGVsYXlTaXplLCAmb3B0aW1hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
c2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIFVJbnQzMiBwcmltZVNpemUg
PSBzaXplb2YoQXVkaW9Db2RlY1ByaW1lSW5mbyk7CisgICAgQXVkaW9Db2RlY1ByaW1lSW5mbyBw
cmltZUluZm8geyAwLCAwIH07CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdl
dFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZv
LCAmcHJpbWVTaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0Nv
ZGVjUHJvcGVydHlQcmltZUluZm8gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgfQorCisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNl
dFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2Rl
LCBkZWxheVNpemUsICZvcmlnaW5hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBr
QXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4gYWRvcHROUyhbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDoocHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMgLyBtX2Rlc3RpbmF0aW9uRm9ybWF0
Lm1GcmFtZXNQZXJQYWNrZXQpXSk7Cit9CisKK0NNU2FtcGxlQnVmZmVyUmVmIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBh
Y2tldHMsIEF1ZGlvQnVmZmVyTGlzdCBmaWxsQnVmZmVyTGlzdCkKK3sKKyAgICBWZWN0b3I8Y2hh
cj4gY29va2llOworICAgIGlmICghbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSB7Cisg
ICAgICAgIFVJbnQzMiBjb29raWVTaXplID0gMDsKKworICAgICAgICBhdXRvIGVycm9yID0gQXVk
aW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eUluZm8obV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZl
cnRlckNvbXByZXNzaW9uTWFnaWNDb29raWUsICZjb29raWVTaXplLCBOVUxMKTsKKyAgICAgICAg
aWYgKChlcnJvciA9PSBub0VycikgJiYgISFjb29raWVTaXplKSB7CisgICAgICAgICAgICBjb29r
aWUucmVzZXJ2ZUNhcGFjaXR5KGNvb2tpZVNpemUpOworCisgICAgICAgICAgICBpZiAoYXV0byBl
cnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRp
b0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29raWUsICZjb29raWVTaXplLCBjb29raWUuZGF0
YSgpKSkgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ29tcHJl
c3Npb25NYWdpY0Nvb2tpZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbmlsOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZiBkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAgICAgICBp
ZiAoYXV0byBlcnJvciA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAmbV9kZXN0aW5hdGlvbkZvcm1hdCwgMCwgTlVMTCwgY29va2llU2l6ZSwgY29v
a2llLmRhdGEoKSwgTlVMTCwgJmRlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24pKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICB9CisgICAgICAgIG1f
ZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbiA9IGFkb3B0Q0YoZGVzdGluYXRpb25Gb3JtYXRE
ZXNjcmlwdGlvbik7CisgICAgICAgIG1fZ2RyQ291bnROdW0gPSBncmFkdWFsRGVjb2RlclJlZnJl
c2hDb3VudCgpOworICAgIH0KKworICAgIGNoYXIgKmRhdGEgPSBzdGF0aWNfY2FzdDxjaGFyKj4o
ZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEpOworICAgIHNpemVfdCBkYXRhU2l6ZSA9
IGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemU7CisKKyAgICBDTUJsb2Nr
QnVmZmVyUmVmIGJsb2NrQnVmZmVyOworICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZl
ckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBkYXRhU2l6
ZSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgMCwgZGF0YVNpemUsIGtDTUJsb2NrQnVmZmVy
QXNzdXJlTWVtb3J5Tm93RmxhZywgJmJsb2NrQnVmZmVyKSkgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2Nr
QnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0Q0YoYmxvY2tC
dWZmZXIpOworCisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFC
eXRlcyhkYXRhLCBidWZmZXIuZ2V0KCksIDAsIGRhdGFTaXplKSkgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJs
b2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZm
ZXI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0
RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1ZmZlci5nZXQoKSwgdHJ1ZSwgTlVM
TCwgTlVMTCwgbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uLmdldCgpLCBudW1QYWNrZXRz
LCBtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG1fZGVzdGluYXRpb25QYWNr
ZXREZXNjcmlwdGlvbnMuZGF0YSgpLCAmc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoZXJyb3IpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlv
bnMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQor
CisgICAgaWYgKFttX2dkckNvdW50TnVtIGludFZhbHVlXSkKKyAgICAgICAgQ01TZXRBdHRhY2ht
ZW50KHNhbXBsZUJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9HcmFkdWFsRGVj
b2RlclJlZnJlc2gsIChfX2JyaWRnZSBDRlR5cGVSZWYpbV9nZHJDb3VudE51bS5nZXQoKSwga0NN
QXR0YWNobWVudE1vZGVfU2hvdWxkUHJvcGFnYXRlKTsKKworICAgIHJldHVybiBzYW1wbGVCdWZm
ZXI7Cit9CisKK09TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YXVkaW9Db252
ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYyhBdWRpb0NvbnZlcnRlclJlZiwgVUludDMyICpudW1P
dXRwdXRQYWNrZXRzUHRyLCBBdWRpb0J1ZmZlckxpc3QgKmJ1ZmZlckxpc3QsIEF1ZGlvU3RyZWFt
UGFja2V0RGVzY3JpcHRpb24gKipwYWNrZXREZXNjcmlwdGlvbk91dCwgdm9pZCAqYXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yKQoreworICAgIGF1dG8gKmNvbXByZXNzb3IgPSBzdGF0aWNfY2Fz
dDxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IqPihhdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IpOworICAgIHJldHVybiBjb21wcmVzc29yLT5wcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBh
Y2tldHMobnVtT3V0cHV0UGFja2V0c1B0ciwgYnVmZmVyTGlzdCwgcGFja2V0RGVzY3JpcHRpb25P
dXQpOworfQorCitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVT
b3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIqIG51bU91dHB1dFBhY2tldHNQdHIsIEF1
ZGlvQnVmZmVyTGlzdCogYXVkaW9CdWZmZXJMaXN0LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0
aW9uKiogcGFja2V0RGVzY3JpcHRpb25PdXQpCit7CisgICAgaWYgKHBhY2tldERlc2NyaXB0aW9u
T3V0KQorICAgICAgICAqcGFja2V0RGVzY3JpcHRpb25PdXQgPSBOVUxMOworCisgICAgY29uc3Qg
VUludDMyIG51bVBhY2tldHNUb0NvcHkgPSAqbnVtT3V0cHV0UGFja2V0c1B0cjsKKyAgICBzaXpl
X3QgbnVtQnl0ZXNUb0NvcHkgPSAobnVtUGFja2V0c1RvQ29weSAqIG1fc291cmNlRm9ybWF0Lm1C
eXRlc1BlclBhY2tldCk7CisKKyAgICBpZiAoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVy
cyA9PSAxKSB7CisgICAgICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgPSAw
OworCisgICAgICAgIG1fc291cmNlQnVmZmVyLnJlc2VydmVDYXBhY2l0eShudW1CeXRlc1RvQ29w
eSk7CisKKyAgICAgICAgd2hpbGUgKG51bUJ5dGVzVG9Db3B5KSB7CisgICAgICAgICAgICBpZiAo
bV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPD0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1
ZmZlcikgeworICAgICAgICAgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBudWxscHRyOworICAgICAgICAg
ICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5KG1faW5wdXRCdWZm
ZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29u
c3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZl
clF1ZXVlLmdldCgpKSkpKTsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0g
YWRvcHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01T
YW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAg
ICAgICAgICAgIGlmICghbV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIgZmFpbGVkIik7CisgICAgICAgICAgICAg
ICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
bV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX3NhbXBs
ZUJsb2NrQnVmZmVyU2l6ZSA9IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fc2FtcGxlQmxv
Y2tCdWZmZXIuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxl
QmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9zYW1w
bGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgIHNpemVfdCBudW1CeXRlc1RvQ29weUZy
b21TYW1wbGVCYnVmID0gc3RkOjptaW4obnVtQnl0ZXNUb0NvcHksIChtX3NhbXBsZUJsb2NrQnVm
ZmVyU2l6ZSAtIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKG1fc2Ft
cGxlQmxvY2tCdWZmZXIuZ2V0KCksIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIs
IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYsIChtX3NvdXJjZUJ1ZmZlci5kYXRhKCkgKyBj
dXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIpKSkgeworICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBD
TUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBudW1CeXRlc1RvQ29weSAtPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOwor
ICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciArPSBudW1CeXRlc1Rv
Q29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2Ft
cGxlQmxvY2tCdWZmZXIgKz0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1E
YXRhID0gbV9zb3VyY2VCdWZmZXIuZGF0YSgpOworICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1C
dWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7Cisg
ICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9z
b3VyY2VGb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisKKyAgICAgICAgKm51bU91dHB1dFBhY2tl
dHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplIC8gbV9z
b3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKKyAgICAgICAgcmV0dXJuIG5vRXJyOworICAg
IH0KKworICAgIEFTU0VSVChhdWRpb0J1ZmZlckxpc3QtPm1OdW1iZXJCdWZmZXJzID09IDIpOwor
CisgICAgLy8gRklYTUU6IFN1cHBvcnQgaW50ZXJsZWF2ZWQgZGF0YSBieSB1bmludGVybGVhdmlu
ZyBtX3NvdXJjZUJ1ZmZlciBpZiBuZWVkZWQuCisgICAgQVNTRVJUKG1fc291cmNlRm9ybWF0Lm1G
b3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkKTsKKworICAgIG1f
c291cmNlQnVmZmVyLnJlc2VydmVDYXBhY2l0eSgyICogbnVtQnl0ZXNUb0NvcHkpOworICAgIGF1
dG8qIGZpcnN0Q2hhbm5lbCA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICBhdXRvKiBzZWNv
bmRDaGFubmVsID0gbV9zb3VyY2VCdWZmZXIuZGF0YSgpICsgbnVtQnl0ZXNUb0NvcHk7CisKKyAg
ICBzaXplX3QgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyID0gMDsKKyAgICB3aGlsZSAobnVt
Qnl0ZXNUb0NvcHkpIHsKKyAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9IG1f
Y3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgIGlmIChtX3Nh
bXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9
IG51bGxwdHI7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoQ01CdWZmZXJRdWV1ZUlzRW1wdHkobV9p
bnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29u
c3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZl
clF1ZXVlLmdldCgpKSkpKTsKKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBhZG9w
dENGKChDTUJsb2NrQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDRlJldGFpbihDTVNhbXBs
ZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKSkpKSk7CisgICAgICAgICAg
ICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNhbXBs
ZUJ1ZmZlckdldERhdGFCdWZmZXIgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVC
bG9ja0J1ZmZlclNpemUgPSAwOworICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2Ft
cGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVy
R2V0RGF0YUxlbmd0aChtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpKSAvIDI7CisgICAgICAgICAg
ICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICBzaXplX3QgbnVt
Qnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9z
YW1wbGVCbG9ja0J1ZmZlclNpemUgLSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVy
KSk7CisgICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5
dGVzKG1fc2FtcGxlQmxvY2tCdWZmZXIuZ2V0KCksIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxv
Y2tCdWZmZXIsIG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYsIChmaXJzdENoYW5uZWwgKyBj
dXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIpKSkgeworICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQmxv
Y2tCdWZmZXJDb3B5RGF0YUJ5dGVzIGZpcnN0IGNoYW5uZWwgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBs
ZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyICsg
bV9zYW1wbGVCbG9ja0J1ZmZlclNpemUsIG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYsIChz
ZWNvbmRDaGFubmVsICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBzZWNvbmQgY2hhbm5lbCBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBudW1CeXRlc1RvQ29weSAtPSBudW1CeXRlc1RvQ29weUZy
b21TYW1wbGVCYnVmOworICAgICAgICAgICAgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyICs9
IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICBtX2N1cnJlbnRPZmZz
ZXRJblNhbXBsZUJsb2NrQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRh
ID0gZmlyc3RDaGFubmVsOworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFC
eXRlU2l6ZSA9IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcjsKKyAgICBhdWRpb0J1ZmZlckxp
c3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IDE7CisKKyAgICBhdWRpb0J1ZmZlckxp
c3QtPm1CdWZmZXJzWzFdLm1EYXRhID0gc2Vjb25kQ2hhbm5lbDsKKyAgICBhdWRpb0J1ZmZlckxp
c3QtPm1CdWZmZXJzWzFdLm1EYXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZm
ZXI7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tTnVtYmVyQ2hhbm5lbHMgPSAx
OworCisgICAgKm51bU91dHB1dFBhY2tldHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVy
c1swXS5tRGF0YUJ5dGVTaXplIC8gbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKKyAg
ICByZXR1cm4gbm9FcnI7Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpw
cm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKENNVGltZSBsb3dXYXRlclRpbWUp
Cit7CisgICAgaWYgKCFtX2NvbnZlcnRlcikgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IChDTVNh
bXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZUdldEhlYWQobV9p
bnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOworICAgICAgICBBU1NFUlQoYnVmZmVyKTsKKworICAg
ICAgICBtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZl
ckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIpOworICAgICAgICBtX2N1cnJlbnRPdXRw
dXRQcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFByZXNlbnRh
dGlvblRpbWVTdGFtcChidWZmZXIpOworCisgICAgICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRpb24g
PSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKGJ1ZmZlcik7CisgICAgICAgIGlm
ICghaW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oZm9ybWF0RGVz
Y3JpcHRpb24sIG1fb3V0cHV0Q29kZWNUeXBlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICB3aGlsZSAoQ01USU1FX0lTX0lOVkFMSUQobG93V2F0ZXJUaW1lKSB8fCBDTVRJTUVf
Q09NUEFSRV9JTkxJTkUobG93V2F0ZXJUaW1lLCA8LCBDTUJ1ZmZlclF1ZXVlR2V0RHVyYXRpb24o
bV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpIHsKKyAgICAgICAgQXVkaW9CdWZmZXJMaXN0IGZp
bGxCdWZmZXJMaXN0OworCisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJzID0g
MTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0g
bV9kZXN0aW5hdGlvbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKyAgICAgICAgZmlsbEJ1ZmZl
ckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IChVSW50MzIpbV9kZXN0aW5hdGlvbkJ1
ZmZlci5jYXBhY2l0eSgpOworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0
YSA9IG1fZGVzdGluYXRpb25CdWZmZXIuZGF0YSgpOworCisgICAgICAgIFVJbnQzMiBvdXRwdXRQ
YWNrZXRTaXplID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPyBtX2Rlc3Rp
bmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA6IG1fbWF4T3V0cHV0UGFja2V0U2l6ZTsKKyAg
ICAgICAgVUludDMyIG51bU91dHB1dFBhY2tldHMgPSAoVUludDMyKW1fZGVzdGluYXRpb25CdWZm
ZXIuY2FwYWNpdHkoKSAvIG91dHB1dFBhY2tldFNpemU7CisKKyAgICAgICAgYXV0byBlcnJvciA9
IEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIobV9jb252ZXJ0ZXIuZ2V0KCksIGF1ZGlv
Q29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MsIHRoaXMsICZudW1PdXRwdXRQYWNrZXRzLCAm
ZmlsbEJ1ZmZlckxpc3QsIG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnMuZGF0YSgpKTsK
KyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRpb0NvbnZlcnRlckZpbGxD
b21wbGV4QnVmZmVyIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFudW1PdXRwdXRQYWNrZXRzKQorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBidWZmZXIgPSBzYW1wbGVCdWZmZXJXaXRoTnVtUGFj
a2V0cyhudW1PdXRwdXRQYWNrZXRzLCBmaWxsQnVmZmVyTGlzdCk7CisKKyAgICAgICAgYXR0YWNo
UHJpbWluZ1RyaW1zSWZOZWVkZWQoYnVmZmVyKTsKKworICAgICAgICBlcnJvciA9IENNU2FtcGxl
QnVmZmVyU2V0T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlciwgbV9jdXJyZW50T3V0
cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBDTVNhbXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIENNVGltZSBuYXRpdmVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24o
YnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0g
Q01UaW1lQWRkKG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCwgbmF0aXZlRHVy
YXRpb24pOworCisgICAgICAgIENNVGltZSBvdXRwdXREdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVy
R2V0T3V0cHV0RHVyYXRpb24oYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2Vu
dGF0aW9uVGltZVN0YW1wID0gQ01UaW1lQWRkKG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRp
bWVTdGFtcCwgb3V0cHV0RHVyYXRpb24pOworCisgICAgICAgIGVycm9yID0gQ01CdWZmZXJRdWV1
ZUVucXVldWUobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgYnVmZmVyKTsKKyAgICAgICAgaWYg
KGVycm9yKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIo
Q01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1
ZXVlRW5xdWV1ZShtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIENNQnVmZmVyUXVldWVFbnF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisg
ICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShtX2xvd1dhdGVyVGltZSk7
Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIo
Q01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxE
aXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBpZiAobV9pc0VuY29kaW5nKQorICAgICAgICAgICAg
cHJvY2Vzc1NhbXBsZUJ1ZmZlcihidWZmZXIpOworICAgIH0pOworfQorCitDTVNhbXBsZUJ1ZmZl
clJlZiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcigp
Cit7CisgICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01C
dWZmZXJRdWV1ZUdldEhlYWQobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKK30KKworUmV0
YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRh
a2VPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVybiBhZG9wdENGKChDTVNhbXBsZUJ1
ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4o
bV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IGIxNDdjYTI4ODI5YjBm
MTAzMGJkYTc0YTA4NDI2YzQ1NjVlOTg3MWUuLjA1MTg2MDg2YTI1NjE2MDI0NmNkOGQzMjIxNThj
NTY4OTFhNDJjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5oCkBAIC0yNCw3ICsyNCw5IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFW
QVNTRVRXUklURVJERUxFR0FURSkKKworI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24u
aCIKIAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgpAQCAtMzUsMTAgKzM3LDE2IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAorI2luY2x1ZGUgPENv
cmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgorI2luY2x1ZGUgPENvcmVNZWRpYS9DTVRpbWUuaD4K
KwogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVm
OwordHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiogQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZjsKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNQnVmZmVyUXVldWVUcmln
Z2VyVG9rZW4gKkNNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW47CiAKIE9CSkNfQ0xBU1MgQVZBc3Nl
dFdyaXRlcjsKIE9CSkNfQ0xBU1MgQVZBc3NldFdyaXRlcklucHV0OworT0JKQ19DTEFTUyBXZWJB
VkFzc2V0V3JpdGVyRGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWVkaWFUaW1l
OwpAQCAtNDYsNTEgKzU0LDcyIEBAIGNsYXNzIE1lZGlhVGltZTsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiBjbGFzcyBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CiBjbGFzcyBQ
bGF0Zm9ybUF1ZGlvRGF0YTsKK2NsYXNzIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcjsKIAot
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdURjo6RGVz
dHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI+IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXZWFrUHRyRmFjdG9yeUluaXRpYWxp
emF0aW9uOjpFYWdlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogYXVk
aW9UcmFjaywgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHZpZGVvVHJhY2spOwogICAg
IHN0YXRpYyBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IGNyZWF0ZShib29sIGhh
c0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAgIH5NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcigpOwotICAgIAotICAgIGJvb2wgc2V0dXBXcml0ZXIoKTsKLSAgICBib29sIHNldFZp
ZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICBib29sIHNldEF1ZGlvSW5wdXQo
KTsKKwogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYp
OwogICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0Rh
dGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29uc3QgV1RGOjpNZWRpYVRpbWUm
LCBzaXplX3QpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwogICAgIHZvaWQgZmV0Y2hEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+JiYpOwogCisg
ICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5k
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKwogcHJpdmF0ZToKLSAgICBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcihSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4mJiwgU3RyaW5nJiYgcGF0aCk7
CisgICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNW
aWRlbyk7CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+
IG1fd3JpdGVyOwotICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9JbnB1
dDsKLSAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX2F1ZGlvSW5wdXQ7Ci0KLSAg
ICBTdHJpbmcgbV9wYXRoOwotICAgIExvY2sgbV92aWRlb0xvY2s7Ci0gICAgTG9jayBtX2F1ZGlv
TG9jazsKLSAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nU2VtYXBob3JlOwotICAg
IEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZTsKLSAgICBCaW5h
cnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmU7CisgICAgYm9vbCBpbml0
aWFsaXplKCk7CisKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJD
YWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CisgICAgc3RhdGljIHZv
aWQgY29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVl
dWVUcmlnZ2VyVG9rZW4pOworCisgICAgdm9pZCBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAgdm9p
ZCBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworCisgICAgYm9vbCBhcHBlbmRDb21w
cmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKTsKKyAgICBib29sIGFwcGVuZENvbXByZXNzZWRWaWRl
b1NhbXBsZUJ1ZmZlcigpOworCisgICAgdm9pZCBwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2Ft
cGxlQnVmZmVycygpOworICAgIHZvaWQgcHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1
ZmZlcnMoKTsKKworICAgIHZvaWQgZmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1
cmF0aW9uSWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogICAgIGJvb2wg
bV9oYXNTdGFydGVkV3JpdGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU3RvcHBlZCB7IGZh
bHNlIH07Ci0gICAgYm9vbCBtX2lzRmlyc3RBdWRpb1NhbXBsZSB7IHRydWUgfTsKLSAgICBkaXNw
YXRjaF9xdWV1ZV90IG1fYXVkaW9QdWxsUXVldWU7Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX3Zp
ZGVvUHVsbFF1ZXVlOwotICAgIERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4+IG1f
dmlkZW9CdWZmZXJQb29sOwotICAgIERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4+
IG1fYXVkaW9CdWZmZXJQb29sOworCisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3Jp
dGVyOwogCiAgICAgYm9vbCBtX2lzU3RvcHBpbmcgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOworCisgICAgYm9vbCBt
X2hhc0F1ZGlvOworICAgIGJvb2wgbV9oYXNWaWRlbzsKKworICAgIFJldGFpblB0cjxDTUZvcm1h
dERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7Cisg
ICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQ7
CisKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV92aWRlb0Zvcm1hdERl
c2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I+IG1fdmlkZW9Db21wcmVzc29yOworICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+
IG1fdmlkZW9Bc3NldFdyaXRlcklucHV0OworICAgIENNVGltZSBtX2xhc3RWaWRlb1ByZXNlbnRh
dGlvblRpbWU7CisgICAgQ01UaW1lIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lOworICAgIGJvb2wg
bV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzIHsgZmFsc2UgfTsKKworICAgIFJldGFpblB0cjxXZWJB
VkFzc2V0V3JpdGVyRGVsZWdhdGU+IG1fd3JpdGVyRGVsZWdhdGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmlu
ZGV4IDIzMzU0ZjQ3ODRkZTA5MmYwNDg3YzE4NTRmYzViMjZhNWUyMjExYWMuLmVjM2JiNmVmNDMy
NDVlOWUzOTI5OGIwMWZmZDI3YjZiYWU5YzYxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTI2LDI1MyArMjYsMzQ4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5oIgogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElP
TikKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FU
RSkKIAorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1ZGUg
IkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNsdWRl
IDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9B
VkFzc2V0V3JpdGVySW5wdXQuaD4KKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRl
cl9Qcml2YXRlLmg+CisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5k
YXRpb24uaD4KICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRl
IDx3dGYvQmxvY2tQdHIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5o
PgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAotI3VuZGVm
IEFWRW5jb2RlckJpdFJhdGVLZXkKLSNkZWZpbmUgQVZFbmNvZGVyQml0UmF0ZUtleSBnZXRBVkVu
Y29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBBVkZvcm1hdElES2V5Ci0jZGVm
aW5lIEFWRm9ybWF0SURLZXkgZ2V0QVZGb3JtYXRJREtleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYg
QVZOdW1iZXJPZkNoYW5uZWxzS2V5Ci0jZGVmaW5lIEFWTnVtYmVyT2ZDaGFubmVsc0tleSBnZXRB
Vk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2soKQotI3VuZGVmIEFWU2FtcGxlUmF0ZUtl
eQotI2RlZmluZSBBVlNhbXBsZVJhdGVLZXkgZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNr
KCkKK0BpbnRlcmZhY2UgV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIDogTlNPYmplY3QgPEFWQXNz
ZXRXcml0ZXJEZWxlZ2F0ZT4geworICAgIFdlYWtQdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI+IG1fd3JpdGVyOworfQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKil3cml0ZXI7CistICh2b2lkKWNsb3NlOwogCi11c2luZyBuYW1lc3BhY2UgUEFMOworQGVu
ZAogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQorQGlt
cGxlbWVudGF0aW9uIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB7Cit9OworCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Kil3cml0ZXIKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkZvcm1hdElE
S2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtl
eSgpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKKyAgICBpZiAoc2VsZikKKyAgICAgICAgc2VsZi0+bV93cml0ZXIgPSBtYWtlV2Vha1B0cih3
cml0ZXIpOwogCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBB
VkZvcm1hdElES2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZGb3JtYXRJREtleSI7CisgICAgcmV0dXJu
IHNlbGY7CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0
aEZhbGxiYWNrKCkKKy0gKHZvaWQpYXNzZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdy
aXRlciBkaWRQcm9kdWNlRnJhZ21lbnRlZEhlYWRlckRhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRI
ZWFkZXJEYXRhCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZOdW1iZXJP
ZkNoYW5uZWxzS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZO
dW1iZXJPZkNoYW5uZWxzS2V5KCk7CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKKyAg
ICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGlmIChhdXRvIHNpemUgPSBbZnJhZ21l
bnRlZEhlYWRlckRhdGEgbGVuZ3RoXSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
cHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYp
LCBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGJ5dGVzXSksIHNpemUpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlcikKKyAgICAgICAg
ICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+bV93cml0ZXItPmFwcGVuZERhdGEoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWTnVt
YmVyT2ZDaGFubmVsc0tleSIpOwotICAgIHJldHVybiBAIkFWTnVtYmVyT2ZDaGFubmVsc0tleSI7
CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGJ5dGVzXSksIFtmcmFnbWVu
dGVkSGVhZGVyRGF0YSBsZW5ndGhdKTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVlNhbXBs
ZVJhdGVLZXlXaXRoRmFsbGJhY2soKQorLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdyaXRl
ciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VGcmFnbWVudGVkTWVkaWFEYXRhOihOU0RhdGEgKilm
cmFnbWVudGVkTWVkaWFEYXRhIGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQ6KEFWRnJhZ21lbnRl
ZE1lZGlhRGF0YVJlcG9ydCAqKWZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQKIHsKLSAgICBpZiAo
UEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXkoKSkKLSAgICAgICAgcmV0
dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXkoKTsKKyAgICBVTlVTRURf
UEFSQU0oYXNzZXRXcml0ZXIpOworICAgIFVOVVNFRF9QQVJBTShmcmFnbWVudGVkTWVkaWFEYXRh
UmVwb3J0KTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGlmIChhdXRvIHNp
emUgPSBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5ndGhdKSB7CisgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxl
Z2F0ZT4oc2VsZiksIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBzaXplKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+bV93cml0ZXIp
CisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyLT5hcHBlbmREYXRh
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm47CisgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8g
bG9hZCBBVlNhbXBsZVJhdGVLZXkiKTsKLSAgICByZXR1cm4gQCJBVlNhbXBsZVJhdGVLZXkiOwor
ICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkTWVkaWFEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVk
TWVkaWFEYXRhIGxlbmd0aF0pOwogfQogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFWRW5jb2RlckJp
dFJhdGVLZXlXaXRoRmFsbGJhY2soKQorLSAodm9pZCljbG9zZQogewotICAgIGlmIChQQUw6OmNh
bkxvYWRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVLZXkoKSkKLSAgICAgICAgcmV0dXJu
IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCk7CisgICAgbV93cml0
ZXIgPSBudWxscHRyOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcg
bmFtZXNwYWNlIFBBTDsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRv
IGxvYWQgQVZFbmNvZGVyQml0UmF0ZUtleSIpOwotICAgIHJldHVybiBAIkFWRW5jb2RlckJpdFJh
dGVLZXkiOworUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdo
dCkKK3sKKyAgICBhdXRvIHdyaXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoaGFzQXVkaW8sIHdpZHRoICYmIGhlaWdodCkpOworICAgIGlmICghd3JpdGVyLT5p
bml0aWFsaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiB3cml0ZXI7
CiB9CiAKLVJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogYXVkaW9U
cmFjaywgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHZpZGVvVHJhY2spCit2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxs
YmFjayh2b2lkICptZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgQ01CdWZmZXJRdWV1ZVRyaWdn
ZXJUb2tlbikKIHsKLSAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwotICAgIGlmICh2aWRl
b1RyYWNrKSB7Ci0gICAgICAgIGF1dG8mIHNldHRpbmdzID0gdmlkZW9UcmFjay0+c2V0dGluZ3Mo
KTsKLSAgICAgICAgd2lkdGggPSBzZXR0aW5ncy53aWR0aCgpOwotICAgICAgICBoZWlnaHQgPSBz
ZXR0aW5ncy5oZWlnaHQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGNyZWF0ZSghIWF1ZGlvVHJhY2ss
IHdpZHRoLCBoZWlnaHQpOworICAgIGF1dG8gKndyaXRlciA9IHN0YXRpY19jYXN0PE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKj4obWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOworICAgIHdy
aXRlci0+cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKIH0KIAotUmVm
UHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3ZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxi
YWNrKHZvaWQgKm1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dl
clRva2VuKQogewotICAgIE5TU3RyaW5nICpkaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkoQCJ2aWRlb3MiKTsKLSAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIi8lbGxkLm1wNCIsIENNQ2xvY2tHZXRUaW1lKENN
Q2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpLnZhbHVlXTsKLSAgICBOU1N0cmluZyAqcGF0aCA9IFtk
aXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6ZmlsZW5hbWVdOworICAgIGF1dG8gKndy
aXRlciA9IHN0YXRpY19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKj4obWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXIpOworICAgIHdyaXRlci0+cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRp
b1NhbXBsZUJ1ZmZlcnMoKTsKK30KKworTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pCisgICAg
OiBtX2hhc0F1ZGlvKGhhc0F1ZGlvKQorICAgICwgbV9oYXNWaWRlbyhoYXNWaWRlbykKK3sKK30K
KworTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cigpCit7CisgICAgY2xlYXIoKTsKK30KIAotICAgIE5TVVJMICpvdXRwdXRVUkwgPSBbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOnBhdGhdOwotICAgIFN0cmluZyBmaWxlUGF0aCA9IFtwYXRoIFVURjhT
dHJpbmddOworYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSgpCit7
CiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgYXV0byBhdkFzc2V0V3JpdGVyID0gYWRv
cHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRXaXRoVVJMOm91dHB1
dFVSTCBmaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7CisgICAgbV93cml0
ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhG
aWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7CiAgICAgaWYgKGVycm9yKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRX
cml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAobG9uZyllcnJvci5j
b2RlKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBhdXRvIHdyaXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoV1RGTW92ZShhdkFzc2V0V3JpdGVyKSwgV1RGTW92ZShmaWxlUGF0aCkpKTsKKyAg
ICBtX3dyaXRlckRlbGVnYXRlID0gYWRvcHROUyhbW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhXcml0ZXI6IHRoaXNdKTsKKyAgICBbbV93cml0ZXIuZ2V0KCkgc2V0RGVs
ZWdhdGU6bV93cml0ZXJEZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBpZiAoaGFzQXVkaW8gJiYgIXdy
aXRlci0+c2V0QXVkaW9JbnB1dCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlm
ICh3aWR0aCAmJiBoZWlnaHQpIHsKLSAgICAgICAgaWYgKCF3cml0ZXItPnNldFZpZGVvSW5wdXQo
d2lkdGgsIGhlaWdodCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAobV9o
YXNBdWRpbykgeworICAgICAgICBtX2F1ZGlvQ29tcHJlc3NvciA9IEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6Y3JlYXRlKGNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrLCB0
aGlzKTsKKyAgICAgICAgaWYgKCFtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0KLSAgICByZXR1cm4gV1RGTW92ZSh3cml0ZXIpOworICAgIGlmICht
X2hhc1ZpZGVvKSB7CisgICAgICAgIG1fdmlkZW9Db21wcmVzc29yID0gVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjpjcmVhdGUoa0NNVmlkZW9Db2RlY1R5cGVfSDI2NCwgY29tcHJlc3NlZFZp
ZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2ssIHRoaXMpOworICAgICAgICBpZiAoIW1fdmlkZW9Db21w
cmVzc29yKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiYmIGF2QXNzZXRXcml0ZXIsIFN0cmluZyYm
IGZpbGVQYXRoKQotICAgIDogbV93cml0ZXIoV1RGTW92ZShhdkFzc2V0V3JpdGVyKSkKLSAgICAs
IG1fcGF0aChXVEZNb3ZlKGZpbGVQYXRoKSkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCkKIHsKKyAgICBBU1NF
UlQobV9oYXNWaWRlbyk7CisgICAgaWYgKCFtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24pIHsKKyAg
ICAgICAgbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXRE
ZXNjcmlwdGlvbihtX3ZpZGVvQ29tcHJlc3Nvci0+Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkpOwor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0
aGlzXSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgaWYgKG1faGFzQXVkaW8gJiYgIW1fYXVkaW9Gb3JtYXREZXNjcmlw
dGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHN0YXJ0QXNzZXRX
cml0ZXIoKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGlu
ZykKKyAgICAgICAgcmV0dXJuOworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7
CiB9CiAKLU1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIoKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXBy
ZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcnMoKQogewotICAgIGNsZWFyKCk7CisgICAgQVNTRVJUKG1f
aGFzQXVkaW8pOworICAgIGlmICghbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAg
IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3Jp
cHRpb24obV9hdWRpb0NvbXByZXNzb3ItPmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpKTsKKyAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10g
eworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX2hhc1ZpZGVvICYmICFtX3ZpZGVvRm9ybWF0
RGVzY3JpcHRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFy
dEFzc2V0V3JpdGVyKCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRl
ZFdyaXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVm
ZmVycygpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVhcigpCit2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKCkKIHsKLSAg
ICBpZiAobV92aWRlb0lucHV0KSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1dC5jbGVhcigpOwotICAg
ICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fdmlkZW9QdWxsUXVldWUpOworICAgIGlmIChtX2hhc1Zp
ZGVvKSB7CisgICAgICAgIG1fdmlkZW9Bc3NldFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjph
bGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRp
YVR5cGVWaWRlbyBvdXRwdXRTZXR0aW5nczpuaWwgc291cmNlRm9ybWF0SGludDptX3ZpZGVvRm9y
bWF0RGVzY3JpcHRpb24uZ2V0KCldKTsKKyAgICAgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0
IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOworICAgICAgICBpZiAoIVttX3dy
aXRlci5nZXQoKSBjYW5BZGRJbnB1dDptX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0pIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIGNhbkFkZElucHV0IGZvciB2
aWRlbyIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFttX3dyaXRl
ci5nZXQoKSBhZGRJbnB1dDptX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV07CiAgICAgfQot
ICAgIGlmIChtX2F1ZGlvSW5wdXQpIHsKLSAgICAgICAgbV9hdWRpb0lucHV0LmNsZWFyKCk7Ci0g
ICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9hdWRpb1B1bGxRdWV1ZSk7CisgICAgCisgICAgaWYg
KG1faGFzQXVkaW8pIHsKKyAgICAgICAgbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgPSBhZG9wdE5T
KFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlw
ZTpBVk1lZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdzOm5pbCBzb3VyY2VGb3JtYXRIaW50Om1f
YXVkaW9Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKV0pOworICAgICAgICBbbV9hdWRpb0Fzc2V0V3Jp
dGVySW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07CisgICAgICAgIGlm
ICghW21fd3JpdGVyLmdldCgpIGNhbkFkZElucHV0Om1fYXVkaW9Bc3NldFdyaXRlcklucHV0Lmdl
dCgpXSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlciBmYWlsZWQgY2FuQWRkSW5w
dXQgZm9yIGF1ZGlvIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
W21fd3JpdGVyLmdldCgpIGFkZElucHV0Om1fYXVkaW9Bc3NldFdyaXRlcklucHV0LmdldCgpXTsK
KyAgICB9CisgICAgCisgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgc3RhcnRXcml0aW5nXSkgewor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBzdGFydFdyaXRpbmciKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobV93cml0ZXIpCi0gICAgICAgIG1fd3JpdGVyLmNs
ZWFyKCk7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOwotICAgIGlmIChhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgW21fd3JpdGVyLmdldCgpIHN0YXJ0U2Vz
c2lvbkF0U291cmNlVGltZTprQ01UaW1lWmVyb107CisKKyAgICBhcHBlbmRDb21wcmVzc2VkU2Ft
cGxlQnVmZmVycygpOworCisgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7CiB9CiAKLWJv
b2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQorYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJl
c3NlZEF1ZGlvU2FtcGxlQnVmZmVyKCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9JbnB1dCk7Ci0g
ICAgCi0gICAgTlNEaWN0aW9uYXJ5ICpjb21wcmVzc2lvblByb3BlcnRpZXMgPSBAewotICAgICAg
ICBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0
aCAqIGhlaWdodCAqIDEyXSwKLSAgICAgICAgQVZWaWRlb0V4cGVjdGVkU291cmNlRnJhbWVSYXRl
S2V5IDogQCgzMCksCi0gICAgICAgIEFWVmlkZW9NYXhLZXlGcmFtZUludGVydmFsS2V5IDogQCgx
MjApLAotICAgICAgICBBVlZpZGVvUHJvZmlsZUxldmVsS2V5IDogQVZWaWRlb1Byb2ZpbGVMZXZl
bEgyNjRNYWluQXV0b0xldmVsCi0gICAgfTsKLQotICAgIE5TRGljdGlvbmFyeSAqdmlkZW9TZXR0
aW5ncyA9IEB7Ci0gICAgICAgIEFWVmlkZW9Db2RlY0tleTogQVZWaWRlb0NvZGVjSDI2NCwKLSAg
ICAgICAgQVZWaWRlb1dpZHRoS2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0aF0sCi0g
ICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6IFtOU051bWJlciBudW1iZXJXaXRoSW50OmhlaWdodF0s
Ci0gICAgICAgIEFWVmlkZW9Db21wcmVzc2lvblByb3BlcnRpZXNLZXk6IGNvbXByZXNzaW9uUHJv
cGVydGllcwotICAgIH07Ci0gICAgCi0gICAgbV92aWRlb0lucHV0ID0gYWRvcHROUyhbUEFMOjph
bGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRp
YVR5cGVWaWRlbyBvdXRwdXRTZXR0aW5nczp2aWRlb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6
bmlsXSk7Ci0gICAgW21fdmlkZW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0
cnVlXTsKLSAgICAKLSAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1dDptX3ZpZGVvSW5wdXQu
Z2V0KCldKSB7Ci0gICAgICAgIG1fdmlkZW9JbnB1dCA9IG51bGxwdHI7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIHZpZGVvIGlucHV0IGlzIG5vdCBhbGxvd2Vk
IHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOworICAgIGlmICghbV9hdWRpb0NvbXByZXNz
b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgW21fd3JpdGVyIGFkZElucHV0
Om1fdmlkZW9JbnB1dC5nZXQoKV07Ci0gICAgbV92aWRlb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1
ZXVlX2NyZWF0ZSgiV2ViQ29yZVZpZGVvUmVjb3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFU
Q0hfUVVFVUVfU0VSSUFMKTsKKworICAgIGlmICghW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IGlz
UmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0
byBidWZmZXIgPSBtX2F1ZGlvQ29tcHJlc3Nvci0+dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOwor
ICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBbbV9hdWRpb0Fz
c2V0V3JpdGVySW5wdXQuZ2V0KCkgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNl
dEF1ZGlvSW5wdXQoKQorYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29t
cHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKCkKIHsKLSAgICBBU1NFUlQoIW1fYXVkaW9JbnB1dCk7
CisgICAgaWYgKCFtX3ZpZGVvQ29tcHJlc3NvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgTlNEaWN0aW9uYXJ5ICphdWRpb1NldHRpbmdzID0gQHsKLSAgICAgICAgQVZFbmNvZGVyQml0
UmF0ZUtleSA6IEAoMjgwMDApLAotICAgICAgICBBVkZvcm1hdElES2V5IDogQChrQXVkaW9Gb3Jt
YXRNUEVHNEFBQyksCi0gICAgICAgIEFWTnVtYmVyT2ZDaGFubmVsc0tleSA6IEAoMSksCi0gICAg
ICAgIEFWU2FtcGxlUmF0ZUtleSA6IEAoMjIwNTApCi0gICAgfTsKKyAgICBpZiAoIVttX3ZpZGVv
QXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1fYXVkaW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0
V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8g
b3V0cHV0U2V0dGluZ3M6YXVkaW9TZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5pbF0pOwotICAg
IFttX2F1ZGlvSW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07Ci0gICAg
Ci0gICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV9hdWRpb0lucHV0LmdldCgpXSkgewot
ICAgICAgICBtX2F1ZGlvSW5wdXQgPSBudWxscHRyOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgInRoZSBhdWRpbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8g
dGhlIEFWQXNzZXRXcml0ZXIiKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fdmlkZW9Db21wcmVzc29y
LT50YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgW21fd3JpdGVyIGFkZElucHV0Om1fYXVkaW9JbnB1dC5n
ZXQoKV07Ci0gICAgbV9hdWRpb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2Vi
Q29yZUF1ZGlvUmVjb3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFM
KTsKKworICAgIG1fbGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0
UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlci5nZXQoKSk7CisgICAgbV9sYXN0VmlkZW9EZWNv
ZGluZ1RpbWUgPSBDTVNhbXBsZUJ1ZmZlckdldERlY29kZVRpbWVTdGFtcChidWZmZXIuZ2V0KCkp
OworICAgIG1faGFzRW5jb2RlZFZpZGVvU2FtcGxlcyA9IHRydWU7CisKKyAgICBbbV92aWRlb0Fz
c2V0V3JpdGVySW5wdXQuZ2V0KCkgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFw
cGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCkKK3sKKyAgICB3aGlsZSAoYXBwZW5kQ29tcHJl
c3NlZFZpZGVvU2FtcGxlQnVmZmVyKCkgfHwgYXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVm
ZmVyKCkpIHsgfTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZEVuZHNQcmV2aW91c1Nh
bXBsZUR1cmF0aW9uTWFya2VyKEFWQXNzZXRXcml0ZXJJbnB1dCAqYXNzZXRXcml0ZXJJbnB1dCwg
Q01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lIGRlY29kaW5nVGltZVN0YW1wKQor
eworICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvID0geyBrQ01UaW1lSW52YWxpZCwg
cHJlc2VudGF0aW9uVGltZVN0YW1wLCBkZWNvZGluZ1RpbWVTdGFtcH07CisKKyAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiBidWZmZXIgPSBOVUxMOworICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCB0cnVlLCBOVUxMLCBOVUxMLCBOVUxM
LCAwLCAxLCAmdGltaW5nSW5mbywgMCwgTlVMTCwgJmJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIgZmFpbGVk
IENNU2FtcGxlQnVmZmVyQ3JlYXRlIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKGJ1ZmZlcik7CisKKyAgICBD
TVNldEF0dGFjaG1lbnQoc2FtcGxlQnVmZmVyLmdldCgpLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2ht
ZW50S2V5X0VuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uLCBrQ0ZCb29sZWFuVHJ1ZSwga0NNQXR0
YWNobWVudE1vZGVfU2hvdWxkUHJvcGFnYXRlKTsKKyAgICBpZiAoIVthc3NldFdyaXRlcklucHV0
IGFwcGVuZFNhbXBsZUJ1ZmZlcjpzYW1wbGVCdWZmZXIuZ2V0KCldKQorICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFwcGVu
ZFNhbXBsZUJ1ZmZlciB0byB3cml0ZXIgaW5wdXQgZmFpbGVkIik7Cit9CisKK3ZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlvbklmTmVl
ZGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAoIW1faGFzRW5jb2RlZFZpZGVvU2FtcGxlcykgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChbbV92aWRlb0Fzc2V0V3Jp
dGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgIGFwcGVuZEVuZHNQ
cmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgp
LCBtX2xhc3RWaWRlb1ByZXNlbnRhdGlvblRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gYmxvY2sgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykgeworICAgICAgICAgICAgYXBwZW5k
RW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIobV92aWRlb0Fzc2V0V3JpdGVySW5wdXQu
Z2V0KCksIG1fbGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZSwgbV9sYXN0VmlkZW9EZWNvZGluZ1Rp
bWUpOworICAgICAgICAgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IG1hcmtBc0ZpbmlzaGVk
XTsKKyAgICAgICAgfQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworICAg
IFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1
ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6YmxvY2suZ2V0KCldOworfQor
Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVC
dWZmZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworICAgIGFwcGVuZEVuZE9mVmlk
ZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQoreworICAgIGlmICht
X3dyaXRlcikKKyAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKworICAgIG1fZGF0YSA9IG51bGxw
dHI7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRh
Q29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsK
K30KKworCiBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29weVNh
bXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKENNU2FtcGxlQnVmZmVyUmVmIG9yaWdpbmFs
QnVmZmVyKQogewogICAgIENNVGltZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2Nr
R2V0SG9zdFRpbWVDbG9jaygpKTsKICAgICBDTUl0ZW1Db3VudCBjb3VudCA9IDA7CiAgICAgQ01T
YW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIDAsIG5p
bCwgJmNvdW50KTsKLSAgICAKKwogICAgIFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWVJ
bmZvKGNvdW50KTsKICAgICBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShv
cmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJmNvdW50KTsKLSAgICAKLSAg
ICBmb3IgKENNSXRlbUNvdW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworCisgICAgZm9yIChh
dXRvIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICB0aW1lSW5mb1tpXS5kZWNvZGVU
aW1lU3RhbXAgPSBrQ01UaW1lSW52YWxpZDsKICAgICAgICAgdGltZUluZm9baV0ucHJlc2VudGF0
aW9uVGltZVN0YW1wID0gc3RhcnRUaW1lOwogICAgIH0KLSAgICAKKwogICAgIENNU2FtcGxlQnVm
ZmVyUmVmIG5ld0J1ZmZlciA9IG51bGxwdHI7Ci0gICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVm
ZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3JpZ2luYWxC
dWZmZXIsIGNvdW50LCB0aW1lSW5mby5kYXRhKCksICZuZXdCdWZmZXIpOwotICAgIGlmIChlcnJv
cikKKyAgICBpZiAoYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdU
aW1pbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5m
by5kYXRhKCksICZuZXdCdWZmZXIpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgQ01TYW1wbGVCdWZmZXJDcmVhdGVD
b3B5V2l0aE5ld1RpbWluZyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQogICAgIHJldHVybiBhZG9wdENGKG5ld0J1ZmZlcik7CiB9CiAKIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcikKIHsKLSAgICBBU1NFUlQobV92aWRlb0lucHV0
KTsKLSAgICBpZiAobV9pc1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9o
YXNTdGFydGVkV3JpdGluZykgewotICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmdd
KSB7Ci0gICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZh
aWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpW21fd3JpdGVyIGVycm9yXSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgW21fd3JpdGVyIHN0YXJ0U2Vzc2lv
bkF0U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKV07
Ci0gICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOwotICAgICAgICBSZWZQdHI8TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwotICAgICAgICBb
bV92aWRlb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fdmlkZW9QdWxs
UXVldWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyldIHsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVv
SW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2NrKTsK
LSAgICAgICAgICAgICAgICBpZiAobV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fdmlk
ZW9CdWZmZXJQb29sLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGxvY2tlci51bmxvY2tF
YXJseSgpOwotICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBhcHBlbmRTYW1wbGVC
dWZmZXI6YnVmZmVyLmdldCgpXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9IHdoaWxlICh0cnVlKTsKLSAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX3Zp
ZGVvQnVmZmVyUG9vbC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBbbV92aWRlb0lucHV0
IG1hcmtBc0ZpbmlzaGVkXTsKLSAgICAgICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRlb1Nl
bWFwaG9yZS5zaWduYWwoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfV07Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgYXV0byBidWZmZXJXaXRoQ3VycmVudFRpbWUgPSBjb3B5U2FtcGxl
QnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2FtcGxlQnVmZmVyKTsKLSAgICBpZiAoIWJ1ZmZl
cldpdGhDdXJyZW50VGltZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3ZpZGVvTG9jayk7Ci0gICAgbV92aWRlb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1v
dmUoYnVmZmVyV2l0aEN1cnJlbnRUaW1lKSk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3Qg
c2V0IHRoZSB0aW1lc3RhbXBzIGlmIHRoZXkgYXJlIGFscmVhZHkgc2V0LgorICAgIGlmIChhdXRv
IGJ1ZmZlcldpdGhDdXJyZW50VGltZSA9IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVT
dGFtcChzYW1wbGVCdWZmZXIpKQorICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+YWRkU2FtcGxl
QnVmZmVyKGJ1ZmZlcldpdGhDdXJyZW50VGltZS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
UmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3Jp
cHRpb24oY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCkBAIC0yODAs
NjggKzM3NSwzOSBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9u
UmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbgogICAgIGF1dG8gYmFzaWNEZXNj
cmlwdGlvbiA9IFdURjo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRl
c2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CiAgICAgQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZiBmb3JtYXQgPSBudWxscHRyOwogICAgIGF1dG8gZXJyb3IgPSBDTUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzaWNEZXNj
cmlwdGlvbiwgMCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdCk7Ci0gICAgaWYgKGVycm9y
KQorICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNy
ZWF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQogICAgIHJldHVybiBhZG9wdENGKGZvcm1hdCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmV0
YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNr
ZXREZXNjcmlwdGlvbnMoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXQsIHNpemVfdCBzYW1w
bGVDb3VudCkKLXsKLSAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9j
a0dldEhvc3RUaW1lQ2xvY2soKSk7Ci0gICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVy
ID0gbnVsbHB0cjsKLSAgICBhdXRvIGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdp
dGhQYWNrZXREZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZmFsc2UsIE5V
TEwsIE5VTEwsIGZvcm1hdCwgc2FtcGxlQ291bnQsIHN0YXJ0VGltZSwgTlVMTCwgJnNhbXBsZUJ1
ZmZlcik7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gYWRvcHRDRihzYW1wbGVCdWZmZXIpOwotfQotCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjphcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYg
ZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdU
Rjo6TWVkaWFUaW1lJiwgc2l6ZV90IHNhbXBsZUNvdW50KQorc3RhdGljIGlubGluZSBSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRm
b3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmIHRpbWUsIHNpemVfdCBzYW1wbGVDb3VudCkKIHsK
LSAgICBBU1NFUlQobV9hdWRpb0lucHV0KTsKLSAgICBpZiAoKCFtX2hhc1N0YXJ0ZWRXcml0aW5n
ICYmIG1fdmlkZW9JbnB1dCkgfHwgbV9pc1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKICAgICBh
dXRvIGZvcm1hdCA9IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOwog
ICAgIGlmICghZm9ybWF0KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1faXNGaXJzdEF1ZGlv
U2FtcGxlKSB7Ci0gICAgICAgIGlmICghbV92aWRlb0lucHV0KSB7Ci0gICAgICAgICAgICAvLyBh
dWRpby1vbmx5IHJlY29yZGluZy4KLSAgICAgICAgICAgIGlmICghW21fd3JpdGVyIHN0YXJ0V3Jp
dGluZ10pIHsKLSAgICAgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgW21fd3JpdGVyIHN0YXJ0
U2Vzc2lvbkF0U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9j
aygpKV07Ci0gICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAgICAgICAg
fQotICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IGZhbHNlOwotICAgICAgICBSZWZQdHI8
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwotICAgICAg
ICBbbV9hdWRpb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fYXVkaW9Q
dWxsUXVldWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyldIHsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAoIVttX2F1
ZGlvSW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2Nr
KTsKLSAgICAgICAgICAgICAgICBpZiAobV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1f
YXVkaW9CdWZmZXJQb29sLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGxvY2tlci51bmxv
Y2tFYXJseSgpOwotICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgYXBwZW5kU2FtcGxlQnVm
ZmVyOmJ1ZmZlci5nZXQoKV07Ci0gICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsKLSAgICAgICAg
ICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IG1hcmtBc0ZpbmlzaGVkXTsKLSAgICAgICAgICAg
ICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfV07CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ01TYW1wbGVC
dWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGVycm9yID0gQ01BdWRp
b1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgTlVMTCwgZmFsc2UsIE5VTEwsIE5VTEwsIGZvcm1hdC5nZXQoKSwgc2FtcGxlQ291bnQs
IHRvQ01UaW1lKHRpbWUpLCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoZXJyb3IpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlciBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
KyAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKIAotICAgIGF1dG8gc2Ft
cGxlQnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25z
KGZvcm1hdC5nZXQoKSwgc2FtcGxlQ291bnQpOwotICAgIGlmICghc2FtcGxlQnVmZmVyKQotICAg
ICAgICByZXR1cm47Ci0gICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZl
ckZyb21BdWRpb0J1ZmZlckxpc3Qoc2FtcGxlQnVmZmVyLmdldCgpLCBrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxpc3Q+
KGRhdGEpLmxpc3QoKSk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm47CisgICAgZXJy
b3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0KGJ1ZmZl
ci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZG93
bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkpOworICAgIGlmIChlcnJvcikg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyIENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxp
c3QgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKyAgICByZXR1cm4gYnVmZmVyOworfQogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2F1ZGlvTG9jayk7Ci0gICAgbV9hdWRpb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUoc2FtcGxl
QnVmZmVyKSk7Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRBdWRpb1Nh
bXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0aW1lLCBz
aXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgaWYgKGF1dG8gc2FtcGxlQnVmZmVyID0gY3JlYXRl
QXVkaW9TYW1wbGVCdWZmZXIoZGF0YSwgZGVzY3JpcHRpb24sIHRpbWUsIHNhbXBsZUNvdW50KSkK
KyAgICAgICAgbV9hdWRpb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihzYW1wbGVCdWZmZXIu
Z2V0KCkpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3Jk
aW5nKCkKQEAgLTM1MCwzNSArNDE2LDQwIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OnN0b3BSZWNvcmRpbmcoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzU3RvcHBlZCA9
IHRydWU7CisKKyAgICBpZiAobV92aWRlb0NvbXByZXNzb3IpCisgICAgICAgIG1fdmlkZW9Db21w
cmVzc29yLT5maW5pc2goKTsKKyAgICBpZiAobV9hdWRpb0NvbXByZXNzb3IpCisgICAgICAgIG1f
YXVkaW9Db21wcmVzc29yLT5maW5pc2goKTsKKwogICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGlu
ZykKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChbbV93cml0ZXIgc3RhdHVzXSA9PSBBVkFz
c2V0V3JpdGVyU3RhdHVzV3JpdGluZyk7Ci0gICAgaWYgKG1fdmlkZW9JbnB1dCkKLSAgICAgICAg
bV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmUud2FpdCgpOwotCi0gICAgaWYgKG1fYXVkaW9J
bnB1dCkKLSAgICAgICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUud2FpdCgpOwogCiAg
ICAgbV9pc1N0b3BwaW5nID0gdHJ1ZTsKLSAgICBbbV93cml0ZXIgZmluaXNoV3JpdGluZ1dpdGhD
b21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1B0ciA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1B0ciA9IFdURk1v
dmUod2Vha1B0ciksIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKG1fcGF0aCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtQdHIpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsK
LSAgICAgICAgICAgIGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICAg
ICAgICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7
CisgICAgZmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSBmYWxzZTsKLSAgICAg
ICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIG1faXNGaXJz
dEF1ZGlvU2FtcGxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgIH0pOwot
ICAgICAgICBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgfV07Ci0gICAg
bV9maW5pc2hXcml0aW5nU2VtYXBob3JlLndhaXQoKTsKKyAgICAgICAgW21fd3JpdGVyIGZsdXNo
XTsKKyAgICAgICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6
W3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMp
XSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIG1faXNTdG9wcGluZyA9IGZhbHNl
OworICAgICAgICAgICAgICAgIGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV1RGTW92ZShtX2RhdGEpOworICAgICAg
ICAgICAgICAgICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9XTsKKyAgICB9
KTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC0zOTIsNiArNDYzLDI0IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKIH0KIAordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkKK3sKKyAgICBpZiAoIW1fZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBzaXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2RhdGEt
PmFwcGVuZChkYXRhLCBzaXplKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6YXBwZW5kRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIW1f
ZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9kYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
VVNFKEFWRk9VTkRBVElPTikKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZF
KEFWQVNTRVRXUklURVJERUxFR0FURSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNDI4OTM1MjM2MGNiMTc4MDBkZDA2ZTZiNWIx
NTM4Nzk2MmM3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBAIC0wLDAg
KzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSA8Q29yZU1lZGlhL0NvcmVN
ZWRpYS5oPgorI2luY2x1ZGUgPFZpZGVvVG9vbGJveC9WVEVycm9ycy5oPgorCit0eXBlZGVmIHN0
cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIHN0
cnVjdCBPcGFxdWVWVENvbXByZXNzaW9uU2Vzc2lvbiAqVlRDb21wcmVzc2lvblNlc3Npb25SZWY7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKENNVmlk
ZW9Db2RlY1R5cGUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNr
T2JqZWN0KTsKKyAgICB+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAgICB2b2lk
IGZpbmlzaCgpOworICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsK
KyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBSZXRh
aW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKworcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0Nv
ZGVjVHlwZSk7CisKKyAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxs
YmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworCisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVm
ZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRDb21wcmVzc2lvblNlc3Npb24o
Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmKTsKKworICAgIHN0YXRpYyB2b2lkIHZpZGVvQ29t
cHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cywgVlRFbmNvZGVJ
bmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmKTsKKworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9z
ZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291
dHB1dEJ1ZmZlclF1ZXVlOworICAgIFJldGFpblB0cjxWVENvbXByZXNzaW9uU2Vzc2lvblJlZj4g
bV92dFNlc3Npb247CisKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07CisKKyAgICBD
TVZpZGVvQ29kZWNUeXBlIG1fb3V0cHV0Q29kZWNUeXBlOworICAgIGZsb2F0IG1fbWF4S2V5RnJh
bWVJbnRlcnZhbER1cmF0aW9uIHsgMi4wIH07CisgICAgdW5zaWduZWQgbV9leHBlY3RlZEZyYW1l
UmF0ZSB7IDMwIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDhmZTQzMjk1ZWY1MmE2Nzkw
ZmYxZGVjYWNhNmYzMGQ5YmJiYWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0KQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNp
bXBvcnQgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgorI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25TZXNzaW9uLmg+Cisj
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworI2ltcG9ydCA8cGFsL2NmL1ZpZGVvVG9vbGJv
eFNvZnRMaW5rLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBQQUw7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RkOjp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2Rl
Y1R5cGUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxi
YWNrT2JqZWN0KQoreworICAgIGF1dG8gY29tcHJlc3NvciA9IHN0ZDo6dW5pcXVlX3B0cjxWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+KG5ldyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Io
b3V0cHV0Q29kZWNUeXBlKSk7CisgICAgaWYgKCFjb21wcmVzc29yLT5pbml0aWFsaXplKGNhbGxi
YWNrLCBjYWxsYmFja09iamVjdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biBjb21wcmVzc29yOworfQorCitWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlwZSkKKyAg
ICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFw
cGxlLlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkg
fQorICAgICwgbV9vdXRwdXRDb2RlY1R5cGUgeyBvdXRwdXRDb2RlY1R5cGUgfQoreworfQorCitW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Io
KQoreworICAgIGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAgICAgIGRpc3BhdGNoX3Jl
bGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKTsKK30KKworYm9vbCBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxs
YmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgQ01CdWZmZXJRdWV1ZVJlZiBvdXRw
dXRCdWZmZXJRdWV1ZTsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29y
dGVkU2FtcGxlQnVmZmVycygpLCAmb3V0cHV0QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHVu
YWJsZSB0byBjcmVhdGUgYnVmZmVyIHF1ZXVlICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIG1fb3V0cHV0QnVmZmVyUXVldWUgPSBvdXRwdXRCdWZmZXJRdWV1
ZTsKKyAgICBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5n
ZXQoKSwgY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hl
bkRhdGFCZWNvbWVzUmVhZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKKworICAgIG1faXNFbmNvZGlu
ZyA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjpmaW5pc2goKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRj
aFF1ZXVlLCBeeworICAgICAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25Db21w
bGV0ZUZyYW1lcyhtX3Z0U2Vzc2lvbi5nZXQoKSwga0NNVGltZUludmFsaWQpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZE
YXRhKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01C
dWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICAg
ICAgbV9pc0VuY29kaW5nID0gZmFsc2U7CisgICAgfSk7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2
b2lkKiwgT1NTdGF0dXMgc3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJS
ZWYgYnVmZmVyKQoreworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKHN0YXR1cywgTWVkaWFTdHJl
YW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNr
IHN0YXR1cyBpcyAlZCIsIHN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyAhPSBub0VycikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yICpjb21wcmVzc29y
ID0gc3RhdGljX2Nhc3Q8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4ocmVmQ29uKTsKKwor
ICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZShjb21wcmVzc29yLT5tX291dHB1
dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVy
cm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1
ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKK30KKworYm9vbCBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERl
c2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQoreworICAgIENNVmlkZW9EaW1lbnNpb25z
IGRpbWVuc2lvbnMgPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25zKGZvcm1h
dERlc2NyaXB0aW9uKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgTlNEaWN0aW9uYXJ5ICplbmNv
ZGVyU3BlY2lmaWNhdGlvbnMgPSBuaWw7CisjZWxzZQorICAgIE5TRGljdGlvbmFyeSAqZW5jb2Rl
clNwZWNpZmljYXRpb25zID0gQHsoX19icmlkZ2UgTlNTdHJpbmcgKilrVlRWaWRlb0VuY29kZXJT
cGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXI6QFlFU307
CisjZW5kaWYKKworICAgIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHZ0U2Vzc2lvbjsKKyAgICBh
dXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgZGltZW5zaW9ucy53aWR0aCwgZGltZW5zaW9ucy5oZWlnaHQsIG1fb3V0cHV0Q29kZWNUeXBl
LCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWVuY29kZXJTcGVjaWZpY2F0aW9ucywgTlVMTCwg
TlVMTCwgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrLCB0aGlzLCAmdnRTZXNzaW9uKTsKKyAgICBp
ZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisgICAgbV92dFNl
c3Npb24gPSBhZG9wdENGKHZ0U2Vzc2lvbik7CisKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNldFBy
b3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxU
aW1lLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1l
ZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3Bl
cnR5IGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQo
KSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24s
IChfX2JyaWRnZSBDRlR5cGVSZWYpQChtX21heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbikpOwor
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3Bl
cnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBr
VlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCAoX19icmlkZ2UgQ0ZU
eXBlUmVmKUAobV9leHBlY3RlZEZyYW1lUmF0ZSkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
KGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Np
b25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRl
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgLy8gRklYTUU6IFNldCB2aWRlbyBjb21w
cmVzc2lvbiByYXRlLgorICAgIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9F
bmNvZGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
KGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXBy
ZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKworICAgIHJldHVybiBZRVM7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAg
ICBpZiAoIW1fdnRTZXNzaW9uKSB7CisgICAgICAgIGlmICghaW5pdENvbXByZXNzaW9uU2Vzc2lv
bihDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKGJ1ZmZlcikpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBDTVNhbXBsZUJ1ZmZl
ckdldEltYWdlQnVmZmVyKGJ1ZmZlcik7CisgICAgYXV0byBwcmVzZW50YXRpb25UaW1lU3RhbXAg
PSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIpOworICAgIGF1
dG8gZHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7CisgICAgYXV0
byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUobV92dFNlc3Npb24uZ2V0
KCksIGltYWdlQnVmZmVyLCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGR1cmF0aW9uLCBOVUxMLCB0
aGlzLCBOVUxMKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0s
ICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVG
cmFtZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKK30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7
CisgICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGlm
ICghbV9pc0VuY29kaW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHByb2Nlc3NT
YW1wbGVCdWZmZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVCdWZmZXJSZWYgVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAg
IHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVl
dWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisKK1JldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0
U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1fb3V0cHV0
QnVmZmVyUXVldWUuZ2V0KCkpKSkpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBh
NmNlZTU0Yzk3YzkyMTVhNjg3M2Y0ZGNiMTJiZGU0N2MxZGM0MGVjLi5mMzEwZjQ4ZWQ3ZWRlNThm
ZTJlNWI3ODQ2NGY2MmM5MGUyZDAxMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xNDksNiArMTQ5LDcg
QEAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6dXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIKICAgICByZXR1cm4gKm1fdXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTsKIH0KIAorI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlh
UmVjb3JkZXJNYW5hZ2VyKCkKIHsKICAgICBpZiAoIW1fcmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXIpCkBAIC0xNTYsNiArMTU3LDcgQEAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXImIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhUmVjb3JkZXJNYW5hZ2VyKCkKIAogICAgIHJldHVy
biAqbV9yZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKIH0KKyNlbmRpZgogCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2Vy
JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyKCkK
QEAgLTE3NCw3ICsxNzYsNyBAQCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzYW1wbGVCdWZmZXJEaQogICAgIHJldHVybiAq
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogfQogI2VuZGlmCi0jZW5kaWYKKyNl
bmRpZiAvLyAgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKIExpYldlYlJUQ0NvZGVjc1Byb3h5JiBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3NQcm94eSgpCkBAIC0yMDMs
NiArMjA1LDcgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIEkKICAgICAgICAgdXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisjaWYgSEFWRShBVkFTU0VU
V1JJVEVSREVMRUdBVEUpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CiAgICAgICAgIG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjExLDYgKzIxNCw3IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJCiAgICAgICAgIG1lZGlhUmVj
b3JkZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZVJlbW90ZU1lZGlhUmVjb3JkZXJNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmIC8vIEhBVkUo
QVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3Nh
Z2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgewogICAgICAgICBhdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyKCkuZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKQEAgLTIy
OCw4ICsyMzIsOCBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSQogICAgICAgICBzYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZUxheWVyTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZgotI2VuZGlmCisjZW5k
aWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURFT19UUkFDSykKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRD
KQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TGli
V2ViUlRDQ29kZWNzUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBsaWJX
ZWJSVENDb2RlY3NQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyYjliZDFmODg3YmFkYWZhNGVhNWM0YmEzNDE2
OWQ4Yjk3OGZkNjJkLi43ODY2M2JjZGJhMDczMmVmZjViMTFiOTRjNWRjYTIzODgyZWU5YjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKQEAgLTc5LDcgKzc5LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHkmIHVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoKTsKKyNpZiBIQVZFKEFWQVNT
RVRXUklURVJERUxFR0FURSkKICAgICBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciYgbWVkaWFS
ZWNvcmRlck1hbmFnZXIoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXImIGF1ZGlvVHJhY2tSZW5k
ZXJlck1hbmFnZXIoKTsKICAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
JiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CkBAIC0xMDIsNyArMTA0LDkgQEAg
cHJpdmF0ZToKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4gbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owor
I2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlcj4gbV9yZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKKyNl
bmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyPiBtX2F1ZGlvVHJhY2tSZW5kZXJl
ck1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
Y3BwCmluZGV4IGNiMjRkZGJmMjc5ZmIyNjU5NDZhYTEyMWNiMDcyMmI2MmI4YzZhZjcuLjU2OGMy
ODAxNzE4ZmU5MGI4YmUwODJmZWEzNWVlNzUwZDYzZGRiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAt
MjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UmVjb3JkZXIuaCIKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCiAKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CkBAIC0xMzYsNCArMTM2LDQgQEAgdm9pZCBSZW1v
dGVNZWRpYVJlY29yZGVyOjpzdG9wUmVjb3JkaW5nKCkKIAogfQogCi0jZW5kaWYKKyNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKaW5kZXggZmY1
YTgyOTg0ZmIzOTY0MWVkMWU1NjE1NDg5OGY5NTI2YzliZDUyYS4uYTgzZGEzMDU1MmViNDFlZjk1
OTQ0ZGIzYWE1MDRmZmNhM2Y2ODM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRF
UkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKQEAgLTgyLDQgKzgyLDQgQEAgcHJpdmF0ZToKIAogfQog
Ci0jZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgppbmRleCA1NGJhNjRkNTZmYmVhMzBmY2JiMzk2
ZGFkNWVhM2ZjMzBjOTk1ZGVlLi5jZTMyYjcwNGU3ZWM4YzQ3N2JlMDUxZTIwZDdkMjdhZjBjNGY4
MjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKICMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogbWVzc2Fn
ZXMgLT4gUmVtb3RlTWVkaWFSZWNvcmRlciBOb3RSZWZDb3VudGVkIHsKICAgICBBdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIHN0b3JhZ2VIYW5k
bGUsIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0
X3QgbnVtYmVyT2ZGcmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCmluZGV4IDM3MGNk
OWIzODc1NjlhOThlODRlMTc4MDlmMDg1ZDYyYjNiNmU5ZDYuLjAxOWU0Yjg1ZjBlZWJiNjI0ZTU2
OTU4OGE3YWFlNDg0MjEyNTg2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXIuaCIKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VU
V1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
RGVjb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCmluZGV4IDU0NzFiYmQ0ODRkZDliM2Qw
YzhlZTNkZDYxMWMwNWU5MGQwMzZjN2MuLmFiODAxYmMxMTRjNDkyM2VhOWQ3OTBmOTIzYzUyZGY0
OWFhMTFlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRF
UkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1l
c3NhZ2VzLmluCmluZGV4IDM4N2E0MTM2MWNkYmQ5YjdlYWUyYzMzNzM2NTJhOThmNDkzNGUxNzQu
LmM1MTg0MTBjYjQ5ZmFkYTY4OGQzNzdkMWQ3YTA2Y2RlM2JhYzc5N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCiAjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKIG1lc3NhZ2VzIC0+
IFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewogICAgIENyZWF0ZVJl
Y29yZGVyKFdlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWQsIGJvb2wgaGFzQXVkaW8s
IGludCB3aWR0aCwgaW50IGhlaWdodCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGE+IGNyZWF0aW9uRXJyb3IpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlci5oCmluZGV4IDlmOWIzMGM3NjE2MjNkZDk0OGQyOWJlMGYzN2YwYWQwZjQ3ZTVh
OWEuLmUzOGM1ZDZjMDVkMGRmYWY0MjY4MTk5NWI5ZTA0ZjRlNzY0N2YwYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmNwcAppbmRleCBkZDQwOTE5ODhjMTI2ODk3NWJiOTc5MmU4MzM3YzZlMDY1Mzdm
M2M4Li42N2UzZWU2NTEzZDhmYTQzZTgxZThiMjJjNjU4ZGY4OTY0MDc2ODQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNv
cmRlclByaXZhdGUuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGUuaCIKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgUExBVEZP
Uk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyTWVzc2FnZXMu
aCIKQEAgLTE0Niw0ICsxNDYsNCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzdG9wUmVj
b3JkaW5nKCkKIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNlbmRpZiAvLyBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZF
KEFWQVNTRVRXUklURVJERUxFR0FURSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDZkOWZhYmUz
ZWE3MjQ3M2Y0NTk5MGNlOGFkMTcyZDBjZDAzYTgxMjYuLmQ4MGZjZDdmMTk4ODk3NTI1YzllZmZj
OTE3NTdkMjJmYzMyM2VmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtMjUsNyArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VU
V1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJNZWRpYVJlY29yZGVySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCkBAIC03Myw1ICs3Myw1IEBAIHBy
aXZhdGU6CiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0Ep
ICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShB
VkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCmluZGV4IGJj
ZTc3NGE4ODFkY2VjNzk0MjYzNzk2ODU1MmUzY2NjN2JiMzc0MGIuLmQ5NTljOTI1ZmRkM2EyMjFh
MzdiMWEzNzA3YzZkZjFhZDAyYTBlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAt
MzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1l
ZGlhUmVjb3JkZXJQcml2YXRlKGNvbnN0IE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQogewot
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUo
QVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIGlmIChtX3VzZUdQVVByb2Nlc3MpCiAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlPihzdHJlYW0pOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggODQ3MGM5OWYwNTZmOGJlZTdjYWE3ZDUxYWQ5NTBmZmFjNzkxMGI5OS4uYjFhMzI4
OWI4ZDVhMzlhMmYwNzU3MzY5MmY4ODNiMjUwNDgwZDBhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDIwLTAyLTA1ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAg
ICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVj
b3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjU4MgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBEaXNh
YmxlIHRlc3RzIG9uIGFsbCBwbGF0Zm9ybXMgZXhjZXB0IHRoZSBvbmVzIHN1cHBvcnRpbmcgQVZB
c3NldFdyaXRlckRlbGVnYXRlLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgKiBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8t
ZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWw6CisgICAgICAgIFJlbW92ZSB3ZWIgYXVkaW8g
Z2VuZXJhdGlvbiBzaW5jZSB0aGVyZSBzZWVtcyB0byBiZSBzb21lIHVuc3RhYmlsaXR5IGluIHdl
YiBhdWRpbyAtPiBzdHJlYW0gLT4gbWVkaWEgcmVjb3JkZXIuCisgICAgICAgIHdoaWNoIHNob3Vs
ZCBiZSBmaXhlZCBhcyBmb2xsb3ctdXAgc3BlY2lmaWMgcGF0Y2hlcy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wMi0wNSAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gQ2FuY2VsaW5n
IGFuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbiBiZWZvcmUgaXQgd2FzIGNvbW1pdHRlZCBkb2VzIG5v
dCBwcmV2ZW50IGl0IGZyb20gcGxheWluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYzg2ODIzOGYy
MjhmMmVhNDIyOTg0NWMwYTc3MzlmMTNhMDNmNmYyMi4uOTk4ODk0ZjUzOTJiMWEyZjA0ZjhjZDk3
YjAyNTg4ZDExMzFhYTFlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMzI5LDcgKzMzMjksMTAg
QEAgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvY29weS10ZXgtaW1hZ2UtMmQtZm9y
bWF0cy5odG1sIFsgU2tpcCBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9jYW52YXMvcmFwaWQt
cmVzaXppbmcuaHRtbCBbIFNraXAgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy93ZWJnbC1kcmF3LWJ1ZmZlcnMuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMTk3Njcz
IGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRh
YXZhaWxhYmxlLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCisjIE5vdCBzdXBwb3J0ZWQg
YnkgZGVmYXVsdAoraHR0cC93cHQvbWVkaWFyZWNvcmRlciBbIFNraXAgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVjb3JkIFsgU2tpcCBdCitmYXN0L2hp
c3RvcnkvcGFnZS1jYWNoZS1tZWRpYS1yZWNvcmRlci5odG1sIFsgU2tpcCBdCiAKICMgVG8gYWlk
IHRyYW5zaXRpb24gdG8gQU5HTEUgYmFja2VuZCBmb3IgV2ViR0wsIHNraXAgYWxsIG9mIFdlYkdM
IDIgdGVzdHMgZm9yIG5vdy4gCiAjIFJlLWVuYWJsZSBhcyBlYWNoIGNodW5rIG9mIHRlc3RzIGFy
ZSB2ZXJpZmllZCB3aXRoIEFOR0xFIGJhY2tlbmQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2
YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNz
Lmh0bWwKaW5kZXggMzMzMDZkZTc5NDdiYmI5MjU3Mzk0YzNiYTE5NjIwMWIwNTg0Nzg4Yi4uODgw
MTQ4NjU3ZTI1ZGRlMzNjYjEwOTM0NmQ2Y2JlYWFiN2Y5Y2VmYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVv
LWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxl
LWdwdXByb2Nlc3MuaHRtbApAQCAtNTYsMTcgKzU2LDcgQEAKICAgICB9CiAKICAgICBhc3luY190
ZXN0KHQgPT4gewotICAgICAgICBjb25zdCBhYyA9IG5ldyBBdWRpb0NvbnRleHQoKTsKLSAgICAg
ICAgY29uc3Qgb3NjID0gYWMuY3JlYXRlT3NjaWxsYXRvcigpOwotICAgICAgICBjb25zdCBkZXN0
ID0gYWMuY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOwotICAgICAgICBjb25zdCBhdWRp
byA9IGRlc3Quc3RyZWFtOwotICAgICAgICBvc2MuY29ubmVjdChkZXN0KTsKLQogICAgICAgICBj
b25zdCB2aWRlbyA9IGNyZWF0ZVZpZGVvU3RyZWFtKCk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMo
dmlkZW8uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgsIDAsICJ2aWRlbyBtZWRpYXN0cmVhbSBzdGFy
dHMgd2l0aCBubyBhdWRpbyB0cmFjayIpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGF1ZGlvLmdl
dEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAxLCAiYXVkaW8gbWVkaWFzdHJlYW0gc3RhcnRzIHdpdGgg
b25lIGF1ZGlvIHRyYWNrIik7Ci0gICAgICAgIHZpZGVvLmFkZFRyYWNrKGF1ZGlvLmdldEF1ZGlv
VHJhY2tzKClbMF0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHZpZGVvLmdldEF1ZGlvVHJhY2tz
KCkubGVuZ3RoLCAxLCAidmlkZW8gbWVkaWFzdHJlYW0gc3RhcnRzIHdpdGggb25lIGF1ZGlvIHRy
YWNrIik7CiAgICAgICAgIGNvbnN0IHJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIodmlkZW8p
OwogICAgICAgICBsZXQgbW9kZSA9IDA7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggNjRmZjI3MDFiYWU2MmU0Yjk0NTBlMzg5YjUwZWE0ZjkzZTkzYmFh
MC4uYTgxZWYxMDAyMmNjODRiMzY0ZWQ5ZTFjYTdlYTFjMTJiNjcwMWIzNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE4MjgsNiArMTgyOCwxMCBAQCB3
ZWJraXQub3JnL2IvMTk1NjM1IHNjcm9sbGluZ2Nvb3JkaW5hdG9yL21hYy9tdWx0aXBsZS1maXhl
ZC5odG1sIFsgUGFzcyBUaW1lb3V0CiBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9kZXNpZ24tc3lz
dGVtLXVpLTE1Lmh0bWwgWyBQYXNzIF0KIFsgQ2F0YWxpbmErIF0gZmFzdC90ZXh0L2Rlc2lnbi1z
eXN0ZW0tdWktMTYuaHRtbCBbIFBhc3MgXQogCitbIENhdGFsaW5hKyBdIGh0dHAvd3B0L21lZGlh
cmVjb3JkZXIgWyBQYXNzIF0gCitbIENhdGFsaW5hKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFBhc3MgXQorWyBDYXRhbGluYSsgXSBmYXN0
L2hpc3RvcnkvcGFnZS1jYWNoZS1tZWRpYS1yZWNvcmRlci5odG1sIFsgUGFzcyBdCisKIHdlYmtp
dC5vcmcvYi8yMDAxMjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS12aWRlby1lbGVtZW50L3ZpZGVvX3RpbWV1cGRhdGVf
b25fc2Vlay5odG1sIFsgVGltZW91dCBQYXNzIF0KIAogIyByZGFyOi8vNTU0MDU4NTEgKFsgbWFj
T1MgXSBMYXlvdXQgdGVzdHMgd2ViZ3B1LyotdHJpYW5nbGUtc3RyaXAuaHRtbCBhcmUgZmxha3kg
ZmFpbHVyZXMuICgyMDE4MjcpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389938</attachid>
            <date>2020-02-05 23:21:23 -0800</date>
            <delta_ts>2020-02-06 23:14:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206582-20200206082120.patch</filename>
            <type>text/plain</type>
            <size>145468</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQwNjEyNGE4YmYzMDk1MDMyODEyMzY2
OTcxMWE3MTJjYjlkY2ZkY2EuLjVjZjY3YjQyNmNmYzExZTZhNjI1MjM2ZDUwYzgyMTk1OTMzYTBh
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDItMDUgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTAyLTA0ICBB
ZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9u
LXVuaWZpZWQgYnVpbGQgZml4ZXMgZWFybHkgRmVicnVhcnkgMjAyMCBlZGl0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYzdkYWY3N2YzMmQzMzE4MjMxNzE3ZjkwZWZiYjI3YTAxYWFkMTcyYy4uMDQ2ZmExYzNi
MTdiNjE0NzU5Y2QyMzRhMzQ3YzI5NjQ3ZWVhOTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1
IEBACisyMDIwLTAyLTA1ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlh
UmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjU4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg5ODUzNjg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBh
bGxvd3MgdG8gZ3JhYiByZWNvcmRlZCBkYXRhIHdoZW5ldmVyIHdhbnRlZC4KKyAgICAgICAgVGhp
cyBkZWxlZ2F0ZSByZXF1aXJlcyBwYXNzaW5nIGNvbXByZXNzZWQgc2FtcGxlcyB0byBBVkFzc2V0
V3JpdGVyLgorICAgICAgICBJbXBsZW1lbnQgdmlkZW8gZW5jb2RpbmcgYW5kIGF1ZGlvIGVuY29k
aW5nIGluIGRlZGljYXRlZCBjbGFzc2VzIGFuZCB1c2UgdGhlc2UgY2xhc3NlcyBiZWZvcmUgYWRk
aW5nIGJ1ZmZlcnMgdG8gQVZBc3NldFdyaXRlci4KKyAgICAgICAgVGhlc2UgY2xhc3NlcyBhcmUg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGFuZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IuCisgICAgICAgIFRoZXkgc3VwcG9ydCBBQUMgYW5kIEgyNjQgc28gZmFyIGFuZCBzaG91bGQg
YmUgZnVydGhlciBpbXByb3ZlZCB0byBzdXBwb3J0IG1vcmUgZW5jb2Rpbmcgb3B0aW9ucy4KKwor
ICAgICAgICBJbnN0YW50aWF0ZSByZWFsIHdyaXRlciBvbmx5IGZvciBwbGF0Zm9ybXMgc3VwcG9y
dGluZyBBVkFzc2V0V3JpdGVyRGVsZWdhdGUsIHNpbmNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgZXZl
cnl3aGVyZS4KKyAgICAgICAgVGhlIHdyaXRlciwgZG9pbmcgdGhlIHBhY2FrZ2luZywgaXMgcmVj
ZWl2aW5nIGNvbXByZXNzZWQgYnVmZmVyIGZyb20gdGhlIGF1ZGlvL3ZpZGVvIGNvbXByZXNzb3Jz
LgorICAgICAgICBJdCB0aGVuIHNlbmRzIGRhdGEgd2hlbiBiZWluZyByZXF1ZXN0IHRvIGZsdXNo
IHRvIGl0cyBkZWxlZ2F0ZSwgd2hpY2ggd2lsbCBzZW5kIGRhdGEgdG8gdGhlIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyLgorICAgICAgICBUaGUgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIg
c3RvcmVzIHRoZSBkYXRhIGluIGEgU2hhcmVkQnVmZmVyIHVudGlsIE1lZGlhUmVjb3JkZXIgYXNr
cyBmb3IgZGF0YS4KKworICAgICAgICBOb3RlIHRoYXQsIHdoZW5ldmVyIHdlIHJlcXVlc3QgZGF0
YSwgd2UgZmx1c2ggdGhlIHdyaXRlciBhbmQgaW5zZXJ0IGFuIGVuZCBvZiB2aWRlbyBzYW1wbGUg
dG8gbWFrZSBzdXJlIHZpZGVvIGRhdGEgZ2V0cyBmbHVzaGVkLgorICAgICAgICBUaGVyZWZvcmUg
ZGF0YSBzaG91bGQgbm90IGJlIHJlcXVlc3RlZCB0b28gZmFzdCB0byBnZXQgYWRlcXVhdGUgdmlk
ZW8gY29tcHJlc3Npb24uCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJl
Y29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9D
b252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3Jt
YXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphdHRh
Y2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0aE51bVBh
Y2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjph
dWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNr
ZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJv
Y2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRw
dXRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBpbml0V2l0
aFdyaXRlcjpdKToKKyAgICAgICAgKC1bV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFzc2V0V3Jp
dGVyOmRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YTpdKToKKyAgICAgICAgKC1bV2ViQVZB
c3NldFdyaXRlckRlbGVnYXRlIGFzc2V0V3JpdGVyOmRpZFByb2R1Y2VGcmFnbWVudGVkTWVkaWFE
YXRhOmZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQ6XSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRX
cml0ZXJEZWxlZ2F0ZSBjbG9zZV0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRBdWRpb091
dHB1dEJ1ZmZlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9j
ZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBs
ZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnN0YXJ0QXNzZXRXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVv
U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0
aW9uSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlT
YW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmguCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnZpZGVvQ29tcHJlc3Npb25D
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmluaXRDb21wcmVzc2lvblNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFr
ZU91dHB1dFNhbXBsZUJ1ZmZlcik6CisKIDIwMjAtMDItMDUgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIENhbmNlbGluZyBhbiBh
Y2NlbGVyYXRlZCBhbmltYXRpb24gYmVmb3JlIGl0IHdhcyBjb21taXR0ZWQgZG9lcyBub3QgcHJl
dmVudCBpdCBmcm9tIHBsYXlpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGVhMjhkOWI0ZWI1YTRj
ZDVkYzE3ZWQ4YWE2YzY5N2Y0ODk0ZjQwMzIuLmNjZTIzZmVhN2JmZTIxYWJmNTA2OTY2ZDEzMTk1
ZGU3N2UzZTk5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAy
LTA1ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2Fd
IFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTg5ODUzNjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgorCisgICAgICAgIEFkZCBzb2Z0IGxpbmsgbWFjcm9zIGZvciBWaWRlb1Rvb2xi
b3ggYW5kIEF1ZGlvVG9vbGJveC4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5jcHA6IEFkZGVk
LgorICAgICAgICAqIHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwOgorICAgICAgICAqIHBhbC9jZi9Db3Jl
TWVkaWFTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5j
cHA6IEFkZGVkLgorICAgICAgICAqIHBhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5oOiBBZGRl
ZC4KKwogMjAyMC0wMi0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIE5TS2V5ZWRBcmNoaXZlclNQSS5oIG5vdyB0aGF0IFdlYktpdCBvbmx5IHVzZXMg
QVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGRjYWY2OThhZGUzOTQxZDI2ZjVlNmQyNjJjNGQyYzQ2OTJlZDU5MGQu
LmJkYmUyNTNkMzBmZGY2NmQ4ZTA3NTdhYjIxOTNkMDQxMTVkZjVhYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMjAtMDItMDUgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1l
bnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2NTgyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODk4NTM2OD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgRW5hYmxlIFJlbW90ZU1l
ZGlhUmVjb3JkZXIgb25seSBmb3Igc3lzdGVtcyBzdXBwb3J0aW5nIEFWQXNzZXRXcml0ZXJEZWxl
Z2F0ZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2Vp
dmVNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisKIDIw
MjAtMDItMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTiAocjI1MTMyMCk6IENhbid0IGRvdWJsZSB0YXAgdG8gc2VsZWN0IHdvcmQg
aW4gTm90ZXMgb24gaUNsb3VkLmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAxNzViNmY1ZWE4
ZWRjN2FkMWZkMmMxZjJlN2Y4OGYwZWU3YjI2ZjY4Li5hYzkzZDdiODhiZDUwZDlhOGE5ZjMzMzcz
N2I0ZmM5MWZiOTIwNGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtNTY2LDYgKzU2NiwxMCBA
QAogI2RlZmluZSBIQVZFX09TX1NJR05QT1NUIDEKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09D
T0EpICYmIChkZWZpbmVkIF9faGFzX2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8QVZGb3VuZGF0
aW9uL0FWQXNzZXRXcml0ZXJfUHJpdmF0ZS5oPikpCisjZGVmaW5lIEhBVkVfQVZBU1NFVFdSSVRF
UkRFTEVHQVRFIDEKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRG
T1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX1NZU1RFTV9G
T05UX1NUWUxFX1RJVExFXzAgMQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxFX1RJVExF
XzQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCBmY2IwOTdlZTc1OWZmNWRmYjc2
NDk4ZDUwOTBlNGNjY2MwYzlkNWE2Li5mNTRkZjcxYTRmNDNiM2U2ZjlkNDhiYzFjZDc0NDM3Njg3
MWU5YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzQsNyArMzQsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZh
dGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoY29u
c3QgTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCiB7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCiAgICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRl
KHN0cmVhbSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOworICAgIHJldHVybiBu
dWxscHRyOworI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Q
QUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzOGQ3ZmE5ZTVkMDljMmNkOWQ4YzYwOGViYTM4
ZTcwNTA0YTMwOTZhLi5jMjgxYjkyYTE3YjQ5YmQ2ZTA3MThhOTYxZjA2NDA4ODY1ZTFlYjZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMTUsNiArMTE1LDEwIEBACiAJCTJFMTM0MkNDMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtp
dFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRTEzNDJDQTIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5oICovOyB9OwogCQky
RTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNCMjE1QUExMEEwMDcxOTlE
MiAvKiBVSUtpdFNvZnRMaW5rLm1tICovOyB9OwogCQkzMTMwOEIxNDIwQTIxNzA1MDAzRkI5Mjkg
LyogU3lzdGVtUHJldmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEzMDhCMTMyMEEyMTcwNTAwM0ZCOTI5IC8qIFN5c3RlbVByZXZpZXdTUEku
aCAqLzsgfTsKKwkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRM
aW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi87IH07
CisJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTIyM0RB
RTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi87IH07CisJCTQxNkU5OTU3
MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1NTIzREFFRkY3MDBFODcx
Q0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovOyB9OworCQk0MTZFOTk1ODIzREFFRkY4
MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRl
b1Rvb2xib3hTb2Z0TGluay5oICovOyB9OwogCQk0NDI5NTZDRDIxOEE3MkRGMDA4MERCNTQgLyog
UmV2ZWFsU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2ZWFsU1BJLmggKi87IH07CiAJCTQ0NTBG
QzlGMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlEMjFGNUY2MDIwMDRERkE1
NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLzsgfTsKIAkJNDQ1MEZDQTAyMUY1RjYwMjAwNERG
QTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29m
dExpbmsuaCAqLzsgfTsKQEAgLTI5MCw2ICsyOTQsMTAgQEAKIAkJMkUxMzQyQ0IyMTVBQTEwQTAw
NzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBVSUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTMwOEIxMzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTeXN0ZW1QcmV2aWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3MTE5QTc4MjBDQ0I1RkYwMDJDNkRDOSAvKiBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViS2l0VGFyZ2V0Q29uZGl0aW9uYWxzLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyog
QXVkaW9Ub29sYm94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNCIC8q
IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5rLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Mjk1NkNDMjE4QTcyREUwMDgwREI1NCAv
KiBSZXZlYWxTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV2ZWFsU1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlEMjFGNUY2MDIwMDRERkE1
NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFF1aWNrTG9va1NvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tMb29rU29mdExpbmsuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyMSw4ICs1MjksMTIgQEAKIAkJMENGOTlDQTUxRjcz
ODQxQzAwN0VFNzkzIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExp
bmsuY3BwICovLAorCQkJCTQxNkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hT
b2Z0TGluay5oICovLAogCQkJCTBDRjk5Q0E2MUY3Mzg0MzYwMDdFRTc5MyAvKiBDb3JlTWVkaWFT
b2Z0TGluay5jcHAgKi8sCiAJCQkJMENGOTlDQTcxRjczODQzNzAwN0VFNzkzIC8qIENvcmVNZWRp
YVNvZnRMaW5rLmggKi8sCisJCQkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9v
bGJveFNvZnRMaW5rLmNwcCAqLywKKwkJCQk0MTZFOTk1NjIzREFFRkY3MDBFODcxQ0IgLyogVmlk
ZW9Ub29sYm94U29mdExpbmsuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtNzEyLDYgKzcyNCw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk1
N0ZEMzE4QjIyQjM1OTg5MDA4RDBFOEIgLyogQXBwU1NPU29mdExpbmsuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3NkNBOUQ2MjJCODU0QUIwMDMwMTQzQyAvKiBBcHBTU09TUEkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwMkU5M0MyMDU2RkFBNzAwQTEzNzk3IC8qIEF1ZGlv
VG9vbGJveFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTEwNzgyMkI0NTZGNTAwRjQxMEM4
IC8qIEF1dGhLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3N0U4N0IyMjI2QTQ2MDMwMEEy
QUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzQsNiAr
ODQ3LDcgQEAKIAkJCQkyRTEzNDJDQzIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MjIxRjQzQTRDNzAwMkVBQzAyIC8qIFVJS2l0U1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE0NzFGM0JFQjQ5MDBEQkMzMTcgLyogVVJMRm9y
bWF0dGluZ1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTk5NTgyM0RBRUZGODAwRTg3MUNC
IC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1OTFG
M0JFQjQ5MDBEQkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTA4MjZGOTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKQEAgLTkyNiw2ICs5NDAsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThBMjJCMzU5M0UwMDhEMEU4QiAvKiBBcHBT
U09Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNkU5OTUzMjNEQUU2QkUwMEU4NzFD
QiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzdFODdC
MTIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsubW0gaW4gU291cmNlcyAq
LywKIAkJCQkwQzVGRkYwRjFGNzhEOURBMDA5RUZGMUEgLyogQ2xvY2tDTS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBDRjk5Q0E4MUY3Mzg0MzcwMDdFRTc5MyAvKiBDb3JlTWVkaWFTb2Z0TGluay5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTk1Miw2ICs5NjcsNyBAQAogCQkJCUEzQUI2RTU3MUYzRDFE
REIwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkUxMzQyQ0QyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExp
bmsubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTZFOTk1NzIzREFFRkY4MDBFODcxQ0IgLyogVmlk
ZW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwODI2RkExRjU3NjI5
MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjZjU1MDU2
YWNkYTZmNTY1M2FkYzdlMTdlYzAyYTJkODI2ZTQ0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcApAQCAtMCwwICsx
LDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBVkZP
VU5EQVRJT04pCisKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KKyNp
bmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQuaD4KKworI2luY2x1ZGUgPHd0Zi9Tb2Z0
TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rv
b2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94
LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVydHlJ
RCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGluU3Bl
Y2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRh
KSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9wZXJ0
eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0
ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9u
Rm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RShQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSwgT1NTdGF0dXMs
IChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3Bl
cnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5Qcm9wZXJ0eURhdGFTaXplLCBjb25zdCB2b2lk
KiBpblByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGluUHJv
cGVydHlEYXRhU2l6ZSwgaW5Qcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHksIE9TU3Rh
dHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQ
cm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQq
IG91dFByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlvUHJv
cGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKworI2VuZGlmIC8vIFVTRShBVkZPVU5E
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJv
eFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRM
aW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDczMTE4NzE3NGFjMTU1NDQzNzFkZWUwM2IxNDMyZTNlNjU2MzJl
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29s
Ym94U29mdExpbmsuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5o
PgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gpCisK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0Nv
bnZlcnRlckdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9D
b252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiog
aW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZl
cnRlciwgaW5Qcm9wZXJ0eUlELCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkp
CisjZGVmaW5lIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94
X0F1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NTdGF0dXMsIChjb25zdCBB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0LCBjb25zdCBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQsIEF1ZGlvQ29udmVydGVy
UmVmKiBvdXRBdWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwgaW5EZXN0aW5hdGlvbkZv
cm1hdCwgb3V0QXVkaW9Db252ZXJ0ZXIpKQorI2RlZmluZSBBdWRpb0NvbnZlcnRlck5ldyBzb2Z0
TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJOZXcKK1NPRlRfTElOS19GVU5DVElPTl9G
T1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5LCBP
U1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVy
dGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblByb3BlcnR5RGF0YVNpemUsIGNv
bnN0IHZvaWQqIGluUHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJ
RCwgaW5Qcm9wZXJ0eURhdGFTaXplLCBpblByb3BlcnR5RGF0YSkpCisjZGVmaW5lIEF1ZGlvQ29u
dmVydGVyU2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29udmVydGVyU2V0
UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94
LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVydHlJ
RCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGluU3Bl
Y2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRh
KSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9wZXJ0
eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorI2RlZmluZSBBdWRpb0Zvcm1hdEdldFByb3Bl
cnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0Zvcm1hdEdldFByb3BlcnR5CisKKworI2Vu
ZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuY3BwCmluZGV4IDJiODIzMTM2NWNiOWFhZjkzNTk3ZjE4N2ZhMjJj
MTQ5YmU0MmZiM2EuLmZhMjJjZWNjMTM3M2FjN2ZiYjk1NWZkNjQxZjdiMjExNjYxMzllZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCkBA
IC00Niw2ICs0Niw3IEBAIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIENvcmVN
ZWRpYSkKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENN
QmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYgdGhl
U291cmNlQnVmZmVyLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgdm9p
ZCogZGVzdGluYXRpb24pLCAodGhlU291cmNlQnVmZmVyLCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5n
dGgsIGRlc3RpbmF0aW9uKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aCwgc2l6ZV90LCAoQ01CbG9ja0J1ZmZl
clJlZiB0aGVCdWZmZXIpLCAodGhlQnVmZmVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcywgT1NTdGF0
dXMsIChjb25zdCB2b2lkKiBzb3VyY2VCeXRlcywgQ01CbG9ja0J1ZmZlclJlZiBkZXN0aW5hdGlv
bkJ1ZmZlciwgc2l6ZV90IG9mZnNldEludG9EZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5ndGgp
LCAoc291cmNlQnl0ZXMsIGRlc3RpbmF0aW9uQnVmZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRpb24s
IGRhdGFMZW5ndGgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVk
aWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRpY3Rpb25hcnlSZWYsIChD
TUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRUeXBlSUQsIENGVHlw
ZUlELCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciwgQ01CbG9ja0J1ZmZlclJlZiwgKENN
U2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCkBAIC0xMzMsOSArMTM0LDExIEBAIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlRGVx
dWV1ZUFuZFJldGFpbiwgQ01CCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUVucXVldWUsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJl
ZiBxdWV1ZSwgQ01CdWZmZXJSZWYgYnVmZmVyKSwgKHF1ZXVlLCBidWZmZXIpKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJc0VtcHR5
LCBCb29sZWFuLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEJ1ZmZl
ckNvdW50LCBDTUl0ZW1Db3VudCwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVl
dWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMsIGNvbnN0IENNQnVmZmVyQ2Fs
bGJhY2tzICosICgpLCAoKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGlt
ZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRFbmRQcmVzZW50YXRp
b25UaW1lU3RhbXAsIENNVGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVl
dWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVy
UXVldWVSZWYgcXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxi
YWNrLCB2b2lkKiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0
cmlnZ2VyQ29uZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1
ZXVlVHJpZ2dlclRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFj
aywgdHJpZ2dlclJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJp
Z2dlclRva2VuT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1l
ZGlhLCBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVl
UmVmIHF1ZXVlKSwgKHF1ZXVlKSkKIAogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5LCBDRlN0cmlu
Z1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01T
YW1wbGVBdHRhY2htZW50S2V5X05vdFN5bmMsIENGU3RyaW5nUmVmKQpAQCAtMTQ5LDYgKzE1Miw5
IEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1w
bGVCdWZmZXJBdHRhY2htZW50S2V5X1NhbXBsCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9EaXNwbGF5SW1tZWRpYXRl
bHksIENGU3RyaW5nUmVmKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfSXNEZXBlbmRlZE9uQnlPdGhlcnMsIENGU3Ry
aW5nUmVmKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtD
TVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBDRlN0cmlu
Z1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01T
YW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0VuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uLCBDRlN0
cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBr
Q01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0dyYWR1YWxEZWNvZGVyUmVmcmVzaCwgQ0ZTdHJp
bmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgZ2V0
X0NvcmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3Rh
cnQsIENGU3RyaW5nUmVmKQogCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSwga0NNVGltZWJhc2VOb3RpZmljYXRpb25fRWZmZWN0aXZlUmF0ZUNoYW5nZWQsIENG
U3RyaW5nUmVmKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEs
IGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQsIENGU3RyaW5nUmVmKQpAQCAtMTYz
LDYgKzE2OSw5IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlh
LCBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tlCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJv
bUF1ZGlvQnVmZmVyTGlzdCwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDRkFs
bG9jYXRvclJlZiBiYnVmU3RydWN0QWxsb2NhdG9yLCBDRkFsbG9jYXRvclJlZiBiYnVmTWVtb3J5
QWxsb2NhdG9yLCB1aW50MzJfdCBmbGFncywgY29uc3QgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJM
aXN0KSwgKHNidWYsIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIGJidWZNZW1vcnlBbGxvY2F0b3IsIGZs
YWdzLCBidWZmZXJMaXN0KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlclNldERhdGFSZWFkeSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1
ZmZlclJlZiBzYnVmKSwgKHNidWYpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSwgT1NTdGF0dXMsIChD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
biogYXNiZCwgc2l6ZV90IGxheW91dFNpemUsIGNvbnN0IEF1ZGlvQ2hhbm5lbExheW91dCogbGF5
b3V0LCBzaXplX3QgbWFnaWNDb29raWVTaXplLCBjb25zdCB2b2lkKiBtYWdpY0Nvb2tpZSwgQ0ZE
aWN0aW9uYXJ5UmVmIGV4dGVuc2lvbnMsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiogb3V0
RGVzYyksIChhbGxvY2F0b3IsIGFzYmQsIGxheW91dFNpemUsIGxheW91dCwgbWFnaWNDb29raWVT
aXplLCBtYWdpY0Nvb2tpZSwgZXh0ZW5zaW9ucywgb3V0RGVzYykpCitTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0
TWFnaWNDb29raWUsIGNvbnN0IHZvaWQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRl
c2MsIHNpemVfdCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRS
aWNoZXN0RGVjb2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICosIChDTUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKKwogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrLCBD
TUNsb2NrUmVmLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRUaW1lLCBDTVRpbWUsIChDTUNsb2NrUmVmIGNsb2NrKSwg
KGNsb2NrKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBD
TVNhbXBsZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlLCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVy
UmVmIHNidWYsIE9TU3RhdHVzICgqIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBjYWxsYmFj
aykoIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgQ01JdGVtQ291bnQgaW5kZXgsIHZv
aWQgKnJlZmNvbiksIHZvaWQgKnJlZmNvbiksIChzYnVmLCBjYWxsYmFjaywgcmVmY29uKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRleCAyNjhk
MTY3ZjI3ZDZkM2FiYmZmNTkzNTI2N2ZjMjIyMzkxMDEwZTNkLi44M2ZmNGQ2NjIzYmRmYmUxMWQ5
N2Y2YTNlNjNmZmZjOWFmYjYwNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9D
b3JlTWVkaWFTb2Z0TGluay5oCkBAIC00OSw2ICs0OSw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9G
T1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcywgT1NT
dGF0CiAjZGVmaW5lIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIHNvZnRMaW5rX0NvcmVNZWRp
YV9DTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXplX3QsIChD
TUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciksICh0aGVCdWZmZXIpKQogI2RlZmluZSBDTUJsb2Nr
QnVmZmVyR2V0RGF0YUxlbmd0aCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckdldERh
dGFMZW5ndGgKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBD
TUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcywgT1NTdGF0dXMsIChjb25zdCB2b2lkKiBzb3Vy
Y2VCeXRlcywgQ01CbG9ja0J1ZmZlclJlZiBkZXN0aW5hdGlvbkJ1ZmZlciwgc2l6ZV90IG9mZnNl
dEludG9EZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5ndGgpLCAoc291cmNlQnl0ZXMsIGRlc3Rp
bmF0aW9uQnVmZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRpb24sIGRhdGFMZW5ndGgpKQorI2RlZmlu
ZSBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9j
a0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9u
YXJ5UmVmLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQogI2RlZmluZSBD
TUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucyBzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3Jt
YXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQsICh2b2lk
KSwgKCkpCkBAIC0yMjMsMTAgKzIyNSwxNCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEJ1ZmZlckNvdW50LCBDTUl0ZQogI2Rl
ZmluZSBDTUJ1ZmZlclF1ZXVlR2V0QnVmZmVyQ291bnQgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVm
ZmVyUXVldWVHZXRCdWZmZXJDb3VudAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRGaXJzdFByZXNlbnRhdGlvblRpbWVTdGFtcCwg
Q01UaW1lLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiAjZGVmaW5lIENNQnVm
ZmVyUXVldWVHZXRGaXJzdFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3JlTWVkaWFf
Q01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0YW1wCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNr
c0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycywgY29uc3QgQ01CdWZmZXJDYWxsYmFja3MgKiwgKCks
ICgpKQorI2RlZmluZSBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVC
dWZmZXJzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5z
b3J0ZWRTYW1wbGVCdWZmZXJzCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENv
cmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1l
LCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiAjZGVmaW5lIENNQnVmZmVyUXVl
dWVHZXRFbmRQcmVzZW50YXRpb25UaW1lU3RhbXAgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVy
UXVldWVHZXRFbmRQcmVzZW50YXRpb25UaW1lU3RhbXAKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXJXaXRoSW50
ZWdlclRocmVzaG9sZCwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlLCBDTUJ1ZmZl
clF1ZXVlVHJpZ2dlckNhbGxiYWNrIHRyaWdnZXJDYWxsYmFjaywgdm9pZCogdHJpZ2dlclJlZmNv
biwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDb25kaXRpb24gdHJpZ2dlckNvbmRpdGlvbiwgQ01JdGVt
Q291bnQgdHJpZ2dlclRocmVzaG9sZCwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiogdHJpZ2dl
clRva2VuT3V0KSwgKHF1ZXVlLCB0cmlnZ2VyQ2FsbGJhY2ssIHRyaWdnZXJSZWZjb24sIHRyaWdn
ZXJDb25kaXRpb24sIHRyaWdnZXJUaHJlc2hvbGQsIHRyaWdnZXJUb2tlbk91dCkpCiAjZGVmaW5l
IENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXJXaXRoSW50ZWdlclRocmVzaG9s
ZAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVy
UXVldWVNYXJrRW5kT2ZEYXRhLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAo
cXVldWUpKQorI2RlZmluZSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBzb2Z0TGlua19Db3Jl
TWVkaWFfQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEKIAogU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNw
bGF5LCBDRlN0cmluZ1JlZikKICNkZWZpbmUga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERp
c3BsYXkgZ2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxheSgp
CkBAIC0yNTYsNiArMjYyLDE1IEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwg
Q29yZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkCiAjZGVmaW5lIGtD
TVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQgZ2V0X0NvcmVNZWRpYV9rQ01UaW1lYmFz
ZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZm
ZXJDb25zdW1lZCwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVy
Tm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVy
Q29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQoKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlf
RW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb24sIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01TYW1w
bGVCdWZmZXJBdHRhY2htZW50S2V5X0VuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uIGdldF9Db3Jl
TWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJh
dGlvbigpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NN
U2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9HcmFkdWFsRGVjb2RlclJlZnJlc2gsIENGU3RyaW5n
UmVmKQorI2RlZmluZSBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0dyYWR1YWxEZWNvZGVy
UmVmcmVzaCBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVh
bERlY29kZXJSZWZyZXNoKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1
cmF0aW9uQXRTdGFydCwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGdldF9Db3JlTWVkaWFfa0NNU2Ft
cGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0IGdldF9Db3JlTWVkaWFf
a0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0KCkKKworU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llLCBjb25zdCB2b2lkKiwgKENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvblJlZiBkZXNjLCBzaXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCkpCisjZGVm
aW5lIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llIHNvZnRMaW5rX0NvcmVN
ZWRpYV9DTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZQogU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlv
bkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24sIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiAqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVm
aW5lIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24gc29m
dExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVz
Y3JpcHRpb24KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBD
TUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrLCBPU1N0YXR1cywgKENGQWxsb2NhdG9y
UmVmIHN0cnVjdHVyZUFsbG9jYXRvciwgdm9pZCogbWVtb3J5QmxvY2ssIHNpemVfdCBibG9ja0xl
bmd0aCwgQ0ZBbGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tCdWZmZXJD
dXN0b21CbG9ja1NvdXJjZSogY3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRUb0RhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZm
ZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgbWVtb3J5QmxvY2ss
IGJsb2NrTGVuZ3RoLCBibG9ja0FsbG9jYXRvciwgY3VzdG9tQmxvY2tTb3VyY2UsIG9mZnNldFRv
RGF0YSwgZGF0YUxlbmd0aCwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSkKQEAgLTI2NCw2ICsyNzks
OCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1w
bGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldEF1
ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyIHNvZnRMaW5rX0NvcmVNZWRpYV9D
TVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyCiBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZm
ZXJHZXROdW1TYW1wbGVzLCBDTUl0ZW1Db3VudCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAo
c2J1ZikpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcyBzb2Z0TGlua19Db3Jl
TWVkaWFfQ01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVz
dERlY29kYWJsZUZvcm1hdCwgY29uc3QgQXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCisjZGVmaW5lIENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQgc29mdExpbmtfQ29yZU1lZGlhX0NN
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQKIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNvcHlT
YW1wbGVCdWZmZXJGb3JSYW5nZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENGUmFuZ2Ugc2FtcGxlUmFuZ2UsIENNU2FtcGxlQnVm
ZmVyUmVmKiBzQnVmT3V0KSwgKGFsbG9jYXRvciwgc2J1Ziwgc2FtcGxlUmFuZ2UsIHNCdWZPdXQp
KQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZSBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2UKIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdl
dFNhbXBsZVNpemVBcnJheSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDTUl0
ZW1Db3VudCBzaXplQXJyYXlFbnRyaWVzLCBzaXplX3QqIHNpemVBcnJheU91dCwgQ01JdGVtQ291
bnQqIHNpemVBcnJheUVudHJpZXNOZWVkZWRPdXQpLCAoc2J1Ziwgc2l6ZUFycmF5RW50cmllcywg
c2l6ZUFycmF5T3V0LCBzaXplQXJyYXlFbnRyaWVzTmVlZGVkT3V0KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmRiYTM3NjE3N2EwZmU3ODBlMjFlMzc3M2IwODZhYzJhNWIxOTEzMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwCkBA
IC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
VVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25T
ZXNzaW9uLmg+CisKKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZS
QU1FV09SS19GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94KQorCitTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9FeHBlY3RlZEZyYW1lUmF0ZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhL
ZXlGcmFtZUludGVydmFsRHVyYXRpb24sIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gsIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlf
UmVhbFRpbWUsIENGU3RyaW5nUmVmKQorCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQ
QUwsIFZpZGVvVG9vbGJveCwga1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVIYXJk
d2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyLCBDRlN0cmluZ1JlZikKKworU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9u
Q3JlYXRlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIENNVmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlLCBDRkRpY3Rpb25h
cnlSZWYgZW5jb2RlclNwZWNpZmljYXRpb24sIENGRGljdGlvbmFyeVJlZiBzb3VyY2VJbWFnZUJ1
ZmZlckF0dHJpYnV0ZXMsIENGQWxsb2NhdG9yUmVmIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBW
VENvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2sgb3V0cHV0Q2FsbGJhY2ssIHZvaWQqIG91dHB1dENh
bGxiYWNrUmVmQ29uLCBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiogY29tcHJlc3Npb25TZXNzaW9u
T3V0KSwgKGFsbG9jYXRvciwgd2lkdGgsIGhlaWdodCwgY29kZWNUeXBlLCBlbmNvZGVyU3BlY2lm
aWNhdGlvbiwgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBjb21wcmVzc2VkRGF0YUFsbG9j
YXRvciwgb3V0cHV0Q2FsbGJhY2ssIG91dHB1dENhbGxiYWNrUmVmQ29uLCBjb21wcmVzc2lvblNl
c3Npb25PdXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xi
b3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21w
cmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ01UaW1lIGNvbXBsZXRlVW50aWxQcmVzZW50YXRp
b25UaW1lU3RhbXApLCAoc2Vzc2lvbiwgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFt
cCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRD
b21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSwgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vz
c2lvblJlZiBzZXNzaW9uLCBDVkltYWdlQnVmZmVyUmVmIGltYWdlQnVmZmVyLCBDTVRpbWUgcHJl
c2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUgZHVyYXRpb24sIENGRGljdGlvbmFyeVJlZiBmcmFt
ZVByb3BlcnRpZXMsIHZvaWQqIHNvdXJjZUZyYW1lUmVmY29uLCBWVEVuY29kZUluZm9GbGFncyog
aW5mb0ZsYWdzT3V0KSwgKHNlc3Npb24sIGltYWdlQnVmZmVyLCBwcmVzZW50YXRpb25UaW1lU3Rh
bXAsIGR1cmF0aW9uLCBmcmFtZVByb3BlcnRpZXMsIHNvdXJjZUZyYW1lUmVmY29uLCBpbmZvRmxh
Z3NPdXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gs
IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzLCBPU1N0YXR1cywgKFZU
Q29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikpCisKKyNlbmRpZiAvLyBV
U0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9W
aWRlb1Rvb2xib3hTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rv
b2xib3hTb2Z0TGluay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhOWZlNTFlMGZmMTVjZjIzZGFkOTgwODljMjU5
NmFkZjE5MGFkNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Nm
L1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlIDx3dGYvU29m
dExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBBTCwgVmlkZW9U
b29sYm94KQorCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJv
eCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgQ0ZTdHJpbmdS
ZWYpCisjZGVmaW5lIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0ZWRGcmFtZVJhdGUg
Z2V0X1ZpZGVvVG9vbGJveF9rVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVS
YXRlKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBr
VlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgQ0ZT
dHJpbmdSZWYpCisjZGVmaW5lIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJ
bnRlcnZhbER1cmF0aW9uIGdldF9WaWRlb1Rvb2xib3hfa1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24oKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9I
RUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRp
bWUsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxU
aW1lIGdldF9WaWRlb1Rvb2xib3hfa1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSgp
CisKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRW
aWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0Vu
Y29kZXIsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9u
X0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIgZ2V0X1ZpZGVvVG9vbGJveF9r
VlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRl
b0VuY29kZXIoKQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9v
bGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgQ01WaWRlb0NvZGVj
VHlwZSBjb2RlY1R5cGUsIENGRGljdGlvbmFyeVJlZiBlbmNvZGVyU3BlY2lmaWNhdGlvbiwgQ0ZE
aWN0aW9uYXJ5UmVmIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgQ0ZBbGxvY2F0b3JSZWYg
Y29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIFZUQ29tcHJlc3Npb25PdXRwdXRDYWxsYmFjayBvdXRw
dXRDYWxsYmFjaywgdm9pZCogb3V0cHV0Q2FsbGJhY2tSZWZDb24sIFZUQ29tcHJlc3Npb25TZXNz
aW9uUmVmKiBjb21wcmVzc2lvblNlc3Npb25PdXQpLCAoYWxsb2NhdG9yLCB3aWR0aCwgaGVpZ2h0
LCBjb2RlY1R5cGUsIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBzb3VyY2VJbWFnZUJ1ZmZlckF0dHJp
YnV0ZXMsIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBvdXRwdXRDYWxsYmFjaywgb3V0cHV0Q2Fs
bGJhY2tSZWZDb24sIGNvbXByZXNzaW9uU2Vzc2lvbk91dCkpCisjZGVmaW5lIFZUQ29tcHJlc3Np
b25TZXNzaW9uQ3JlYXRlIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lv
bkNyZWF0ZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gs
IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVz
c2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ01UaW1lIGNvbXBsZXRlVW50aWxQcmVzZW50YXRpb25U
aW1lU3RhbXApLCAoc2Vzc2lvbiwgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCkp
CisjZGVmaW5lIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgc29mdExpbmtfVmlk
ZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lv
bkVuY29kZUZyYW1lLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24s
IENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3Rh
bXAsIENNVGltZSBkdXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIGZyYW1lUHJvcGVydGllcywgdm9p
ZCogc291cmNlRnJhbWVSZWZjb24sIFZURW5jb2RlSW5mb0ZsYWdzKiBpbmZvRmxhZ3NPdXQpLCAo
c2Vzc2lvbiwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZHVyYXRpb24sIGZy
YW1lUHJvcGVydGllcywgc291cmNlRnJhbWVSZWZjb24sIGluZm9GbGFnc091dCkpCisjZGVmaW5l
IFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZU
Q29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29k
ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uKSwgKHNl
c3Npb24pKQorI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1l
cyBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNv
ZGVGcmFtZXMKKworI2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmViZjA1ZWIwNTk3
MjhmNmJlYTk4MTkzNDYyNjAwMGY4Y2I1MGFlNC4uZTU1ZDNhODExYjA1YjgwZGY1ZGI5NjRlODRj
MDE1NTRlYzA4MTlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Nyw2ICsxMDk3LDcgQEAKIAkJNDE2RTZGRTgxQkJEMTJE
RjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3
NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2
MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJs
ZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
MDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE2Rjc5OTAyM0Q3
NTBDRjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkY3OThGMjNENzUwQ0IwMDgy
OUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi87IH07CiAJCTQxNzI1M0FC
MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJB
IC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi87IH07CiAJCTQxNzYxMkFGMUUzQTk5NDAwMEMz
RDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFCMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmNwcCAqLzsgfTsKIAkJNDE3NjEyQjAxRTNBOTk0MDAwQzNEODFE
IC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmggKi87IH07CkBAIC0xMTM3LDYgKzExMzgsNyBAQAogCQk0MUI4Nzc2MjIz
REUxMDQ1MDAzNjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQjg3NzYwMjNERTEwNDIw
MDM2MzhCOCAvKiBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQkYyMDQ5MjJCQTdCRTgwMDA0
RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyogUmVhbHRpbWVW
aWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAw
QzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNDFDRDZGOEMyM0Q2RTgyMTAwQjE2NDIxIC8qIFZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxQ0Q2RjhCMjNENkU4MUQwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW0gKi87IH07CiAJCTQxRDAxNUNBMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50
VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFE
MDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFEMTI5Q0UxRjNEMEVGNjAwRDE1RTQ3
IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCMjc4RDFGMzRDMjgyMDA3OTU0ODcgLyogV29ya2VyR2xv
YmFsU2NvcGVDYWNoZXMuaCAqLzsgfTsKIAkJNDFEMTI5RDAxRjNEMEYwNTAwRDE1RTQ3IC8qIENh
Y2hlUXVlcnlPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZCMjc5QjFGMzRDRUYwMDA3OTU0ODcgLyogQ2FjaGVRdWVyeU9wdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzM2MCw2
ICs3MzYyLDggQEAKIAkJNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5m
b3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xvYWRJ
bmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMEIzNzIwOUJD
M0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZldGNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyUmVwb3J0aW5nUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2Rjc5OEQyM0Q3NTBDQTAwODI5RkMxIC8qIEF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE3MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNB
OTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTc0NjcsNiArNzQ3MSw4IEBACiAJCTQxQzdFMTA1MUU2QTU0MzYw
MDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdFMTA2MUU2QTU0MzYwMDI3QjRE
RSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwODFFNkFBMzdDMDAyN0I0REUgLyogQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFDRDZGODkyM0Q2RTgxQzAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRDZGOEIyM0Q2RTgxRDAw
QjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8q
IEZldGNoQm9keUNvbnN1bWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZldGNoQm9keUNvbnN1bWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFDRjhCRTUxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg4ODksOCArMTg4OTUsMTIgQEAKIAkJNEQzQzA1
RDQyMUFGNDgwOTAwRjI4OTBBIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLmggKi8sCisJCQkJNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8q
IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLywKIAkJCQk0RDczRjk0QzIxOEM0QTg3
MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oICovLAogCQkJCTRE
NzNGOTREMjE4QzRBODcwMDNBM0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tICovLAorCQkJCTQxQ0Q2Rjg5MjNENkU4MUMwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaCAqLywKKwkJCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzUzNiw2ICszMzU0Niw3IEBACiAJCQkJQTk3
ODdDQjQxRjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAxRDBCRDAg
LyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNkY3OTkwMjNE
NzUwQ0YwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwRDgxNzE1RDJB
MjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNDI2OCw2ICsz
NDI3OSw3IEBACiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZCQzRBRjMxODk4ODE1NjAw
NDZFRTM4IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTJENUExOEYxQzU0NTkyMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFu
YWdlck9iakMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MUNENkY4QzIzRDZFODIxMDBCMTY0MjEg
LyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4
OEUwREUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkU4OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEMzM2RjY3MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
QVZGSW1wbC5jcHAKaW5kZXggNzNmMWQwYTE1MTlmMmMwM2I5MWQ2OTUxMDUxMzVhNGYyMGQxZGE2
NC4uZjFmNjgwNDUyMjkzNjVkOGZjM2IwNzk2NzJkMmMyMDMzZmJlYTM5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAtMjYsOSArMjYsMTAgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaCIK
IAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
SEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIgog
I2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC02OCw3ICs2OSwxNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGw6OmNyZWF0ZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
YXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGF1ZGlvVHJh
Y2ssIHZpZGVvVHJhY2spOworCisgICAgaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKKyAgICBp
ZiAodmlkZW9UcmFjaykgeworICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IHZpZGVvVHJhY2stPnNl
dHRpbmdzKCk7CisgICAgICAgIHdpZHRoID0gc2V0dGluZ3Mud2lkdGgoKTsKKyAgICAgICAgaGVp
Z2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7CisgICAgfQorICAgIGF1dG8gd3JpdGVyID0gTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSghIWF1ZGlvVHJhY2ssIHdpZHRoLCBoZWlnaHQp
OwogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTE5LDQg
KzEyNyw0IEBAIGNvbnN0IFN0cmluZyYgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjptaW1l
VHlwZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VU
V1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAppbmRl
eCAwY2YwZGYzYzY0Y2M5NzEzZTMwNTliZTM2Y2FjYzlmYzdjY2MwYjM2Li4zNGUyYTk2Yzc5NDE4
ZDRlODY2YzFhYzIxMDQwOThjYzkzOGY0NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsLmgKQEAgLTI0LDcgKzI0LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NF
VFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGUuaCIKICNp
bmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCkBAIC01Niw0ICs1Niw0
IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShB
VkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDdiZjgxZTFkNDU2YzcwYzJkOTQ0ZjcwNDVhOGUx
NmUwNTliY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVNZWRp
YS5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZm
ZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252ZXJ0
ZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRl
KENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKyAg
ICB+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAgICB2b2lkIGZpbmlzaCgpOwor
ICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBSZXRhaW5QdHI8Q01TYW1w
bGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKyAgICBib29sIGluaXRpYWxpemUoQ01CdWZm
ZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworCisgICAgc3Rh
dGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252
ZXJ0ZXJSZWYsIFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVz
Y3JpcHRpb24qKiwgdm9pZCopOworCisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2Ft
cGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1h
dERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIEF1ZGlvRm9ybWF0SUQpOworICAg
IHNpemVfdCBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiwgVUludDMyLCBGbG9hdDMyKTsKKyAgICB2b2lkIGF0dGFjaFByaW1pbmdUcmlt
c0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IGdy
YWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCk7CisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
QnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCk7
CisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKENNVGltZSk7
CisgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKFVJbnQzMios
IEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKik7CisKKyAg
ICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBS
ZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9pbnB1dEJ1ZmZlclF1ZXVlOworICAgIGRpc3Bh
dGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIENNVGltZSBtX2xvd1dhdGVy
VGltZTsKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07CisKKyAgICBSZXRhaW5QdHI8
QXVkaW9Db252ZXJ0ZXJSZWY+IG1fY29udmVydGVyOworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiBtX3NvdXJjZUZvcm1hdDsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24g
bV9kZXN0aW5hdGlvbkZvcm1hdDsKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJl
Zj4gbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAgIFJldGFpblB0cjxOU051bWJl
cj4gbV9nZHJDb3VudE51bTsKKyAgICBVSW50MzIgbV9tYXhPdXRwdXRQYWNrZXRTaXplOworICAg
IFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX2Rlc3RpbmF0aW9uUGFja2V0
RGVzY3JpcHRpb25zOworCisgICAgQ01UaW1lIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRp
bWVTdGFtcDsKKyAgICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1w
OworICAgIENNVGltZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb247CisKKyAgICBWZWN0b3I8Y2hh
cj4gbV9zb3VyY2VCdWZmZXI7CisgICAgVmVjdG9yPGNoYXI+IG1fZGVzdGluYXRpb25CdWZmZXI7
CisKKyAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsK
KyAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7CisgICAgc2l6ZV90IG1fY3VycmVu
dE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXI7CisgICAgQXVkaW9Gb3JtYXRJRCBtX291dHB1dENv
ZGVjVHlwZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVT
RShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiMTUxMjA2MGQ3MGEwYjdkNzJjMWQxYmJlZWMwZTRmNjU0
Yzk1OGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtMCwwICsxLDQ5
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPEF1ZGlv
VG9vbGJveC9BdWRpb0NvZGVjLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVy
dGVyLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+CisjaW5jbHVkZSA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgPHBhbC9jZi9BdWRpb1Rvb2xib3hT
b2Z0TGluay5oPgorCisjZGVmaW5lIExPV19XQVRFUl9USU1FX0lOX1NFQ09ORFMgMC4xCisKK3Vz
aW5nIG5hbWVzcGFjZSBQQUw7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpjcmVhdGUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCog
Y2FsbGJhY2tPYmplY3QpCit7CisgICAgYXV0byBjb21wcmVzc29yID0gc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4obmV3IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcigpKTsKKyAgICBpZiAoIWNvbXByZXNzb3ItPmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxi
YWNrT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbXByZXNz
b3I7Cit9CisKK0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yKCkKKyAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgiY29tLmFwcGxlLkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENI
X1FVRVVFX1NFUklBTCkgfQorICAgICwgbV9sb3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNl
Y29uZHMoTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EUywgMTAwMCkgfQorICAgICwgbV9vdXRwdXRD
b2RlY1R5cGUgeyBrQXVkaW9Gb3JtYXRNUEVHNEFBQyB9Cit7Cit9CisKK0F1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCit7CisgICAgaWYg
KG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3Nlcmlh
bERpc3BhdGNoUXVldWUpOworfQorCitib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBj
YWxsYmFja09iamVjdCkKK3sKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIGlucHV0QnVmZmVyUXVldWU7
CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZl
cnMoKSwgJmlucHV0QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVDcmVh
dGUgZm9yIG1faW5wdXRCdWZmZXJRdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX2lucHV0QnVmZmVyUXVldWUgPSBhZG9wdENG
KGlucHV0QnVmZmVyUXVldWUpOworCisgICAgQ01CdWZmZXJRdWV1ZVJlZiBvdXRwdXRCdWZmZXJR
dWV1ZTsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxl
QnVmZmVycygpLCAmb3V0cHV0QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVl
dWVDcmVhdGUgZm9yIG1fb3V0cHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9vdXRwdXRCdWZmZXJRdWV1ZSA9
IGFkb3B0Q0Yob3V0cHV0QnVmZmVyUXVldWUpOworICAgIENNQnVmZmVyUXVldWVJbnN0YWxsVHJp
Z2dlcihtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBjYWxsYmFjaywgY2FsbGJhY2tPYmplY3Qs
IGtDTUJ1ZmZlclF1ZXVlVHJpZ2dlcl9XaGVuRGF0YUJlY29tZXNSZWFkeSwga0NNVGltZVplcm8s
IE5VTEwpOworCisgICAgbV9pc0VuY29kaW5nID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCit7CisgICAgZGlz
cGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIHByb2Nlc3NTYW1w
bGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUoa0NNVGltZUludmFsaWQpOworICAgICAgICBhdXRv
IGVycm9yID0gQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1ZS5n
ZXQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBm
YWlsZWQgJWQiLCBlcnJvcik7CisgICAgICAgIG1faXNFbmNvZGluZyA9IGZhbHNlOworICAgIH0p
OworfQorCitib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVy
dGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3Jt
YXREZXNjcmlwdGlvbiwgQXVkaW9Gb3JtYXRJRCBvdXRwdXRGb3JtYXRJRCkKK3sKKyAgICBjb25z
dCBhdXRvICphdWRpb0Zvcm1hdExpc3RJdGVtID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0
UmljaGVzdERlY29kYWJsZUZvcm1hdChmb3JtYXREZXNjcmlwdGlvbik7CisgICAgbV9zb3VyY2VG
b3JtYXQgPSBhdWRpb0Zvcm1hdExpc3RJdGVtLT5tQVNCRDsKKworICAgIG1lbXNldCgmbV9kZXN0
aW5hdGlvbkZvcm1hdCwgMCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwor
ICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUZvcm1hdElEID0gb3V0cHV0Rm9ybWF0SUQ7CisgICAg
bV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fc291cmNlRm9ybWF0Lm1TYW1wbGVS
YXRlOworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgPSBtX3NvdXJj
ZUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKG1f
ZGVzdGluYXRpb25Gb3JtYXQpOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Gb3JtYXRHZXRQ
cm9wZXJ0eShrQXVkaW9Gb3JtYXRQcm9wZXJ0eV9Gb3JtYXRJbmZvLCAwLCBOVUxMLCAmc2l6ZSwg
Jm1fZGVzdGluYXRpb25Gb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIEF1ZGlvRm9ybWF0R2V0UHJvcGVy
dHkgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBBdWRpb0NvbnZlcnRlclJlZiBjb252ZXJ0ZXI7CisgICAgaWYgKGF1dG8gZXJyb3Ig
PSBBdWRpb0NvbnZlcnRlck5ldygmbV9zb3VyY2VGb3JtYXQsICZtX2Rlc3RpbmF0aW9uRm9ybWF0
LCAmY29udmVydGVyKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRpb0NvbnZlcnRlck5ldyBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX2NvbnZl
cnRlciA9IGFkb3B0Q0YoY29udmVydGVyKTsKKworICAgIHNpemVfdCBjb29raWVTaXplID0gMDsK
KyAgICBjb25zdCB2b2lkICpjb29raWUgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdp
Y0Nvb2tpZShmb3JtYXREZXNjcmlwdGlvbiwgJmNvb2tpZVNpemUpOworICAgIGlmIChjb29raWVT
aXplKSB7CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0
eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29v
a2llLCAoVUludDMyKWNvb2tpZVNpemUsIGNvb2tpZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRp
bmcga0F1ZGlvQ29udmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29va2llIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
CisgICAgc2l6ZSA9IHNpemVvZihtX3NvdXJjZUZvcm1hdCk7CisgICAgaWYgKGF1dG8gZXJyb3Ig
PSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252
ZXJ0ZXJDdXJyZW50SW5wdXRTdHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX3NvdXJjZUZvcm1h
dCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50SW5wdXRTdHJl
YW1EZXNjcmlwdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmICghbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAibUJ5dGVzUGVyUGFja2V0
IHNob3VsZCBub3QgYmUgemVybyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgc2l6ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJv
ciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0Nv
bnZlcnRlckN1cnJlbnRPdXRwdXRTdHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX2Rlc3RpbmF0
aW9uRm9ybWF0KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRP
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3Jt
YXRJRCA9PSBrQXVkaW9Gb3JtYXRNUEVHNEFBQykgeworICAgICAgICAvLyBGSVhNRTogU2V0IG91
dHB1dEJpdFJhdGUgYWNjb3JkaW5nIE1lZGlhUmVjb3JkZXJPcHRpb25zLmF1ZGlvQml0c1BlclNl
Y29uZC4KKyAgICAgICAgVUludDMyIG91dHB1dEJpdFJhdGUgPSA2NDAwMDsKKyAgICAgICAgaWYg
KG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPj0gNDQxMDApCisgICAgICAgICAgICBv
dXRwdXRCaXRSYXRlID0gMTkyMDAwOworICAgICAgICBlbHNlIGlmIChtX2Rlc3RpbmF0aW9uRm9y
bWF0Lm1TYW1wbGVSYXRlIDwgMjIwMDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMzIw
MDA7CisKKyAgICAgICAgc2l6ZSA9IHNpemVvZihvdXRwdXRCaXRSYXRlKTsKKyAgICAgICAgaWYg
KGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgp
LCBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmICghbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQp
IHsKKyAgICAgICAgLy8gSWYgdGhlIGRlc3RpbmF0aW9uIGZvcm1hdCBpcyBWQlIsIHdlIG5lZWQg
dG8gZ2V0IG1heCBzaXplIHBlciBwYWNrZXQgZnJvbSB0aGUgY29udmVydGVyLgorICAgICAgICBz
aXplID0gc2l6ZW9mKG1fbWF4T3V0cHV0UGFja2V0U2l6ZSk7CisKKyAgICAgICAgaWYgKGF1dG8g
ZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVk
aW9Db252ZXJ0ZXJQcm9wZXJ0eU1heGltdW1PdXRwdXRQYWNrZXRTaXplLCAmc2l6ZSwgJm1fbWF4
T3V0cHV0UGFja2V0U2l6ZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVy
dGVyUHJvcGVydHlNYXhpbXVtT3V0cHV0UGFja2V0U2l6ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1f
ZGVzdGluYXRpb25CdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KGNvbXB1dGVCdWZmZXJTaXplRm9yQXVk
aW9Gb3JtYXQobV9kZXN0aW5hdGlvbkZvcm1hdCwgbV9tYXhPdXRwdXRQYWNrZXRTaXplLCBMT1df
V0FURVJfVElNRV9JTl9TRUNPTkRTKSk7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1C
eXRlc1BlclBhY2tldCkKKyAgICAgICAgbV9kZXN0aW5hdGlvblBhY2tldERlc2NyaXB0aW9ucy5y
ZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpIC8gbV9tYXhPdXRw
dXRQYWNrZXRTaXplKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzaXplX3QgQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBmb3JtYXQsIFVJbnQzMiBtYXhPdXRwdXRQYWNrZXRTaXpl
LCBGbG9hdDMyIGR1cmF0aW9uKQoreworICAgIFVJbnQzMiBudW1QYWNrZXRzID0gKGZvcm1hdC5t
U2FtcGxlUmF0ZSAqIGR1cmF0aW9uKSAvIGZvcm1hdC5tRnJhbWVzUGVyUGFja2V0OworICAgIFVJ
bnQzMiBvdXRwdXRQYWNrZXRTaXplID0gZm9ybWF0Lm1CeXRlc1BlclBhY2tldCA/IGZvcm1hdC5t
Qnl0ZXNQZXJQYWNrZXQgOiBtYXhPdXRwdXRQYWNrZXRTaXplOworICAgIFVJbnQzMiBidWZmZXJT
aXplID0gbnVtUGFja2V0cyAqIG91dHB1dFBhY2tldFNpemU7CisKKyAgICByZXR1cm4gYnVmZmVy
U2l6ZTsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF0dGFjaFByaW1p
bmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBpZiAoQ01U
SU1FX0lTX0lOVkFMSUQobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uKSkgeworICAgICAgICBBdWRp
b0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07CisgICAgICAgIFVJbnQzMiBz
aXplID0gc2l6ZW9mKHByaW1lSW5mbyk7CisKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRp
b0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQ
cmltZUluZm8sICZzaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBr
QXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRp
b24gPSBDTVRpbWVNYWtlKHByaW1lSW5mby5sZWFkaW5nRnJhbWVzLCBtX2Rlc3RpbmF0aW9uRm9y
bWF0Lm1TYW1wbGVSYXRlKTsKKyAgICB9CisKKyAgICBpZiAoQ01USU1FX0NPTVBBUkVfSU5MSU5F
KGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7CisgICAgICAgIENN
VGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsK
KyAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1pbmltdW0oc2FtcGxlRHVyYXRp
b24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7CisgICAgICAgIENGRGljdGlvbmFyeVJlZiB0
cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NG
QWxsb2NhdG9yRGVmYXVsdCk7CisgICAgICAgIENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNh
bXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnRE
aWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOworICAgICAgICBDRlJlbGVh
c2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uID0g
Q01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uLCB0cmltRHVyYXRpb24pOwor
ICAgIH0KK30KKworUmV0YWluUHRyPE5TTnVtYmVyPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCkKK3sKKyAgICBVSW50MzIgZGVsYXlTaXpl
ID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICB1aW50MzJfdCBvcmlnaW5hbERlbGF5TW9kZSA9IDA7
CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVy
dGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCAmZGVsYXlTaXplLCAmb3Jp
Z2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0
eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICB9CisKKyAgICB1aW50MzJfdCBvcHRpbWFsRGVsYXlNb2RlID0ga0F1ZGlvQ29kZWNEZWxh
eU1vZGVfT3B0aW1hbDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyU2V0UHJv
cGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUsIGRl
bGF5U2l6ZSwgJm9wdGltYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlv
Q29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBVSW50MzIgcHJpbWVTaXplID0gc2l6ZW9mKEF1ZGlv
Q29kZWNQcmltZUluZm8pOworICAgIEF1ZGlvQ29kZWNQcmltZUluZm8gcHJpbWVJbmZvIHsgMCwg
MCB9OworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2Nv
bnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1lSW5mbywgJnByaW1lU2l6ZSwg
JnByaW1lSW5mbykpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5UHJp
bWVJbmZvIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAg
IH0KKworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2Nv
bnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSwgZGVsYXlTaXplLCAm
b3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3Ry
ZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29kZWNQcm9w
ZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0TlMoW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6KHBy
aW1lSW5mby5sZWFkaW5nRnJhbWVzIC8gbV9kZXN0aW5hdGlvbkZvcm1hdC5tRnJhbWVzUGVyUGFj
a2V0KV0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKFVJbnQzMiBudW1QYWNrZXRzLCBBdWRpb0J1
ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3QpCit7CisgICAgVmVjdG9yPGNoYXI+IGNvb2tpZTsKKyAg
ICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAgICBVSW50MzIg
Y29va2llU2l6ZSA9IDA7CisKKyAgICAgICAgYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0
UHJvcGVydHlJbmZvKG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDb21wcmVzc2lv
bk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgTlVMTCk7CisgICAgICAgIGlmICgoZXJyb3IgPT0g
bm9FcnIpICYmICEhY29va2llU2l6ZSkgeworICAgICAgICAgICAgY29va2llLnJlc2VydmVDYXBh
Y2l0eShjb29raWVTaXplKTsKKworICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0Nv
bnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDb21w
cmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgY29va2llLmRhdGEoKSkpIHsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29r
aWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYgZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3Ig
PSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJm1f
ZGVzdGluYXRpb25Gb3JtYXQsIDAsIE5VTEwsIGNvb2tpZVNpemUsIGNvb2tpZS5kYXRhKCksIE5V
TEwsICZkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSkgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01B
dWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAgICAgICBtX2Rlc3RpbmF0aW9uRm9y
bWF0RGVzY3JpcHRpb24gPSBhZG9wdENGKGRlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24pOwor
ICAgICAgICBtX2dkckNvdW50TnVtID0gZ3JhZHVhbERlY29kZXJSZWZyZXNoQ291bnQoKTsKKyAg
ICB9CisKKyAgICBjaGFyICpkYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGZpbGxCdWZmZXJMaXN0
Lm1CdWZmZXJzWzBdLm1EYXRhKTsKKyAgICBzaXplX3QgZGF0YVNpemUgPSBmaWxsQnVmZmVyTGlz
dC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplOworCisgICAgQ01CbG9ja0J1ZmZlclJlZiBibG9j
a0J1ZmZlcjsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVt
b3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZGF0YVNpemUsIGtDRkFsbG9jYXRv
ckRlZmF1bHQsIE5VTEwsIDAsIGRhdGFTaXplLCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5v
d0ZsYWcsICZibG9ja0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNyZWF0ZVdp
dGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKGJsb2NrQnVmZmVyKTsKKworICAg
IGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMoZGF0YSwgYnVm
ZmVyLmdldCgpLCAwLCBkYXRhU2l6ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlclJlcGxh
Y2VEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7
CisgICAgfQorCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyOworICAgIGF1dG8g
ZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIuZ2V0KCksIHRydWUsIE5VTEwsIE5VTEwsIG1fZGVz
dGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgbnVtUGFja2V0cywgbV9jdXJyZW50TmF0
aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wLCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25z
LmRhdGEoKSwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENN
QXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIGlmIChbbV9n
ZHJDb3VudE51bSBpbnRWYWx1ZV0pCisgICAgICAgIENNU2V0QXR0YWNobWVudChzYW1wbGVCdWZm
ZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERlY29kZXJSZWZyZXNoLCAo
X19icmlkZ2UgQ0ZUeXBlUmVmKW1fZ2RyQ291bnROdW0uZ2V0KCksIGtDTUF0dGFjaG1lbnRNb2Rl
X1Nob3VsZFByb3BhZ2F0ZSk7CisKKyAgICByZXR1cm4gc2FtcGxlQnVmZmVyOworfQorCitPU1N0
YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlvQ29udmVydGVyQ29tcGxleElu
cHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiAqbnVtT3V0cHV0UGFja2V0c1B0
ciwgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0
aW9uICoqcGFja2V0RGVzY3JpcHRpb25PdXQsIHZvaWQgKmF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcikKK3sKKyAgICBhdXRvICpjb21wcmVzc29yID0gc3RhdGljX2Nhc3Q8QXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yKj4oYXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKTsKKyAgICByZXR1
cm4gY29tcHJlc3Nvci0+cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKG51bU91dHB1
dFBhY2tldHNQdHIsIGJ1ZmZlckxpc3QsIHBhY2tldERlc2NyaXB0aW9uT3V0KTsKK30KKworT1NT
dGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm92aWRlU291cmNlRGF0YU51bU91
dHB1dFBhY2tldHMoVUludDMyKiBudW1PdXRwdXRQYWNrZXRzUHRyLCBBdWRpb0J1ZmZlckxpc3Qq
IGF1ZGlvQnVmZmVyTGlzdCwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioqIHBhY2tldERl
c2NyaXB0aW9uT3V0KQoreworICAgIGlmIChwYWNrZXREZXNjcmlwdGlvbk91dCkKKyAgICAgICAg
KnBhY2tldERlc2NyaXB0aW9uT3V0ID0gTlVMTDsKKworICAgIGNvbnN0IFVJbnQzMiBudW1QYWNr
ZXRzVG9Db3B5ID0gKm51bU91dHB1dFBhY2tldHNQdHI7CisgICAgc2l6ZV90IG51bUJ5dGVzVG9D
b3B5ID0gKG51bVBhY2tldHNUb0NvcHkgKiBtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQp
OworCisgICAgaWYgKGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnMgPT0gMSkgeworICAg
ICAgICBzaXplX3QgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyID0gMDsKKworICAgICAgICBt
X3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobnVtQnl0ZXNUb0NvcHkpOworCisgICAgICAg
IHdoaWxlIChudW1CeXRlc1RvQ29weSkgeworICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tC
dWZmZXJTaXplIDw9IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAg
ICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgbV9z
YW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkp
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGF1dG8gc2Ft
cGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+
KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkp
KSk7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxv
Y2tCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0
RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAgICAgICAgICAgICBpZiAo
IW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVC
dWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAgICAgICAgICBtX3NhbXBs
ZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNl
dEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNp
emUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgp
KTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0g
MDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXIp
IHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiA9
IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgLSBtX2N1
cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSk7CisgICAgICAgICAgICAgICAgaWYgKGF1
dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVy
LmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyLCBudW1CeXRlc1RvQ29w
eUZyb21TYW1wbGVCYnVmLCAobV9zb3VyY2VCdWZmZXIuZGF0YSgpICsgY3VycmVudE9mZnNldElu
U291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNv
cHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbnVtQnl0
ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgICAg
ICBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgKz0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxl
QmJ1ZjsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVy
ICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IG1fc291cmNl
QnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0
YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOworICAgICAgICBhdWRpb0J1
ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fc291cmNlRm9ybWF0Lm1D
aGFubmVsc1BlckZyYW1lOworCisgICAgICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlv
QnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1C
eXRlc1BlclBhY2tldCk7CisgICAgICAgIHJldHVybiBub0VycjsKKyAgICB9CisKKyAgICBBU1NF
UlQoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAyKTsKKworICAgIC8vIEZJWE1F
OiBTdXBwb3J0IGludGVybGVhdmVkIGRhdGEgYnkgdW5pbnRlcmxlYXZpbmcgbV9zb3VyY2VCdWZm
ZXIgaWYgbmVlZGVkLgorICAgIEFTU0VSVChtX3NvdXJjZUZvcm1hdC5tRm9ybWF0RmxhZ3MgJiBr
QXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZCk7CisKKyAgICBtX3NvdXJjZUJ1ZmZlci5y
ZXNlcnZlQ2FwYWNpdHkoMiAqIG51bUJ5dGVzVG9Db3B5KTsKKyAgICBhdXRvKiBmaXJzdENoYW5u
ZWwgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7CisgICAgYXV0byogc2Vjb25kQ2hhbm5lbCA9IG1f
c291cmNlQnVmZmVyLmRhdGEoKSArIG51bUJ5dGVzVG9Db3B5OworCisgICAgc2l6ZV90IGN1cnJl
bnRPZmZzZXRJblNvdXJjZUJ1ZmZlciA9IDA7CisgICAgd2hpbGUgKG51bUJ5dGVzVG9Db3B5KSB7
CisgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA8PSBtX2N1cnJlbnRPZmZzZXRJ
blNhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZl
cikgeworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBudWxscHRyOworICAg
ICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5KG1faW5wdXRCdWZmZXJRdWV1
ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGF1dG8gc2Ft
cGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+
KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkp
KSk7CisgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRDRigoQ01CbG9ja0J1
ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJHZXREYXRh
QnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAgICAgICAgaWYgKCFtX3NhbXBs
ZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRh
QnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXpl
ID0gMDsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVy
ID0gMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgo
bV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSkgLyAyOworICAgICAgICAgICAgbV9jdXJyZW50T2Zm
c2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9z
YW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgc2l6ZV90IG51bUJ5dGVzVG9Db3B5RnJv
bVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1CeXRlc1RvQ29weSwgKG1fc2FtcGxlQmxvY2tCdWZm
ZXJTaXplIC0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikpOworICAgICAgICAg
ICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJs
b2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyLCBudW1C
eXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoZmlyc3RDaGFubmVsICsgY3VycmVudE9mZnNldElu
U291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURh
dGFCeXRlcyBmaXJzdCBjaGFubmVsIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRv
IGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5n
ZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArIG1fc2FtcGxlQmxvY2tC
dWZmZXJTaXplLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoc2Vjb25kQ2hhbm5lbCAr
IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcikpKSB7CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01C
bG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc2Vjb25kIGNoYW5uZWwgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsK
KyAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciArPSBudW1CeXRlc1RvQ29w
eUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9j
a0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICB9CisgICAg
fQorCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IGZpcnN0Q2hhbm5l
bDsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBjdXJy
ZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sw
XS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sx
XS5tRGF0YSA9IHNlY29uZENoYW5uZWw7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sx
XS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOworICAgIGF1ZGlv
QnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0gMTsKKworICAgICpudW1P
dXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRl
U2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisgICAgcmV0dXJuIG5vRXJy
OworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1
ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUgbG93V2F0ZXJUaW1lKQoreworICAgIGlmICgh
bV9jb252ZXJ0ZXIpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSAoQ01TYW1wbGVCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1faW5wdXRCdWZmZXJRdWV1
ZS5nZXQoKSkpKTsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlcik7CisKKyAgICAgICAgbV9jdXJyZW50
TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRp
b25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9u
VGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAo
YnVmZmVyKTsKKworICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZm
ZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpOworICAgICAgICBpZiAoIWluaXRBdWRpb0Nv
bnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uLCBtX291
dHB1dENvZGVjVHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2hpbGUg
KENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVyVGltZSkgfHwgQ01USU1FX0NPTVBBUkVfSU5MSU5F
KGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJRdWV1ZUdldER1cmF0aW9uKG1faW5wdXRCdWZmZXJR
dWV1ZS5nZXQoKSkpKSB7CisgICAgICAgIEF1ZGlvQnVmZmVyTGlzdCBmaWxsQnVmZmVyTGlzdDsK
KworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9IDE7CisgICAgICAgIGZp
bGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fZGVzdGluYXRpb25G
b3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJz
WzBdLm1EYXRhQnl0ZVNpemUgPSAoVUludDMyKW1fZGVzdGluYXRpb25CdWZmZXIuY2FwYWNpdHko
KTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2Rlc3RpbmF0
aW9uQnVmZmVyLmRhdGEoKTsKKworICAgICAgICBVSW50MzIgb3V0cHV0UGFja2V0U2l6ZSA9IG1f
ZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gbV9kZXN0aW5hdGlvbkZvcm1hdC5t
Qnl0ZXNQZXJQYWNrZXQgOiBtX21heE91dHB1dFBhY2tldFNpemU7CisgICAgICAgIFVJbnQzMiBu
dW1PdXRwdXRQYWNrZXRzID0gKFVJbnQzMiltX2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5KCkg
LyBvdXRwdXRQYWNrZXRTaXplOworCisgICAgICAgIGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRl
ckZpbGxDb21wbGV4QnVmZmVyKG1fY29udmVydGVyLmdldCgpLCBhdWRpb0NvbnZlcnRlckNvbXBs
ZXhJbnB1dERhdGFQcm9jLCB0aGlzLCAmbnVtT3V0cHV0UGFja2V0cywgJmZpbGxCdWZmZXJMaXN0
LCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSk7CisgICAgICAgIGlmIChl
cnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJGaWxsQ29tcGxleEJ1ZmZlciBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICghbnVtT3V0cHV0UGFja2V0cykKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGF1dG8gYnVmZmVyID0gc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMobnVtT3V0cHV0
UGFja2V0cywgZmlsbEJ1ZmZlckxpc3QpOworCisgICAgICAgIGF0dGFjaFByaW1pbmdUcmltc0lm
TmVlZGVkKGJ1ZmZlcik7CisKKyAgICAgICAgZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldE91dHB1
dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIsIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlv
blRpbWVTdGFtcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1w
bGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBDTVRpbWUg
bmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7CisgICAg
ICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1
cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG5hdGl2ZUR1cmF0aW9uKTsKKworICAg
ICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0
aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFt
cCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAsIG91dHB1
dER1cmF0aW9uKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVldWVFbnF1ZXVlKG1fb3V0
cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAgIGlmIChlcnJvcikgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVy
UmVmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUobV9p
bnB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
KGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZl
clF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIHByb2Nlc3NTYW1w
bGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUobV9sb3dXYXRlclRpbWUpOworfQorCit2b2lkIEF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVy
UmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwg
XnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykKKyAgICAgICAgICAgIHByb2Nlc3NTYW1wbGVC
dWZmZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVCdWZmZXJSZWYgQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVy
biAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRI
ZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisKK1JldGFpblB0cjxDTVNhbXBs
ZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxl
QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0
X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1fb3V0cHV0QnVmZmVy
UXVldWUuZ2V0KCkpKSkpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCBiMTQ3Y2EyODgyOWIwZjEwMzBiZGE3NGEwODQy
NmM0NTY1ZTk4NzFlLi4wNTE4NjA4NmEyNTYxNjAyNDZjZDhkMzIyMTU4YzU2ODkxYTQyYzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aApAQCAtMjQsNyArMjQsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVM
RUdBVEUpCisKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAg
LTM1LDEwICszNywxNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKKyNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1
ZGlvVHlwZXMuaD4KKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ01UaW1lLmg+CisKIHR5cGVkZWYgc3Ry
dWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgY29u
c3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25S
ZWY7Cit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuICpDTUJ1
ZmZlclF1ZXVlVHJpZ2dlclRva2VuOwogCiBPQkpDX0NMQVNTIEFWQXNzZXRXcml0ZXI7CiBPQkpD
X0NMQVNTIEFWQXNzZXRXcml0ZXJJbnB1dDsKK09CSkNfQ0xBU1MgV2ViQVZBc3NldFdyaXRlckRl
bGVnYXRlOwogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1lZGlhVGltZTsKQEAgLTQ2LDUxICs1
NCw3MiBAQCBjbGFzcyBNZWRpYVRpbWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOwogY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bjsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0Rh
dGE7CitjbGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiAKLWNsYXNzIFdFQkNPUkVf
RVhQT1JUIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFk
OjpNYWluPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
PiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV1RG
OjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlciwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFnZXI+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
PiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNvbnN0
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKTsKICAgICBzdGF0aWMgUmVmUHRy
PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKTsKLSAg
ICAKLSAgICBib29sIHNldHVwV3JpdGVyKCk7Ci0gICAgYm9vbCBzZXRWaWRlb0lucHV0KGludCB3
aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgYm9vbCBzZXRBdWRpb0lucHV0KCk7CisKICAgICB2b2lk
IGFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKICAgICB2b2lkIGFw
cGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAg
ICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmKTsKIAorICAgIHZvaWQgYXBwZW5k
RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZERhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJik7CisKIHByaXZhdGU6Ci0gICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIo
UmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYsIFN0cmluZyYmIHBhdGgpOworICAgIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pOwogICAgIHZv
aWQgY2xlYXIoKTsKIAotICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKLSAg
ICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX3ZpZGVvSW5wdXQ7Ci0gICAgUmV0YWlu
UHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0lucHV0OwotCi0gICAgU3RyaW5nIG1fcGF0
aDsKLSAgICBMb2NrIG1fdmlkZW9Mb2NrOwotICAgIExvY2sgbV9hdWRpb0xvY2s7Ci0gICAgQmlu
YXJ5U2VtYXBob3JlIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZTsKLSAgICBCaW5hcnlTZW1hcGhv
cmUgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmU7Ci0gICAgQmluYXJ5U2VtYXBob3JlIG1f
ZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlOworICAgIGJvb2wgaW5pdGlhbGl6ZSgpOworCisg
ICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCos
IENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOworICAgIHN0YXRpYyB2b2lkIGNvbXByZXNzZWRB
dWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2Vu
KTsKKworICAgIHZvaWQgc3RhcnRBc3NldFdyaXRlcigpOworICAgIHZvaWQgYXBwZW5kQ29tcHJl
c3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKworICAgIGJvb2wgYXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2Ft
cGxlQnVmZmVyKCk7CisgICAgYm9vbCBhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIo
KTsKKworICAgIHZvaWQgcHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcnMoKTsK
KyAgICB2b2lkIHByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCk7CisKKyAg
ICB2b2lkIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIGFwcGVuZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVk
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICAgICBib29sIG1faGFzU3RhcnRlZFdy
aXRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1N0b3BwZWQgeyBmYWxzZSB9OwotICAgIGJv
b2wgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgeyB0cnVlIH07Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBt
X2F1ZGlvUHVsbFF1ZXVlOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV92aWRlb1B1bGxRdWV1ZTsK
LSAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX3ZpZGVvQnVmZmVyUG9v
bDsKLSAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX2F1ZGlvQnVmZmVy
UG9vbDsKKworICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIGJv
b2wgbV9pc1N0b3BwaW5nIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Rh
dGE7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4g
bV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKKworICAgIGJvb2wgbV9oYXNBdWRpbzsKKyAg
ICBib29sIG1faGFzVmlkZW87CisKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJl
Zj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fYXVkaW9Db21wcmVzc29yOworICAgIFJldGFpblB0cjxB
VkFzc2V0V3JpdGVySW5wdXQ+IG1fYXVkaW9Bc3NldFdyaXRlcklucHV0OworCisgICAgUmV0YWlu
UHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBtX3ZpZGVvQ29t
cHJlc3NvcjsKKyAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX3ZpZGVvQXNzZXRX
cml0ZXJJbnB1dDsKKyAgICBDTVRpbWUgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1lOworICAg
IENNVGltZSBtX2xhc3RWaWRlb0RlY29kaW5nVGltZTsKKyAgICBib29sIG1faGFzRW5jb2RlZFZp
ZGVvU2FtcGxlcyB7IGZhbHNlIH07CisKKyAgICBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRl
bGVnYXRlPiBtX3dyaXRlckRlbGVnYXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAyMzM1NGY0Nzg0
ZGUwOTJmMDQ4N2MxODU0ZmM1YjI2YTVlMjIxMWFjLi5lYzNiYjZlZjQzMjQ1ZTllMzkyOThiMDFm
ZmQyN2I2YmFlOWM2MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0yNiwyNTMgKzI2LDM0OCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKIAot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKKyNpbmNsdWRl
ICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgi
CiAjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9u
L0FWQXNzZXRXcml0ZXIuaD4KICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcklu
cHV0Lmg+CisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJfUHJpdmF0ZS5oPgor
I2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW5j
bHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAogI2ltcG9ydCA8
cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKLSN1bmRlZiBBVkVuY29kZXJCaXRS
YXRlS2V5Ci0jZGVmaW5lIEFWRW5jb2RlckJpdFJhdGVLZXkgZ2V0QVZFbmNvZGVyQml0UmF0ZUtl
eVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZGb3JtYXRJREtleQotI2RlZmluZSBBVkZvcm1hdElE
S2V5IGdldEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQotI3VuZGVmIEFWTnVtYmVyT2ZDaGFu
bmVsc0tleQotI2RlZmluZSBBVk51bWJlck9mQ2hhbm5lbHNLZXkgZ2V0QVZOdW1iZXJPZkNoYW5u
ZWxzS2V5V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBBVlNhbXBsZVJhdGVLZXkKLSNkZWZpbmUgQVZT
YW1wbGVSYXRlS2V5IGdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCitAaW50ZXJmYWNl
IFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxBVkFzc2V0V3JpdGVyRGVsZWdh
dGU+IHsKKyAgICBXZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBt
X3dyaXRlcjsKK30KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoV3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciopd3JpdGVyOwor
LSAodm9pZCljbG9zZTsKIAotdXNpbmcgbmFtZXNwYWNlIFBBTDsKK0BlbmQKIAotc3RhdGljIE5T
U3RyaW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKK0BpbXBsZW1lbnRhdGlvbiBX
ZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgeworfTsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
V3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciopd3JpdGVyCiB7Ci0g
ICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgpKQotICAgICAg
ICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKTsKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKHNl
bGYpCisgICAgICAgIHNlbGYtPm1fd3JpdGVyID0gbWFrZVdlYWtQdHIod3JpdGVyKTsKIAotICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZGb3JtYXRJREtleSIp
OwotICAgIHJldHVybiBAIkFWRm9ybWF0SURLZXkiOworICAgIHJldHVybiBzZWxmOwogfQogCi1z
dGF0aWMgTlNTdHJpbmcgKmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCist
ICh2b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVj
ZUZyYWdtZW50ZWRIZWFkZXJEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkSGVhZGVyRGF0YQogewot
ICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgp
KQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVs
c0tleSgpOworICAgIFVOVVNFRF9QQVJBTShhc3NldFdyaXRlcik7CisgICAgaWYgKCFpc01haW5U
aHJlYWQoKSkgeworICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRIZWFkZXJEYXRh
IGxlbmd0aF0pIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYg
PSBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVyID0gV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFn
bWVudGVkSGVhZGVyRGF0YSBieXRlc10pLCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBpZiAocHJvdGVjdGVkU2VsZi0+bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAgIHBy
b3RlY3RlZFNlbGYtPm1fd3JpdGVyLT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVk51bWJlck9mQ2hhbm5lbHNL
ZXkiKTsKLSAgICByZXR1cm4gQCJBVk51bWJlck9mQ2hhbm5lbHNLZXkiOworICAgIGlmIChtX3dy
aXRlcikKKyAgICAgICAgbV93cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRlc10pLCBbZnJhZ21lbnRlZEhlYWRlckRhdGEg
bGVuZ3RoXSk7CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZh
bGxiYWNrKCkKKy0gKHZvaWQpYXNzZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRl
ciBkaWRQcm9kdWNlRnJhZ21lbnRlZE1lZGlhRGF0YTooTlNEYXRhICopZnJhZ21lbnRlZE1lZGlh
RGF0YSBmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0OihBVkZyYWdtZW50ZWRNZWRpYURhdGFSZXBv
cnQgKilmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0CiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9B
VkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9B
VkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCk7CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3Jp
dGVyKTsKKyAgICBVTlVTRURfUEFSQU0oZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCk7CisgICAg
aWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50
ZWRNZWRpYURhdGEgbGVuZ3RoXSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBi
dWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4oW2ZyYWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyKQorICAgICAgICAgICAg
ICAgICAgICBwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZl
cikpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZTYW1wbGVS
YXRlS2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZTYW1wbGVSYXRlS2V5IjsKKyAgICBpZiAobV93cml0
ZXIpCisgICAgICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihbZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5n
dGhdKTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZh
bGxiYWNrKCkKKy0gKHZvaWQpY2xvc2UKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRh
dGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZv
dW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgpOworICAgIG1fd3JpdGVyID0gbnVsbHB0cjsK
K30KKworQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBQQUw7
CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRW5jb2Rl
ckJpdFJhdGVLZXkiKTsKLSAgICByZXR1cm4gQCJBVkVuY29kZXJCaXRSYXRlS2V5IjsKK1JlZlB0
cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgYXV0
byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGhhc0F1
ZGlvLCB3aWR0aCAmJiBoZWlnaHQpKTsKKyAgICBpZiAoIXdyaXRlci0+aW5pdGlhbGl6ZSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gd3JpdGVyOwogfQogCi1SZWZQdHI8
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpj
cmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNvbnN0IE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKQordm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCAqbWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pCiB7Ci0g
ICAgaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKLSAgICBpZiAodmlkZW9UcmFjaykgewotICAg
ICAgICBhdXRvJiBzZXR0aW5ncyA9IHZpZGVvVHJhY2stPnNldHRpbmdzKCk7Ci0gICAgICAgIHdp
ZHRoID0gc2V0dGluZ3Mud2lkdGgoKTsKLSAgICAgICAgaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0
KCk7Ci0gICAgfQotICAgIHJldHVybiBjcmVhdGUoISFhdWRpb1RyYWNrLCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICBhdXRvICp3cml0ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcio+KG1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKTsKKyAgICB3cml0ZXItPnByb2Nlc3NO
ZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCk7CiB9CiAKLVJlZlB0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShib29s
IGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkICptZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbikKIHsKLSAg
ICBOU1N0cmluZyAqZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KEAidmlkZW9zIik7Ci0gICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIvJWxsZC5tcDQiLCBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRp
bWVDbG9jaygpKS52YWx1ZV07Ci0gICAgTlNTdHJpbmcgKnBhdGggPSBbZGlyZWN0b3J5IHN0cmlu
Z0J5QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1lXTsKKyAgICBhdXRvICp3cml0ZXIgPSBzdGF0aWNf
Y2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcio+KG1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKTsKKyAgICB3cml0ZXItPnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJz
KCk7Cit9CisKK01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcihib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKQorICAgIDogbV9oYXNBdWRpbyho
YXNBdWRpbykKKyAgICAsIG1faGFzVmlkZW8oaGFzVmlkZW8pCit7Cit9CisKK01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQoreworICAgIGNs
ZWFyKCk7Cit9CiAKLSAgICBOU1VSTCAqb3V0cHV0VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpwYXRoXTsKLSAgICBTdHJpbmcgZmlsZVBhdGggPSBbcGF0aCBVVEY4U3RyaW5nXTsKK2Jvb2wg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmluaXRpYWxpemUoKQorewogICAgIE5TRXJyb3Ig
KmVycm9yID0gbmlsOwotICAgIGF1dG8gYXZBc3NldFdyaXRlciA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0aFVSTDpvdXRwdXRVUkwgZmlsZVR5cGU6
QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOworICAgIG1fd3JpdGVyID0gYWRvcHROUyhb
UEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRXaXRoRmlsZVR5cGU6QVZGaWxl
VHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNl
IGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29kZSk7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0
byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFdURk1v
dmUoYXZBc3NldFdyaXRlciksIFdURk1vdmUoZmlsZVBhdGgpKSk7CisgICAgbV93cml0ZXJEZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRo
V3JpdGVyOiB0aGlzXSk7CisgICAgW21fd3JpdGVyLmdldCgpIHNldERlbGVnYXRlOm1fd3JpdGVy
RGVsZWdhdGUuZ2V0KCldOwogCi0gICAgaWYgKGhhc0F1ZGlvICYmICF3cml0ZXItPnNldEF1ZGlv
SW5wdXQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAod2lkdGggJiYgaGVp
Z2h0KSB7Ci0gICAgICAgIGlmICghd3JpdGVyLT5zZXRWaWRlb0lucHV0KHdpZHRoLCBoZWlnaHQp
KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKG1faGFzQXVkaW8pIHsKKyAg
ICAgICAgbV9hdWRpb0NvbXByZXNzb3IgPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNy
ZWF0ZShjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7CisgICAgICAg
IGlmICghbV9hdWRpb0NvbXByZXNzb3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotCi0gICAgcmV0dXJuIFdURk1vdmUod3JpdGVyKTsKKyAgICBpZiAobV9oYXNWaWRlbykgewor
ICAgICAgICBtX3ZpZGVvQ29tcHJlc3NvciA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
Y3JlYXRlKGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQsIGNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZl
ckNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgaWYgKCFtX3ZpZGVvQ29tcHJlc3NvcikKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLU1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRhaW5Q
dHI8QVZBc3NldFdyaXRlcj4mJiBhdkFzc2V0V3JpdGVyLCBTdHJpbmcmJiBmaWxlUGF0aCkKLSAg
ICA6IG1fd3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRlcikpCi0gICAgLCBtX3BhdGgoV1RGTW92
ZShmaWxlUGF0aCkpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3
Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpCiB7CisgICAgQVNTRVJUKG1faGFzVmlkZW8p
OworICAgIGlmICghbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIG1fdmlkZW9G
b3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24obV92
aWRlb0NvbXByZXNzb3ItPmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpKTsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10geworICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIGlmIChtX2hhc0F1ZGlvICYmICFtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24pCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAg
ICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCisgICAgICAgIHJl
dHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOwogfQogCi1NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKK3ZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1w
bGVCdWZmZXJzKCkKIHsKLSAgICBjbGVhcigpOworICAgIEFTU0VSVChtX2hhc0F1ZGlvKTsKKyAg
ICBpZiAoIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAgICBtX2F1ZGlvRm9ybWF0
RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKG1fYXVkaW9D
b21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVCdWZmZXIoKSk7CisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXNdIHsKKyAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiAobV9oYXNWaWRlbyAmJiAhbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc3RhcnRBc3NldFdyaXRlcigp
OworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKQorICAg
ICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKIH0KIAot
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlcigpCiB7Ci0gICAgaWYgKG1fdmlkZW9J
bnB1dCkgewotICAgICAgICBtX3ZpZGVvSW5wdXQuY2xlYXIoKTsKLSAgICAgICAgZGlzcGF0Y2hf
cmVsZWFzZShtX3ZpZGVvUHVsbFF1ZXVlKTsKKyAgICBpZiAobV9oYXNWaWRlbykgeworICAgICAg
ICBtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3Jp
dGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0
cHV0U2V0dGluZ3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6bV92aWRlb0Zvcm1hdERlc2NyaXB0aW9u
LmdldCgpXSk7CisgICAgICAgIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVk
aWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2Fu
QWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgdmlkZW8iKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5w
dXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOwogICAgIH0KLSAgICBpZiAobV9hdWRp
b0lucHV0KSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRj
aF9yZWxlYXNlKG1fYXVkaW9QdWxsUXVldWUpOworICAgIAorICAgIGlmIChtX2hhc0F1ZGlvKSB7
CisgICAgICAgIG1fYXVkaW9Bc3NldFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FW
QXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVB
dWRpbyBvdXRwdXRTZXR0aW5nczpuaWwgc291cmNlRm9ybWF0SGludDptX2F1ZGlvRm9ybWF0RGVz
Y3JpcHRpb24uZ2V0KCldKTsKKyAgICAgICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IHNldEV4
cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOworICAgICAgICBpZiAoIVttX3dyaXRlci5n
ZXQoKSBjYW5BZGRJbnB1dDptX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0pIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIGNhbkFkZElucHV0IGZvciBhdWRpbyIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFttX3dyaXRlci5nZXQo
KSBhZGRJbnB1dDptX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV07CisgICAgfQorICAgIAor
ICAgIGlmICghW21fd3JpdGVyLmdldCgpIHN0YXJ0V3JpdGluZ10pIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3Rh
cnRBc3NldFdyaXRlciBmYWlsZWQgc3RhcnRXcml0aW5nIik7CisgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgaWYgKG1fd3JpdGVyKQotICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogCi0gICAg
bV9kYXRhID0gbnVsbHB0cjsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOworICAgIFttX3dyaXRlci5nZXQoKSBzdGFydFNlc3Npb25BdFNvdXJjZVRp
bWU6a0NNVGltZVplcm9dOworCisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsK
KworICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOwogfQogCi1ib29sIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhlaWdodCkKK2Jv
b2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBs
ZUJ1ZmZlcigpCiB7Ci0gICAgQVNTRVJUKCFtX3ZpZGVvSW5wdXQpOwotICAgIAotICAgIE5TRGlj
dGlvbmFyeSAqY29tcHJlc3Npb25Qcm9wZXJ0aWVzID0gQHsKLSAgICAgICAgQVZWaWRlb0F2ZXJh
Z2VCaXRSYXRlS2V5IDogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAx
Ml0sCi0gICAgICAgIEFWVmlkZW9FeHBlY3RlZFNvdXJjZUZyYW1lUmF0ZUtleSA6IEAoMzApLAot
ICAgICAgICBBVlZpZGVvTWF4S2V5RnJhbWVJbnRlcnZhbEtleSA6IEAoMTIwKSwKLSAgICAgICAg
QVZWaWRlb1Byb2ZpbGVMZXZlbEtleSA6IEFWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9M
ZXZlbAotICAgIH07Ci0KLSAgICBOU0RpY3Rpb25hcnkgKnZpZGVvU2V0dGluZ3MgPSBAewotICAg
ICAgICBBVlZpZGVvQ29kZWNLZXk6IEFWVmlkZW9Db2RlY0gyNjQsCi0gICAgICAgIEFWVmlkZW9X
aWR0aEtleTogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6d2lkdGhdLAotICAgICAgICBBVlZpZGVv
SGVpZ2h0S2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpoZWlnaHRdLAotICAgICAgICBBVlZp
ZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5OiBjb21wcmVzc2lvblByb3BlcnRpZXMKLSAgICB9
OwotICAgIAotICAgIG1fdmlkZW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3Jp
dGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0
cHV0U2V0dGluZ3M6dmlkZW9TZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5pbF0pOwotICAgIFtt
X3ZpZGVvSW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07Ci0gICAgCi0g
ICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV92aWRlb0lucHV0LmdldCgpXSkgewotICAg
ICAgICBtX3ZpZGVvSW5wdXQgPSBudWxscHRyOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgInRoZSB2aWRlbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhl
IEFWQXNzZXRXcml0ZXIiKTsKKyAgICBpZiAoIW1fYXVkaW9Db21wcmVzc29yKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFttX3dyaXRlciBhZGRJbnB1dDptX3ZpZGVvSW5wdXQu
Z2V0KCldOwotICAgIG1fdmlkZW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldl
YkNvcmVWaWRlb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklB
TCk7CisKKyAgICBpZiAoIVttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1l
ZGlhRGF0YV0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gYnVmZmVyID0gbV9h
dWRpb0NvbXByZXNzb3ItPnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0
LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRBdWRpb0lucHV0KCkK
K2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1Nh
bXBsZUJ1ZmZlcigpCiB7Ci0gICAgQVNTRVJUKCFtX2F1ZGlvSW5wdXQpOworICAgIGlmICghbV92
aWRlb0NvbXByZXNzb3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5TRGljdGlvbmFy
eSAqYXVkaW9TZXR0aW5ncyA9IEB7Ci0gICAgICAgIEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4
MDAwKSwKLSAgICAgICAgQVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAot
ICAgICAgICBBVk51bWJlck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAotICAgICAgICBBVlNhbXBsZVJh
dGVLZXkgOiBAKDIyMDUwKQotICAgIH07CisgICAgaWYgKCFbbV92aWRlb0Fzc2V0V3JpdGVySW5w
dXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBtX2F1ZGlvSW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5z
dGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdz
OmF1ZGlvU2V0dGluZ3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsKLSAgICBbbV9hdWRpb0lucHV0
IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOwotICAgIAotICAgIGlmICghW21f
d3JpdGVyIGNhbkFkZElucHV0Om1fYXVkaW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV9hdWRp
b0lucHV0ID0gbnVsbHB0cjsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJ0aGUgYXVkaW8gaW5wdXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3Jp
dGVyIik7CisgICAgYXV0byBidWZmZXIgPSBtX3ZpZGVvQ29tcHJlc3Nvci0+dGFrZU91dHB1dFNh
bXBsZUJ1ZmZlcigpOworICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIFttX3dyaXRlciBhZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldOwotICAgIG1f
YXVkaW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVBdWRpb1JlY29y
ZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisKKyAgICBtX2xh
c3RWaWRlb1ByZXNlbnRhdGlvblRpbWUgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRp
bWVTdGFtcChidWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lID0gQ01T
YW1wbGVCdWZmZXJHZXREZWNvZGVUaW1lU3RhbXAoYnVmZmVyLmdldCgpKTsKKyAgICBtX2hhc0Vu
Y29kZWRWaWRlb1NhbXBsZXMgPSB0cnVlOworCisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0
LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVl
OwogfQogCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2Vk
U2FtcGxlQnVmZmVycygpCit7CisgICAgd2hpbGUgKGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBs
ZUJ1ZmZlcigpIHx8IGFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpKSB7IH07Cit9
CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1h
cmtlcihBVkFzc2V0V3JpdGVySW5wdXQgKmFzc2V0V3JpdGVySW5wdXQsIENNVGltZSBwcmVzZW50
YXRpb25UaW1lU3RhbXAsIENNVGltZSBkZWNvZGluZ1RpbWVTdGFtcCkKK3sKKyAgICBDTVNhbXBs
ZVRpbWluZ0luZm8gdGltaW5nSW5mbyA9IHsga0NNVGltZUludmFsaWQsIHByZXNlbnRhdGlvblRp
bWVTdGFtcCwgZGVjb2RpbmdUaW1lU3RhbXB9OworCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgYnVm
ZmVyID0gTlVMTDsKKyAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgTlVMTCwgdHJ1ZSwgTlVMTCwgTlVMTCwgTlVMTCwgMCwgMSwgJnRpbWlu
Z0luZm8sIDAsIE5VTEwsICZidWZmZXIpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFw
cGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2VyIGZhaWxlZCBDTVNhbXBsZUJ1ZmZl
ckNyZWF0ZSB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1
dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRihidWZmZXIpOworCisgICAgQ01TZXRBdHRhY2htZW50
KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRzUHJl
dmlvdXNTYW1wbGVEdXJhdGlvbiwga0NGQm9vbGVhblRydWUsIGtDTUF0dGFjaG1lbnRNb2RlX1No
b3VsZFByb3BhZ2F0ZSk7CisgICAgaWYgKCFbYXNzZXRXcml0ZXJJbnB1dCBhcHBlbmRTYW1wbGVC
dWZmZXI6c2FtcGxlQnVmZmVyLmdldCgpXSkKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRTYW1wbGVCdWZmZXIg
dG8gd3JpdGVyIGlucHV0IGZhaWxlZCIpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjphcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2hhc0Vu
Y29kZWRWaWRlb1NhbXBsZXMpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVh
ZHlGb3JNb3JlTWVkaWFEYXRhXSkgeworICAgICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVE
dXJhdGlvbk1hcmtlcihtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9Q
cmVzZW50YXRpb25UaW1lLCBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2Nr
ID0gbWFrZUJsb2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgICAgICBpZiAod2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGFwcGVuZEVuZHNQcmV2aW91c1Nh
bXBsZUR1cmF0aW9uTWFya2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpLCBtX2xhc3RW
aWRlb1ByZXNlbnRhdGlvblRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsKKyAgICAgICAg
ICAgIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBtYXJrQXNGaW5pc2hlZF07CisgICAgICAgIH0K
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKyAgICBbbV92aWRlb0Fzc2V0
V3JpdGVySW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOmJsb2NrLmdldCgpXTsKK30KKwordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXBwZW5kQ29t
cHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKyAgICBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRp
b25JZk5lZWRlZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKCkKK3sKKyAgICBpZiAobV93cml0ZXIpCisgICAg
ICAgIG1fd3JpdGVyLmNsZWFyKCk7CisKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5k
bGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKKwogc3RhdGlj
IGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZmZXJXaXRo
Q3VycmVudFRpbWVTdGFtcChDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikKIHsKICAg
ICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xv
Y2soKSk7CiAgICAgQ01JdGVtQ291bnQgY291bnQgPSAwOwogICAgIENNU2FtcGxlQnVmZmVyR2V0
U2FtcGxlVGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCAwLCBuaWwsICZjb3VudCk7Ci0g
ICAgCisKICAgICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3VudCk7CiAg
ICAgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIs
IGNvdW50LCB0aW1lSW5mby5kYXRhKCksICZjb3VudCk7Ci0gICAgCi0gICAgZm9yIChDTUl0ZW1D
b3VudCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKworICAgIGZvciAoYXV0byBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKICAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1wID0ga0NN
VGltZUludmFsaWQ7CiAgICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9
IHN0YXJ0VGltZTsKICAgICB9Ci0gICAgCisKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdCdWZm
ZXIgPSBudWxscHRyOwotICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlX
aXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwg
dGltZUluZm8uZGF0YSgpLCAmbmV3QnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYgKGF1
dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAmbmV3
QnVmZmVyKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyIENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1p
bmcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KICAgICByZXR1cm4gYWRvcHRDRihuZXdCdWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJl
ZiBzYW1wbGVCdWZmZXIpCiB7Ci0gICAgQVNTRVJUKG1fdmlkZW9JbnB1dCk7Ci0gICAgaWYgKG1f
aXNTdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRp
bmcpIHsKLSAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewotICAgICAgICAg
ICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJv
ciBjb2RlICVsZCIsIChsb25nKVttX3dyaXRlciBlcnJvcl0pOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6
Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICBtX2hh
c1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fdmlkZW9JbnB1dCBy
ZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX3ZpZGVvUHVsbFF1ZXVlIHVzaW5nQmxv
Y2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAg
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGlzUmVhZHlG
b3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX3ZpZGVvQnVmZmVyUG9vbC50
YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5n
ZXQoKV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSB3aGlsZSAo
dHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV92aWRlb0J1ZmZlclBvb2wu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgW21fdmlkZW9JbnB1dCBtYXJrQXNGaW5pc2hl
ZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmUuc2lnbmFs
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJy
ZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7Ci0gICAgaWYgKCFidWZmZXJXaXRoQ3VycmVudFRp
bWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRl
b0xvY2spOwotICAgIG1fdmlkZW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcldpdGhD
dXJyZW50VGltZSkpOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHNldCB0aGUgdGltZXN0
YW1wcyBpZiB0aGV5IGFyZSBhbHJlYWR5IHNldC4KKyAgICBpZiAoYXV0byBidWZmZXJXaXRoQ3Vy
cmVudFRpbWUgPSBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2FtcGxlQnVm
ZmVyKSkKKyAgICAgICAgbV92aWRlb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihidWZmZXJX
aXRoQ3VycmVudFRpbWUuZ2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTUZv
cm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQpAQCAtMjgwLDY4ICszNzUsMzkgQEAg
c3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVk
aW9Gb3JtYXREZXNjcmlwdGlvbihjb24KICAgICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6
OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0
Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYgZm9ybWF0ID0gbnVsbHB0cjsKICAgICBhdXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24sIDAsIE5V
TEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXQpOwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJy
b3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1
cm4gYWRvcHRDRihmb3JtYXQpOwogfQogCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBs
ZUJ1ZmZlclJlZj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25z
KENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0LCBzaXplX3Qgc2FtcGxlQ291bnQpCi17Ci0g
ICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNs
b2NrKCkpOwotICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7Ci0g
ICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3Jp
cHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3Jt
YXQsIHNhbXBsZUNvdW50LCBzdGFydFRpbWUsIE5VTEwsICZzYW1wbGVCdWZmZXIpOwotICAgIGlm
IChlcnJvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0Q0Yoc2Ft
cGxlQnVmZmVyKTsKLX0KLQotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
QXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYs
IHNpemVfdCBzYW1wbGVDb3VudCkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVm
ZmVyUmVmPiBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYg
ZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdU
Rjo6TWVkaWFUaW1lJiB0aW1lLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7Ci0gICAgQVNTRVJUKG1f
YXVkaW9JbnB1dCk7Ci0gICAgaWYgKCghbV9oYXNTdGFydGVkV3JpdGluZyAmJiBtX3ZpZGVvSW5w
dXQpIHx8IG1faXNTdG9wcGVkKQotICAgICAgICByZXR1cm47CiAgICAgYXV0byBmb3JtYXQgPSBj
cmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKICAgICBpZiAoIWZvcm1h
dCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2lzRmlyc3RBdWRpb1NhbXBsZSkgewotICAg
ICAgICBpZiAoIW1fdmlkZW9JbnB1dCkgewotICAgICAgICAgICAgLy8gYXVkaW8tb25seSByZWNv
cmRpbmcuCi0gICAgICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7Ci0gICAg
ICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJj
ZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAg
ICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgbV9p
c0ZpcnN0QXVkaW9TYW1wbGUgPSBmYWxzZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fYXVkaW9JbnB1
dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX2F1ZGlvUHVsbFF1ZXVlIHVzaW5n
QmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0g
ICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV9hdWRpb0lucHV0IGlzUmVh
ZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyUG9v
bC50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAg
ICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0
KCldOwotICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0
b3BwZWQgJiYgbV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
W21fYXVkaW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hX
cml0aW5nQXVkaW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1d
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJD
cmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGZh
bHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50LCB0b0NNVGltZSh0aW1l
KSwgTlVMTCwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgY3Jl
YXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CisgICAgYXV0byBidWZm
ZXIgPSBhZG9wdENGKHNhbXBsZUJ1ZmZlcik7CiAKLSAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNy
ZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhmb3JtYXQuZ2V0KCks
IHNhbXBsZUNvdW50KTsKLSAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOwot
ICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZm
ZXJMaXN0KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkp
OwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuOworICAgIGVycm9yID0gQ01TYW1wbGVC
dWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdChidWZmZXIuZ2V0KCksIGtDRkFs
bG9jYXRvckRlZmF1bHQsIGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlv
QnVmZmVyTGlzdD4oZGF0YSkubGlzdCgpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBD
TVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0IGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJu
IGJ1ZmZlcjsKK30KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb0xvY2spOwot
ICAgIG1fYXVkaW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKHNhbXBsZUJ1ZmZlcikpOwordm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgc2l6ZV90IHNhbXBsZUNv
dW50KQoreworICAgIGlmIChhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVm
ZmVyKGRhdGEsIGRlc2NyaXB0aW9uLCB0aW1lLCBzYW1wbGVDb3VudCkpCisgICAgICAgIG1fYXVk
aW9Db21wcmVzc29yLT5hZGRTYW1wbGVCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKTsKIH0KIAog
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCkBAIC0zNTAs
MzUgKzQxNiw0MCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3Jk
aW5nKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworCisgICAg
aWYgKG1fdmlkZW9Db21wcmVzc29yKQorICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+ZmluaXNo
KCk7CisgICAgaWYgKG1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nv
ci0+ZmluaXNoKCk7CisKICAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCiAgICAgICAgIHJl
dHVybjsKICAgICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZBc3NldFdyaXRlclN0YXR1
c1dyaXRpbmcpOwotICAgIGlmIChtX3ZpZGVvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGlu
Z1ZpZGVvU2VtYXBob3JlLndhaXQoKTsKLQotICAgIGlmIChtX2F1ZGlvSW5wdXQpCi0gICAgICAg
IG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKIAogICAgIG1faXNTdG9wcGlu
ZyA9IHRydWU7Ci0gICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6W3RoaXMsIHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3ZlKHdlYWtQdHIpLCBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpXSgp
IG11dGFibGUgewotICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBp
ZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgICAgICBtX2ZldGNo
RGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgIGZsdXNoQ29t
cHJlc3NlZFNhbXBsZUJ1ZmZlcnMoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
KCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2hhc1N0
YXJ0ZWRXcml0aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9
IHRydWU7Ci0gICAgICAgICAgICBjbGVhcigpOwotICAgICAgICB9KTsKLSAgICAgICAgbV9maW5p
c2hXcml0aW5nU2VtYXBob3JlLnNpZ25hbCgpOwotICAgIH1dOwotICAgIG1fZmluaXNoV3JpdGlu
Z1NlbWFwaG9yZS53YWl0KCk7CisgICAgICAgIFttX3dyaXRlciBmbHVzaF07CisgICAgICAgIFtt
X3dyaXRlciBmaW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhp
cyA9IFdURk1vdmUod2Vha1RoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFdURk1vdmUobV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNs
ZWFyKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfV07CisgICAgfSk7CiB9CiAKIHZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMzky
LDYgKzQ2MywyNCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQgogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYg
KCFtX2RhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
c2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwg
c2l6ZSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAgICAg
ICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IG1fZGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJ
T04pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZTQyODkzNTIzNjBjYjE3ODAwZGQwNmU2YjViMTUzODc5NjJjNzllCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCwwICsxLDcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNF
KEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbmNs
dWRlIDxWaWRlb1Rvb2xib3gvVlRFcnJvcnMuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01T
YW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRD
b21wcmVzc2lvblNlc3Npb24gKlZUQ29tcHJlc3Npb25TZXNzaW9uUmVmOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IGNyZWF0ZShDTVZpZGVvQ29kZWNUeXBlLCBD
TUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7CisgICAg
flZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpOworCisgICAgdm9pZCBmaW5pc2goKTsKKyAg
ICB2b2lkIGFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CisgICAgQ01TYW1wbGVC
dWZmZXJSZWYgZ2V0T3V0cHV0U2FtcGxlQnVmZmVyKCk7CisgICAgUmV0YWluUHRyPENNU2FtcGxl
QnVmZmVyUmVmPiB0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKENNVmlkZW9Db2RlY1R5cGUpOworCisg
ICAgYm9vbCBpbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrT2JqZWN0KTsKKworICAgIHZvaWQgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1
ZmZlclJlZik7CisgICAgYm9vbCBpbml0Q29tcHJlc3Npb25TZXNzaW9uKENNVmlkZW9Gb3JtYXRE
ZXNjcmlwdGlvblJlZik7CisKKyAgICBzdGF0aWMgdm9pZCB2aWRlb0NvbXByZXNzaW9uQ2FsbGJh
Y2sodm9pZCAqcmVmQ29uLCB2b2lkKiwgT1NTdGF0dXMsIFZURW5jb2RlSW5mb0ZsYWdzLCBDTVNh
bXBsZUJ1ZmZlclJlZik7CisKKyAgICBkaXNwYXRjaF9xdWV1ZV90IG1fc2VyaWFsRGlzcGF0Y2hR
dWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1
ZTsKKyAgICBSZXRhaW5QdHI8VlRDb21wcmVzc2lvblNlc3Npb25SZWY+IG1fdnRTZXNzaW9uOwor
CisgICAgYm9vbCBtX2lzRW5jb2RpbmcgeyBmYWxzZSB9OworCisgICAgQ01WaWRlb0NvZGVjVHlw
ZSBtX291dHB1dENvZGVjVHlwZTsKKyAgICBmbG9hdCBtX21heEtleUZyYW1lSW50ZXJ2YWxEdXJh
dGlvbiB7IDIuMCB9OworICAgIHVuc2lnbmVkIG1fZXhwZWN0ZWRGcmFtZVJhdGUgeyAzMCB9Owor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA4ZmU0MzI5NWVmNTJhNjc5MGZmMWRlY2FjYTZmMzBk
OWJiYmFmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0wLDAgKzEs
MTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxDb3JlTWVk
aWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBv
cnQgPFZpZGVvVG9vbGJveC9WVENvbXByZXNzaW9uU2Vzc2lvbi5oPgorI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CisKKyNpbXBvcnQgPHBhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5oPgor
Cit1c2luZyBuYW1lc3BhY2UgUEFMOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6dW5p
cXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6Y3JlYXRlKENNVmlkZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlLCBDTUJ1ZmZl
clF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sK
KyAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yPihuZXcgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKG91dHB1dENvZGVjVHlw
ZSkpOworICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShjYWxsYmFjaywgY2FsbGJhY2tP
YmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29tcHJlc3NvcjsK
K30KKworVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUpCisgICAgOiBtX3NlcmlhbERp
c3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICAsIG1fb3V0
cHV0Q29kZWNUeXBlIHsgb3V0cHV0Q29kZWNUeXBlIH0KK3sKK30KKworVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKK3sKKyAgICBpZiAo
bV9zZXJpYWxEaXNwYXRjaFF1ZXVlKQorICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VyaWFs
RGlzcGF0Y2hRdWV1ZSk7Cit9CisKK2Jvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrT2JqZWN0KQoreworICAgIENNQnVmZmVyUXVldWVSZWYgb3V0cHV0QnVmZmVyUXVldWU7
CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZl
cnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB1bmFibGUgdG8gY3JlYXRl
IGJ1ZmZlciBxdWV1ZSAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBtX291dHB1dEJ1ZmZlclF1ZXVlID0gb3V0cHV0QnVmZmVyUXVldWU7CisgICAgQ01CdWZm
ZXJRdWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGNhbGxiYWNr
LCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVyUXVldWVUcmlnZ2VyX1doZW5EYXRhQmVjb21lc1Jl
YWR5LCBrQ01UaW1lWmVybywgTlVMTCk7CisKKyAgICBtX2lzRW5jb2RpbmcgPSB0cnVlOworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Zmlu
aXNoKCkKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAg
ICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMobV92
dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZU
Q29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisKKyAgICAgICAgZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1
ZmZlclF1ZXVlLmdldCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1l
ZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJr
RW5kT2ZEYXRhIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgICAgIG1faXNFbmNvZGlu
ZyA9IGZhbHNlOworICAgIH0pOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9TU3RhdHVz
IHN0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sK
KyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihzdGF0dXMsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayBzdGF0dXMgaXMgJWQi
LCBzdGF0dXMpOworICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciAqY29tcHJlc3NvciA9IHN0YXRpY19jYXN0
PFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcio+KHJlZkNvbik7CisKKyAgICBhdXRvIGVycm9y
ID0gQ01CdWZmZXJRdWV1ZUVucXVldWUoY29tcHJlc3Nvci0+bV9vdXRwdXRCdWZmZXJRdWV1ZS5n
ZXQoKSwgYnVmZmVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJl
YW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7Cit9CisKK2Jvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjppbml0Q29tcHJlc3Npb25TZXNzaW9uKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBm
b3JtYXREZXNjcmlwdGlvbikKK3sKKyAgICBDTVZpZGVvRGltZW5zaW9ucyBkaW1lbnNpb25zID0g
Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlvbik7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIE5TRGljdGlvbmFyeSAqZW5jb2RlclNwZWNpZmljYXRp
b25zID0gbmlsOworI2Vsc2UKKyAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJTcGVjaWZpY2F0aW9u
cyA9IEB7KF9fYnJpZGdlIE5TU3RyaW5nICopa1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9F
bmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyOkBZRVN9OworI2VuZGlmCisKKyAg
ICBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiB2dFNlc3Npb247CisgICAgYXV0byBlcnJvciA9IFZU
Q29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRpbWVuc2lvbnMu
d2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBtX291dHB1dENvZGVjVHlwZSwgKF9fYnJpZGdlIENG
RGljdGlvbmFyeVJlZillbmNvZGVyU3BlY2lmaWNhdGlvbnMsIE5VTEwsIE5VTEwsIHZpZGVvQ29t
cHJlc3Npb25DYWxsYmFjaywgdGhpcywgJnZ0U2Vzc2lvbik7CisgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorICAgIG1fdnRTZXNzaW9uID0gYWRvcHRD
Rih2dFNlc3Npb24pOworCisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vz
c2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwga0NGQm9vbGVh
blRydWUpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVz
c2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgIGVy
cm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNz
aW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uLCAoX19icmlkZ2UgQ0ZU
eXBlUmVmKUAobV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24pKTsKKyAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlG
cmFtZUludGVydmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgZXJyb3Ig
PSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Q
cm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1fZXhw
ZWN0ZWRGcmFtZVJhdGUpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFT
dHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkg
a1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKKworICAgIC8vIEZJWE1FOiBTZXQgdmlkZW8gY29tcHJlc3Npb24gcmF0ZS4K
KyAgICBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzKG1f
dnRTZXNzaW9uLmdldCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFT
dHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25Q
cmVwYXJlVG9FbmNvZGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICByZXR1
cm4gWUVTOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1Nh
bXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgaWYgKCFtX3Z0U2Vz
c2lvbikgeworICAgICAgICBpZiAoIWluaXRDb21wcmVzc2lvblNlc3Npb24oQ01TYW1wbGVCdWZm
ZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZl
cihidWZmZXIpOworICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZm
ZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICBhdXRvIGR1cmF0aW9uID0g
Q01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgIGF1dG8gZXJyb3IgPSBWVENv
bXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKG1fdnRTZXNzaW9uLmdldCgpLCBpbWFnZUJ1ZmZl
ciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgTlVMTCwgdGhpcywgTlVMTCk7Cisg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjph
ZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGRpc3BhdGNo
X3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBpZiAoIW1faXNFbmNvZGlu
ZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyKGJ1
ZmZlcik7CisgICAgfSk7Cit9CisKK0NNU2FtcGxlQnVmZmVyUmVmIFZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gKENNU2Ft
cGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0SGVhZChtX291
dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOworfQorCitSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJS
ZWY+IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigp
Cit7CisgICAgcmV0dXJuIGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZv
aWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX291dHB1dEJ1ZmZlclF1ZXVlLmdl
dCgpKSkpKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTZjZWU1NGM5N2M5MjE1
YTY4NzNmNGRjYjEyYmRlNDdjMWRjNDBlYy4uZjMxMGY0OGVkN2VkZTU4ZmUyZTViNzg0NjRmNjJj
OTBlMmQwMTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTQ5LDYgKzE0OSw3IEBAIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyCiAgICAgcmV0dXJuICptX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7
CiB9CiAKKyNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIFJlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYVJlY29yZGVyTWFuYWdl
cigpCiB7CiAgICAgaWYgKCFtX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyKQpAQCAtMTU2LDYg
KzE1Nyw3IEBAIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjptZWRpYVJlY29yZGVyTWFuYWdlcigpCiAKICAgICByZXR1cm4gKm1fcmVtb3RlTWVk
aWFSZWNvcmRlck1hbmFnZXI7CiB9CisjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciYgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6YXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcigpCkBAIC0xNzQsNyArMTc2
LDcgQEAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2FtcGxlQnVmZmVyRGkKICAgICByZXR1cm4gKm1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlcjsKIH0KICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gIFBMQVRG
T1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIFVTRShMSUJXRUJSVEMpCiBMaWJXZWJSVENDb2RlY3NQcm94eSYgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzUHJveHkoKQpAQCAtMjAzLDYgKzIwNSw3IEBAIHZv
aWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJCiAgICAgICAgIHVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQorI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRF
KQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAg
ICBtZWRpYVJlY29yZGVyTWFuYWdlcigpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTIxMSw2ICsyMTQsNyBA
QCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSQogICAgICAgICBtZWRpYVJlY29yZGVyTWFuYWdlcigp
LmRpZFJlY2VpdmVSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRpZiAvLyBIQVZFKEFWQVNTRVRXUklURVJE
RUxFR0FURSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKICAgICAgICAgYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcigpLmRpZFJlY2VpdmVNZXNzYWdl
RnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CkBAIC0yMjgsOCArMjMyLDggQEAg
dm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIEkKICAgICAgICAgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlcigpLmRpZFJlY2VpdmVMYXllck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1By
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgbGliV2ViUlRDQ29kZWNzUHJv
eHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKaW5kZXggMmI5YmQxZjg4N2JhZGFmYTRlYTVjNGJhMzQxNjlkOGI5NzhmZDYyZC4u
Nzg2NjNiY2RiYTA3MzJlZmY1YjExYjk0YzVkY2EyMzg4MmVlOWI4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC03
OSw3ICs3OSw5IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5JiB1c2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdB
VEUpCiAgICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXImIG1lZGlhUmVjb3JkZXJNYW5hZ2Vy
KCk7CisjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyJiBhdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyKCk7
CiAgICAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlcigpOwpAQCAtMTAyLDcgKzEwNCw5IEBAIHByaXZhdGU6CiAgICAg
UEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk+IG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKKyNpZiBIQVZFKEFWQVNT
RVRXUklURVJERUxFR0FURSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CisjZW5kaWYKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gbV9hdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCBjYjI0
ZGRiZjI3OWZiMjY1OTQ2YWExMjFjYjA3MjJiNjJiOGM2YWY3Li41NjhjMjgwMTcxOGZlOTBiOGJl
MDgyZmVhMzVlZTc1MGQ2M2RkYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyLmgiCiAK
LSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAj
aW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NB
UmluZ0J1ZmZlci5oPgpAQCAtMTM2LDQgKzEzNiw0IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRl
cjo6c3RvcFJlY29yZGluZygpCiAKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFW
RShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IGZmNWE4Mjk4NGZiMzk2NDFl
ZDFlNTYxNTQ4OThmOTUyNmM5YmQ1MmEuLmE4M2RhMzA1NTJlYjQxZWY5NTk0NGRiM2FhNTA0ZmZj
YTNmNjgzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAog
I2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCkBAIC04Miw0ICs4Miw0IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlmCisjZW5k
aWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIubWVzc2FnZXMuaW4KaW5kZXggNTRiYTY0ZDU2ZmJlYTMwZmNiYjM5NmRhZDVlYTNmYzMwYzk5
NWRlZS4uY2UzMmI3MDRlN2VjOGM0NzdiZTA1MWUyMGQ3ZDI3YWYwYzRmODIxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CiAjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1l
ZGlhUmVjb3JkZXIgTm90UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5n
ZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJh
bWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAppbmRleCAzNzBjZDliMzg3NTY5YTk4ZTg0
ZTE3ODA5ZjA4NWQ2MmIzYjZlOWQ2Li4wMTllNGI4NWYwZWViYjYyNGU1Njk1ODhhN2FhZTQ4NDIx
MjU4NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2Vy
LmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRF
KQogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlck1hbmFnZXIuaAppbmRleCA1NDcxYmJkNDg0ZGQ5YjNkMGM4ZWUzZGQ2MTFjMDVl
OTBkMDM2YzdjLi5hYjgwMWJjMTE0YzQ5MjNlYTlkNzkwZjkyM2M1MmRmNDlhYTExZTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAog
I2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgppbmRl
eCAzODdhNDEzNjFjZGJkOWI3ZWFlMmMzMzczNjUyYTk4ZjQ5MzRlMTc0Li5jNTE4NDEwY2I0OWZh
ZGE2ODhkMzc3ZDFkN2EwNmNkZTNiYWM3OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJl
Y29yZGVyTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAgICBDcmVhdGVSZWNvcmRlcihXZWJLaXQ6
Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkLCBib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBjcmVhdGlvbkVy
cm9yKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaApp
bmRleCA5ZjliMzBjNzYxNjIzZGQ5NDhkMjliZTBmMzdmMGFkMGY0N2U1YTlhLi5lMzhjNWQ2YzA1
ZDBkZmFmNDI2ODE5OTViOWUwNGY0ZTc2NDdmMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXJNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAK
aW5kZXggZGQ0MDkxOTg4YzEyNjg5NzViYjk3OTJlODMzN2M2ZTA2NTM3ZjNjOC4uNjdlM2VlNjUx
M2Q4ZmE0M2U4MWU4YjIyYzY1OGRmODk2NDA3Njg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNw
cApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlh
UmVjb3JkZXJQcml2YXRlLmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NF
VFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC0xNDYsNCAr
MTQ2LDQgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3RvcFJlY29yZGluZygpCiAKIH0K
IAotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCA2ZDlmYWJlM2VhNzI0NzNmNDU5OTBj
ZThhZDE3MmQwY2QwM2E4MTI2Li5kODBmY2Q3ZjE5ODg5NzUyNWM5ZWZmYzkxNzU3ZDIyZmMzMjNl
ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRF
KQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgpAQCAtNzMsNSArNzMsNSBAQCBwcml2YXRlOgogCiB9CiAK
LSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRF
TEVHQVRFKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCBiY2U3NzRhODgxZGNlYzc5
NDI2Mzc5Njg1NTJlM2NjYzdiYjM3NDBiLi5kOTU5YzkyNWZkZDNhMjIxYTM3YjFhMzcwN2M2ZGYx
YWQwMmEwZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZT4gTWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJp
dmF0ZShjb25zdCBNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKIHsKLSNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRXUklURVJE
RUxFR0FURSkKICAgICBpZiAobV91c2VHUFVQcm9jZXNzKQogICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZT4oc3RyZWFtKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg0NzBj
OTlmMDU2ZjhiZWU3Y2FhN2Q1MWFkOTUwZmZhYzc5MTBiOTkuLjBhZGYzNjAyZjEwNjBjNWY0YjVm
MzY2YTk2YTQwY2M1OTQ3ZGJlOTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMi0wNSAg
eW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2Ug
QVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgRGlzYWJsZSB0ZXN0cyBvbiBh
bGwgcGxhdGZvcm1zIGV4Y2VwdCB0aGUgb25lcyBzdXBwb3J0aW5nIEFWQXNzZXRXcml0ZXJEZWxl
Z2F0ZS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogaHR0cC93cHQv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUt
Z3B1cHJvY2Vzcy5odG1sOgorICAgICAgICBSZW1vdmUgd2ViIGF1ZGlvIGdlbmVyYXRpb24gc2lu
Y2UgdGhlcmUgc2VlbXMgdG8gYmUgc29tZSB1bnN0YWJpbGl0eSBpbiB3ZWIgYXVkaW8gLT4gc3Ry
ZWFtIC0+IG1lZGlhIHJlY29yZGVyLgorICAgICAgICB3aGljaCBzaG91bGQgYmUgZml4ZWQgYXMg
Zm9sbG93LXVwIHNwZWNpZmljIHBhdGNoZXMuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgIEVuYWJsZSBydW5uaW5nIHRlc3RzLgorCiAyMDIwLTAyLTA1
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmlt
YXRpb25zXSBDYW5jZWxpbmcgYW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9uIGJlZm9yZSBpdCB3YXMg
Y29tbWl0dGVkIGRvZXMgbm90IHByZXZlbnQgaXQgZnJvbSBwbGF5aW5nCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBjODY4MjM4ZjIyOGYyZWE0MjI5ODQ1YzBhNzczOWYxM2EwM2Y2ZjIyLi45OTg4OTRm
NTM5MmIxYTJmMDRmOGNkOTdiMDI1ODhkMTEzMWFhMWVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTMzMjksNyArMzMyOSwxMCBAQCB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy9jb3B5
LXRleC1pbWFnZS0yZC1mb3JtYXRzLmh0bWwgWyBTa2lwIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1h
bmNlL2NhbnZhcy9yYXBpZC1yZXNpemluZy5odG1sIFsgU2tpcCBdCiB3ZWJnbC8xLjAuMy9jb25m
b3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRyYXctYnVmZmVycy5odG1sIFsgU2tpcCBdCiAKLXdl
YmtpdC5vcmcvYi8xOTc2NzMgaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFW
LWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0K
KyMgTm90IHN1cHBvcnRlZCBieSBkZWZhdWx0CitodHRwL3dwdC9tZWRpYXJlY29yZGVyIFsgU2tp
cCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1yZWNvcmQg
WyBTa2lwIF0KK2Zhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLW1lZGlhLXJlY29yZGVyLmh0bWwgWyBT
a2lwIF0KIAogIyBUbyBhaWQgdHJhbnNpdGlvbiB0byBBTkdMRSBiYWNrZW5kIGZvciBXZWJHTCwg
c2tpcCBhbGwgb2YgV2ViR0wgMiB0ZXN0cyBmb3Igbm93LiAKICMgUmUtZW5hYmxlIGFzIGVhY2gg
Y2h1bmsgb2YgdGVzdHMgYXJlIHZlcmlmaWVkIHdpdGggQU5HTEUgYmFja2VuZC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1h
dWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZh
aWxhYmxlLWdwdXByb2Nlc3MuaHRtbAppbmRleCAzMzMwNmRlNzk0N2JiYjkyNTczOTRjM2JhMTk2
MjAxYjA1ODQ3ODhiLi44ODAxNDg2NTdlMjVkZGUzM2NiMTA5MzQ2ZDZjYmVhYWI3ZjljZWZiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZp
ZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sCkBAIC01NiwxNyArNTYsNyBAQAogICAg
IH0KIAogICAgIGFzeW5jX3Rlc3QodCA9PiB7Ci0gICAgICAgIGNvbnN0IGFjID0gbmV3IEF1ZGlv
Q29udGV4dCgpOwotICAgICAgICBjb25zdCBvc2MgPSBhYy5jcmVhdGVPc2NpbGxhdG9yKCk7Ci0g
ICAgICAgIGNvbnN0IGRlc3QgPSBhYy5jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7Ci0g
ICAgICAgIGNvbnN0IGF1ZGlvID0gZGVzdC5zdHJlYW07Ci0gICAgICAgIG9zYy5jb25uZWN0KGRl
c3QpOwotCiAgICAgICAgIGNvbnN0IHZpZGVvID0gY3JlYXRlVmlkZW9TdHJlYW0oKTsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyh2aWRlby5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwgMCwgInZpZGVv
IG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRoIG5vIGF1ZGlvIHRyYWNrIik7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHMoYXVkaW8uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgsIDEsICJhdWRpbyBtZWRpYXN0
cmVhbSBzdGFydHMgd2l0aCBvbmUgYXVkaW8gdHJhY2siKTsKLSAgICAgICAgdmlkZW8uYWRkVHJh
Y2soYXVkaW8uZ2V0QXVkaW9UcmFja3MoKVswXSk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHModmlk
ZW8uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgsIDEsICJ2aWRlbyBtZWRpYXN0cmVhbSBzdGFydHMg
d2l0aCBvbmUgYXVkaW8gdHJhY2siKTsKICAgICAgICAgY29uc3QgcmVjb3JkZXIgPSBuZXcgTWVk
aWFSZWNvcmRlcih2aWRlbyk7CiAgICAgICAgIGxldCBtb2RlID0gMDsKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2NGZmMjcwMWJhZTYyZTRiOTQ1MGUz
ODliNTBlYTRmOTNlOTNiYWEwLi40Y2E3N2RhYTFhOGIzODkwZmRiNzBhM2EwNmJkMWIwNWZlNDRj
MjliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTgy
OCw2ICsxODI4LDEwIEBAIHdlYmtpdC5vcmcvYi8xOTU2MzUgc2Nyb2xsaW5nY29vcmRpbmF0b3Iv
bWFjL211bHRpcGxlLWZpeGVkLmh0bWwgWyBQYXNzIFRpbWVvdXQKIFsgQ2F0YWxpbmErIF0gZmFz
dC90ZXh0L2Rlc2lnbi1zeXN0ZW0tdWktMTUuaHRtbCBbIFBhc3MgXQogWyBDYXRhbGluYSsgXSBm
YXN0L3RleHQvZGVzaWduLXN5c3RlbS11aS0xNi5odG1sIFsgUGFzcyBdCiAKK1sgQ2F0YWxpbmEr
IF0gaHR0cC93cHQvbWVkaWFyZWNvcmRlciBbIFBhc3MgRmFpbHVyZSBdIAorWyBDYXRhbGluYSsg
XSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1yZWNvcmQgWyBQ
YXNzIEZhaWx1cmUgXQorWyBDYXRhbGluYSsgXSBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1tZWRp
YS1yZWNvcmRlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KKwogd2Via2l0Lm9yZy9iLzIwMDEyOCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvdGhlLXZpZGVvLWVsZW1lbnQvdmlkZW9fdGltZXVwZGF0ZV9vbl9zZWVrLmh0bWwgWyBU
aW1lb3V0IFBhc3MgXQogCiAjIHJkYXI6Ly81NTQwNTg1MSAoWyBtYWNPUyBdIExheW91dCB0ZXN0
cyB3ZWJncHUvKi10cmlhbmdsZS1zdHJpcC5odG1sIGFyZSBmbGFreSBmYWlsdXJlcy4gKDIwMTgy
NykpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390057</attachid>
            <date>2020-02-06 23:14:23 -0800</date>
            <delta_ts>2020-06-05 05:19:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206582-20200207081419.patch</filename>
            <type>text/plain</type>
            <size>145449</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVjNTE0OGEwZTM3ZDI0NTIzYWYxYWE5
NDg5ZGRiMzNkMGQxMGZhMDcuLjVjNDIxMWVjZWM1NTk0ZDAyZDg5NThjYzc4MDI0MmY4NWE0MWM1
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDItMDYgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTAyLTA2ICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBjb21tZW50IGlu
IFN0cmluZ1ZpZXc6OnNldFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nVmlldyYpIGZvciBj
bGFyaWZpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUzYzRjNjc2Y2ZiZjU2Mzg5NGJlYjkyNTFlZDY5
ZjdhYTE5YWNjNTguLmQ4ZTM2YWFiZDQwYWY0OWJhYmI4M2NiMzVjODhlM2YyZDAwYjIyMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw5NSBAQAorMjAyMC0wMi0wNiAgeW91ZW5uIGZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVn
YXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4
OTg1MzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBB
VkFzc2V0V3JpdGVyRGVsZWdhdGUgYWxsb3dzIHRvIGdyYWIgcmVjb3JkZWQgZGF0YSB3aGVuZXZl
ciB3YW50ZWQuCisgICAgICAgIFRoaXMgZGVsZWdhdGUgcmVxdWlyZXMgcGFzc2luZyBjb21wcmVz
c2VkIHNhbXBsZXMgdG8gQVZBc3NldFdyaXRlci4KKyAgICAgICAgSW1wbGVtZW50IHZpZGVvIGVu
Y29kaW5nIGFuZCBhdWRpbyBlbmNvZGluZyBpbiBkZWRpY2F0ZWQgY2xhc3NlcyBhbmQgdXNlIHRo
ZXNlIGNsYXNzZXMgYmVmb3JlIGFkZGluZyBidWZmZXJzIHRvIEFWQXNzZXRXcml0ZXIuCisgICAg
ICAgIFRoZXNlIGNsYXNzZXMgYXJlIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBhbmQgVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLgorICAgICAgICBUaGV5IHN1cHBvcnQgQUFDIGFuZCBI
MjY0IHNvIGZhciBhbmQgc2hvdWxkIGJlIGZ1cnRoZXIgaW1wcm92ZWQgdG8gc3VwcG9ydCBtb3Jl
IGVuY29kaW5nIG9wdGlvbnMuCisKKyAgICAgICAgSW5zdGFudGlhdGUgcmVhbCB3cml0ZXIgb25s
eSBmb3IgcGxhdGZvcm1zIHN1cHBvcnRpbmcgQVZBc3NldFdyaXRlckRlbGVnYXRlLCBzaW5jZSBp
dCBpcyBub3Qgc3VwcG9ydGVkIGV2ZXJ5d2hlcmUuCisgICAgICAgIFRoZSB3cml0ZXIsIGRvaW5n
IHRoZSBwYWNha2dpbmcsIGlzIHJlY2VpdmluZyBjb21wcmVzc2VkIGJ1ZmZlciBmcm9tIHRoZSBh
dWRpby92aWRlbyBjb21wcmVzc29ycy4KKyAgICAgICAgSXQgdGhlbiBzZW5kcyBkYXRhIHdoZW4g
YmVpbmcgcmVxdWVzdCB0byBmbHVzaCB0byBpdHMgZGVsZWdhdGUsIHdoaWNoIHdpbGwgc2VuZCBk
YXRhIHRvIHRoZSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlci4KKyAgICAgICAgVGhlIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyIHN0b3JlcyB0aGUgZGF0YSBpbiBhIFNoYXJlZEJ1ZmZlciB1
bnRpbCBNZWRpYVJlY29yZGVyIGFza3MgZm9yIGRhdGEuCisKKyAgICAgICAgTm90ZSB0aGF0LCB3
aGVuZXZlciB3ZSByZXF1ZXN0IGRhdGEsIHdlIGZsdXNoIHRoZSB3cml0ZXIgYW5kIGluc2VydCBh
biBlbmQgb2YgdmlkZW8gc2FtcGxlIHRvIG1ha2Ugc3VyZSB2aWRlbyBkYXRhIGdldHMgZmx1c2hl
ZC4KKyAgICAgICAgVGhlcmVmb3JlIGRhdGEgc2hvdWxkIG5vdCBiZSByZXF1ZXN0ZWQgdG9vIGZh
c3QgdG8gZ2V0IGFkZXF1YXRlIHZpZGVvIGNvbXByZXNzaW9uLgorCisgICAgICAgIENvdmVyZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUpOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6On5BdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRl
QnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpncmFkdWFsRGVjb2RlclJlZnJl
c2hDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6YXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYyk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVT
b3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNz
U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJBVkFzc2V0
V3JpdGVyRGVsZWdhdGUgaW5pdFdpdGhXcml0ZXI6XSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRX
cml0ZXJEZWxlZ2F0ZSBhc3NldFdyaXRlcjpkaWRQcm9kdWNlRnJhZ21lbnRlZEhlYWRlckRhdGE6
XSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBhc3NldFdyaXRlcjpkaWRQ
cm9kdWNlRnJhZ21lbnRlZE1lZGlhRGF0YTpmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0Ol0pOgor
ICAgICAgICAoLVtXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgY2xvc2VdKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRWaWRlb091dHB1dEJ1
ZmZlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NO
ZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1w
bGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJr
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVu
ZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXApOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZFZpZGVv
U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3Jp
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZEF1ZGlvU2Ft
cGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpzdG9wUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5o
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6flZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0Q29tcHJlc3Npb25TZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmFkZFNh
bXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIpOgorCiAyMDIwLTAyLTA2
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTihyMjU0NTM0KTogMS0zJSByZWdyZXNzaW9uIG9uIFBMVApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
aW5kZXggOWZhNjU5Y2JlNTQ5ZWI1MmY1ZWM2YWM4NmFlM2QxMmZmNTQxNTZjOS4uMjZmNWE3NTdl
ZGUxNjA4NTg2YmI5YmQ1ZmYzMzRlMzU0NmE2MTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMjAtMDItMDYgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1l
bnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2NTgyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODk4NTM2OD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIHNvZnQgbGluayBt
YWNyb3MgZm9yIFZpZGVvVG9vbGJveCBhbmQgQXVkaW9Ub29sYm94LgorCisgICAgICAgICogUEFM
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJv
eFNvZnRMaW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRM
aW5rLmg6IEFkZGVkLgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHA6Cisg
ICAgICAgICogcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg6CisgICAgICAgICogcGFsL2NmL1Zp
ZGVvVG9vbGJveFNvZnRMaW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9v
bGJveFNvZnRMaW5rLmg6IEFkZGVkLgorCiAyMDIwLTAyLTA2ICBKaWV3ZW4gVGFuICA8amlld2Vu
X3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgbmV3IFNPQXV0aG9yaXphdGlvbk9wdGlv
biBjb25zdGFudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmYxOTcxNzliZWFjMjgzMjgxZTdiYTgyNWNhNGNiZGUy
MzljMzU0Mi4uNjRhY2Y3ZDcyNmU3MDFmNDA0NjFiMWZlMzI4ZmNiOTE2N2MwYTVhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wMi0wNiAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRv
IGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4OTg1MzY4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBFbmFibGUg
UmVtb3RlTWVkaWFSZWNvcmRlciBvbmx5IGZvciBzeXN0ZW1zIHN1cHBvcnRpbmcgQVZBc3NldFdy
aXRlckRlbGVnYXRlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyTWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRl
KToKKwogMjAyMC0wMi0wNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBtYWNDYXRhbHlzdDogVW5uZWNlc3NhcnkgSS1iZWFtIG92ZXIgaW1hZ2VzIGlu
IGVkaXRhYmxlIGFyZWFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IGJjYTg3NmUxYWE1YzAzNzE4
MjZlYjg1NDMzOGU1NDBjMzkzZTkyMjYuLmFkYTNkODI0YmUzN2U0MTBmMjA5NGZjYmE5ZDVkN2My
YTE0YTFkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC01NjIsNiArNTYyLDEwIEBACiAjZGVm
aW5lIEhBVkVfT1NfU0lHTlBPU1QgMQogI2VuZGlmCiAKKyNpZiAoKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElP
UykpICYmIChkZWZpbmVkIF9faGFzX2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8QVZGb3VuZGF0
aW9uL0FWQXNzZXRXcml0ZXJfUHJpdmF0ZS5oPikpCisjZGVmaW5lIEhBVkVfQVZBU1NFVFdSSVRF
UkRFTEVHQVRFIDEKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRG
T1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX1NZU1RFTV9G
T05UX1NUWUxFX1RJVExFXzAgMQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxFX1RJVExF
XzQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCBmY2IwOTdlZTc1OWZmNWRmYjc2
NDk4ZDUwOTBlNGNjY2MwYzlkNWE2Li5mNTRkZjcxYTRmNDNiM2U2ZjlkNDhiYzFjZDc0NDM3Njg3
MWU5YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzQsNyArMzQsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZh
dGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoY29u
c3QgTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCiB7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCiAgICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRl
KHN0cmVhbSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOworICAgIHJldHVybiBu
dWxscHRyOworI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Q
QUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzOGQ3ZmE5ZTVkMDljMmNkOWQ4YzYwOGViYTM4
ZTcwNTA0YTMwOTZhLi5jMjgxYjkyYTE3YjQ5YmQ2ZTA3MThhOTYxZjA2NDA4ODY1ZTFlYjZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMTUsNiArMTE1LDEwIEBACiAJCTJFMTM0MkNDMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtp
dFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRTEzNDJDQTIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5oICovOyB9OwogCQky
RTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNCMjE1QUExMEEwMDcxOTlE
MiAvKiBVSUtpdFNvZnRMaW5rLm1tICovOyB9OwogCQkzMTMwOEIxNDIwQTIxNzA1MDAzRkI5Mjkg
LyogU3lzdGVtUHJldmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEzMDhCMTMyMEEyMTcwNTAwM0ZCOTI5IC8qIFN5c3RlbVByZXZpZXdTUEku
aCAqLzsgfTsKKwkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRM
aW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi87IH07
CisJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTIyM0RB
RTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi87IH07CisJCTQxNkU5OTU3
MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1NTIzREFFRkY3MDBFODcx
Q0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovOyB9OworCQk0MTZFOTk1ODIzREFFRkY4
MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRl
b1Rvb2xib3hTb2Z0TGluay5oICovOyB9OwogCQk0NDI5NTZDRDIxOEE3MkRGMDA4MERCNTQgLyog
UmV2ZWFsU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2ZWFsU1BJLmggKi87IH07CiAJCTQ0NTBG
QzlGMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlEMjFGNUY2MDIwMDRERkE1
NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLzsgfTsKIAkJNDQ1MEZDQTAyMUY1RjYwMjAwNERG
QTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29m
dExpbmsuaCAqLzsgfTsKQEAgLTI5MCw2ICsyOTQsMTAgQEAKIAkJMkUxMzQyQ0IyMTVBQTEwQTAw
NzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBVSUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTMwOEIxMzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTeXN0ZW1QcmV2aWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3MTE5QTc4MjBDQ0I1RkYwMDJDNkRDOSAvKiBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViS2l0VGFyZ2V0Q29uZGl0aW9uYWxzLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyog
QXVkaW9Ub29sYm94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNCIC8q
IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5rLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Mjk1NkNDMjE4QTcyREUwMDgwREI1NCAv
KiBSZXZlYWxTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV2ZWFsU1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlEMjFGNUY2MDIwMDRERkE1
NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFF1aWNrTG9va1NvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tMb29rU29mdExpbmsuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyMSw4ICs1MjksMTIgQEAKIAkJMENGOTlDQTUxRjcz
ODQxQzAwN0VFNzkzIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExp
bmsuY3BwICovLAorCQkJCTQxNkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hT
b2Z0TGluay5oICovLAogCQkJCTBDRjk5Q0E2MUY3Mzg0MzYwMDdFRTc5MyAvKiBDb3JlTWVkaWFT
b2Z0TGluay5jcHAgKi8sCiAJCQkJMENGOTlDQTcxRjczODQzNzAwN0VFNzkzIC8qIENvcmVNZWRp
YVNvZnRMaW5rLmggKi8sCisJCQkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9v
bGJveFNvZnRMaW5rLmNwcCAqLywKKwkJCQk0MTZFOTk1NjIzREFFRkY3MDBFODcxQ0IgLyogVmlk
ZW9Ub29sYm94U29mdExpbmsuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtNzEyLDYgKzcyNCw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk1
N0ZEMzE4QjIyQjM1OTg5MDA4RDBFOEIgLyogQXBwU1NPU29mdExpbmsuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3NkNBOUQ2MjJCODU0QUIwMDMwMTQzQyAvKiBBcHBTU09TUEkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwMkU5M0MyMDU2RkFBNzAwQTEzNzk3IC8qIEF1ZGlv
VG9vbGJveFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTEwNzgyMkI0NTZGNTAwRjQxMEM4
IC8qIEF1dGhLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3N0U4N0IyMjI2QTQ2MDMwMEEy
QUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzQsNiAr
ODQ3LDcgQEAKIAkJCQkyRTEzNDJDQzIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MjIxRjQzQTRDNzAwMkVBQzAyIC8qIFVJS2l0U1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE0NzFGM0JFQjQ5MDBEQkMzMTcgLyogVVJMRm9y
bWF0dGluZ1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RTk5NTgyM0RBRUZGODAwRTg3MUNC
IC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1OTFG
M0JFQjQ5MDBEQkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTA4MjZGOTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKQEAgLTkyNiw2ICs5NDAsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThBMjJCMzU5M0UwMDhEMEU4QiAvKiBBcHBT
U09Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNkU5OTUzMjNEQUU2QkUwMEU4NzFD
QiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzdFODdC
MTIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsubW0gaW4gU291cmNlcyAq
LywKIAkJCQkwQzVGRkYwRjFGNzhEOURBMDA5RUZGMUEgLyogQ2xvY2tDTS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBDRjk5Q0E4MUY3Mzg0MzcwMDdFRTc5MyAvKiBDb3JlTWVkaWFTb2Z0TGluay5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTk1Miw2ICs5NjcsNyBAQAogCQkJCUEzQUI2RTU3MUYzRDFE
REIwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkUxMzQyQ0QyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExp
bmsubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTZFOTk1NzIzREFFRkY4MDBFODcxQ0IgLyogVmlk
ZW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwODI2RkExRjU3NjI5
MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjZjU1MDU2
YWNkYTZmNTY1M2FkYzdlMTdlYzAyYTJkODI2ZTQ0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcApAQCAtMCwwICsx
LDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBVkZP
VU5EQVRJT04pCisKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KKyNp
bmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQuaD4KKworI2luY2x1ZGUgPHd0Zi9Tb2Z0
TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rv
b2xib3gpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94
LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVydHlJ
RCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGluU3Bl
Y2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRh
KSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9wZXJ0
eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0
ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9u
Rm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RShQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSwgT1NTdGF0dXMs
IChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3Bl
cnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5Qcm9wZXJ0eURhdGFTaXplLCBjb25zdCB2b2lk
KiBpblByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGluUHJv
cGVydHlEYXRhU2l6ZSwgaW5Qcm9wZXJ0eURhdGEpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHksIE9TU3Rh
dHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQ
cm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQq
IG91dFByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlvUHJv
cGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKworI2VuZGlmIC8vIFVTRShBVkZPVU5E
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJv
eFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRM
aW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDczMTE4NzE3NGFjMTU1NDQzNzFkZWUwM2IxNDMyZTNlNjU2MzJl
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29s
Ym94U29mdExpbmsuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5o
PgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gpCisK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0Nv
bnZlcnRlckdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9D
b252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiog
aW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZl
cnRlciwgaW5Qcm9wZXJ0eUlELCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkp
CisjZGVmaW5lIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94
X0F1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NTdGF0dXMsIChjb25zdCBB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0LCBjb25zdCBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQsIEF1ZGlvQ29udmVydGVy
UmVmKiBvdXRBdWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwgaW5EZXN0aW5hdGlvbkZv
cm1hdCwgb3V0QXVkaW9Db252ZXJ0ZXIpKQorI2RlZmluZSBBdWRpb0NvbnZlcnRlck5ldyBzb2Z0
TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJOZXcKK1NPRlRfTElOS19GVU5DVElPTl9G
T1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5LCBP
U1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVy
dGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblByb3BlcnR5RGF0YVNpemUsIGNv
bnN0IHZvaWQqIGluUHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJ
RCwgaW5Qcm9wZXJ0eURhdGFTaXplLCBpblByb3BlcnR5RGF0YSkpCisjZGVmaW5lIEF1ZGlvQ29u
dmVydGVyU2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29udmVydGVyU2V0
UHJvcGVydHkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94
LCBBdWRpb0Zvcm1hdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVydHlJ
RCBpblByb3BlcnR5SUQsIFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGluU3Bl
Y2lmaWVyLCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRh
KSwgKGluUHJvcGVydHlJRCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9wZXJ0
eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQorI2RlZmluZSBBdWRpb0Zvcm1hdEdldFByb3Bl
cnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0Zvcm1hdEdldFByb3BlcnR5CisKKworI2Vu
ZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuY3BwCmluZGV4IDJiODIzMTM2NWNiOWFhZjkzNTk3ZjE4N2ZhMjJj
MTQ5YmU0MmZiM2EuLmZhMjJjZWNjMTM3M2FjN2ZiYjk1NWZkNjQxZjdiMjExNjYxMzllZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCkBA
IC00Niw2ICs0Niw3IEBAIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIENvcmVN
ZWRpYSkKIAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENN
QmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYgdGhl
U291cmNlQnVmZmVyLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgdm9p
ZCogZGVzdGluYXRpb24pLCAodGhlU291cmNlQnVmZmVyLCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5n
dGgsIGRlc3RpbmF0aW9uKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aCwgc2l6ZV90LCAoQ01CbG9ja0J1ZmZl
clJlZiB0aGVCdWZmZXIpLCAodGhlQnVmZmVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcywgT1NTdGF0
dXMsIChjb25zdCB2b2lkKiBzb3VyY2VCeXRlcywgQ01CbG9ja0J1ZmZlclJlZiBkZXN0aW5hdGlv
bkJ1ZmZlciwgc2l6ZV90IG9mZnNldEludG9EZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5ndGgp
LCAoc291cmNlQnl0ZXMsIGRlc3RpbmF0aW9uQnVmZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRpb24s
IGRhdGFMZW5ndGgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVk
aWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRpY3Rpb25hcnlSZWYsIChD
TUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRUeXBlSUQsIENGVHlw
ZUlELCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciwgQ01CbG9ja0J1ZmZlclJlZiwgKENN
U2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCkBAIC0xMzMsOSArMTM0LDExIEBAIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlRGVx
dWV1ZUFuZFJldGFpbiwgQ01CCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUVucXVldWUsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJl
ZiBxdWV1ZSwgQ01CdWZmZXJSZWYgYnVmZmVyKSwgKHF1ZXVlLCBidWZmZXIpKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJc0VtcHR5
LCBCb29sZWFuLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEJ1ZmZl
ckNvdW50LCBDTUl0ZW1Db3VudCwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVl
dWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMsIGNvbnN0IENNQnVmZmVyQ2Fs
bGJhY2tzICosICgpLCAoKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGlt
ZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRFbmRQcmVzZW50YXRp
b25UaW1lU3RhbXAsIENNVGltZSwgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVl
dWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVy
UXVldWVSZWYgcXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxi
YWNrLCB2b2lkKiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0
cmlnZ2VyQ29uZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1
ZXVlVHJpZ2dlclRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFj
aywgdHJpZ2dlclJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJp
Z2dlclRva2VuT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1l
ZGlhLCBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVl
UmVmIHF1ZXVlKSwgKHF1ZXVlKSkKIAogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5LCBDRlN0cmlu
Z1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01T
YW1wbGVBdHRhY2htZW50S2V5X05vdFN5bmMsIENGU3RyaW5nUmVmKQpAQCAtMTQ5LDYgKzE1Miw5
IEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1w
bGVCdWZmZXJBdHRhY2htZW50S2V5X1NhbXBsCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9EaXNwbGF5SW1tZWRpYXRl
bHksIENGU3RyaW5nUmVmKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfSXNEZXBlbmRlZE9uQnlPdGhlcnMsIENGU3Ry
aW5nUmVmKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtD
TVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBDRlN0cmlu
Z1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01T
YW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0VuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uLCBDRlN0
cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBr
Q01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0dyYWR1YWxEZWNvZGVyUmVmcmVzaCwgQ0ZTdHJp
bmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgZ2V0
X0NvcmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3Rh
cnQsIENGU3RyaW5nUmVmKQogCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSwga0NNVGltZWJhc2VOb3RpZmljYXRpb25fRWZmZWN0aXZlUmF0ZUNoYW5nZWQsIENG
U3RyaW5nUmVmKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEs
IGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQsIENGU3RyaW5nUmVmKQpAQCAtMTYz
LDYgKzE2OSw5IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlh
LCBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tlCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJv
bUF1ZGlvQnVmZmVyTGlzdCwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDRkFs
bG9jYXRvclJlZiBiYnVmU3RydWN0QWxsb2NhdG9yLCBDRkFsbG9jYXRvclJlZiBiYnVmTWVtb3J5
QWxsb2NhdG9yLCB1aW50MzJfdCBmbGFncywgY29uc3QgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJM
aXN0KSwgKHNidWYsIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIGJidWZNZW1vcnlBbGxvY2F0b3IsIGZs
YWdzLCBidWZmZXJMaXN0KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlclNldERhdGFSZWFkeSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1
ZmZlclJlZiBzYnVmKSwgKHNidWYpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSwgT1NTdGF0dXMsIChD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
biogYXNiZCwgc2l6ZV90IGxheW91dFNpemUsIGNvbnN0IEF1ZGlvQ2hhbm5lbExheW91dCogbGF5
b3V0LCBzaXplX3QgbWFnaWNDb29raWVTaXplLCBjb25zdCB2b2lkKiBtYWdpY0Nvb2tpZSwgQ0ZE
aWN0aW9uYXJ5UmVmIGV4dGVuc2lvbnMsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiogb3V0
RGVzYyksIChhbGxvY2F0b3IsIGFzYmQsIGxheW91dFNpemUsIGxheW91dCwgbWFnaWNDb29raWVT
aXplLCBtYWdpY0Nvb2tpZSwgZXh0ZW5zaW9ucywgb3V0RGVzYykpCitTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0
TWFnaWNDb29raWUsIGNvbnN0IHZvaWQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRl
c2MsIHNpemVfdCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRS
aWNoZXN0RGVjb2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICosIChDTUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKKwogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrLCBD
TUNsb2NrUmVmLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRUaW1lLCBDTVRpbWUsIChDTUNsb2NrUmVmIGNsb2NrKSwg
KGNsb2NrKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBD
TVNhbXBsZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlLCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVy
UmVmIHNidWYsIE9TU3RhdHVzICgqIENNU0FNUExFQlVGRkVSQ0FMTF9OT0VTQ0FQRSBjYWxsYmFj
aykoIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgQ01JdGVtQ291bnQgaW5kZXgsIHZv
aWQgKnJlZmNvbiksIHZvaWQgKnJlZmNvbiksIChzYnVmLCBjYWxsYmFjaywgcmVmY29uKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAppbmRleCAyNjhk
MTY3ZjI3ZDZkM2FiYmZmNTkzNTI2N2ZjMjIyMzkxMDEwZTNkLi44M2ZmNGQ2NjIzYmRmYmUxMWQ5
N2Y2YTNlNjNmZmZjOWFmYjYwNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9D
b3JlTWVkaWFTb2Z0TGluay5oCkBAIC00OSw2ICs0OSw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9G
T1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcywgT1NT
dGF0CiAjZGVmaW5lIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIHNvZnRMaW5rX0NvcmVNZWRp
YV9DTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXplX3QsIChD
TUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciksICh0aGVCdWZmZXIpKQogI2RlZmluZSBDTUJsb2Nr
QnVmZmVyR2V0RGF0YUxlbmd0aCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckdldERh
dGFMZW5ndGgKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBD
TUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcywgT1NTdGF0dXMsIChjb25zdCB2b2lkKiBzb3Vy
Y2VCeXRlcywgQ01CbG9ja0J1ZmZlclJlZiBkZXN0aW5hdGlvbkJ1ZmZlciwgc2l6ZV90IG9mZnNl
dEludG9EZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFMZW5ndGgpLCAoc291cmNlQnl0ZXMsIGRlc3Rp
bmF0aW9uQnVmZmVyLCBvZmZzZXRJbnRvRGVzdGluYXRpb24sIGRhdGFMZW5ndGgpKQorI2RlZmlu
ZSBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9j
a0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9u
YXJ5UmVmLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQogI2RlZmluZSBD
TUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucyBzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3Jt
YXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQsICh2b2lk
KSwgKCkpCkBAIC0yMjMsMTAgKzIyNSwxNCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEJ1ZmZlckNvdW50LCBDTUl0ZQogI2Rl
ZmluZSBDTUJ1ZmZlclF1ZXVlR2V0QnVmZmVyQ291bnQgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVm
ZmVyUXVldWVHZXRCdWZmZXJDb3VudAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRGaXJzdFByZXNlbnRhdGlvblRpbWVTdGFtcCwg
Q01UaW1lLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiAjZGVmaW5lIENNQnVm
ZmVyUXVldWVHZXRGaXJzdFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3JlTWVkaWFf
Q01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0YW1wCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNr
c0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycywgY29uc3QgQ01CdWZmZXJDYWxsYmFja3MgKiwgKCks
ICgpKQorI2RlZmluZSBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVC
dWZmZXJzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5z
b3J0ZWRTYW1wbGVCdWZmZXJzCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENv
cmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1l
LCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiAjZGVmaW5lIENNQnVmZmVyUXVl
dWVHZXRFbmRQcmVzZW50YXRpb25UaW1lU3RhbXAgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVy
UXVldWVHZXRFbmRQcmVzZW50YXRpb25UaW1lU3RhbXAKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXJXaXRoSW50
ZWdlclRocmVzaG9sZCwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlLCBDTUJ1ZmZl
clF1ZXVlVHJpZ2dlckNhbGxiYWNrIHRyaWdnZXJDYWxsYmFjaywgdm9pZCogdHJpZ2dlclJlZmNv
biwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDb25kaXRpb24gdHJpZ2dlckNvbmRpdGlvbiwgQ01JdGVt
Q291bnQgdHJpZ2dlclRocmVzaG9sZCwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiogdHJpZ2dl
clRva2VuT3V0KSwgKHF1ZXVlLCB0cmlnZ2VyQ2FsbGJhY2ssIHRyaWdnZXJSZWZjb24sIHRyaWdn
ZXJDb25kaXRpb24sIHRyaWdnZXJUaHJlc2hvbGQsIHRyaWdnZXJUb2tlbk91dCkpCiAjZGVmaW5l
IENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXJXaXRoSW50ZWdlclRocmVzaG9s
ZAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVy
UXVldWVNYXJrRW5kT2ZEYXRhLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAo
cXVldWUpKQorI2RlZmluZSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBzb2Z0TGlua19Db3Jl
TWVkaWFfQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEKIAogU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNw
bGF5LCBDRlN0cmluZ1JlZikKICNkZWZpbmUga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERp
c3BsYXkgZ2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxheSgp
CkBAIC0yNTYsNiArMjYyLDE1IEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwg
Q29yZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkCiAjZGVmaW5lIGtD
TVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQgZ2V0X0NvcmVNZWRpYV9rQ01UaW1lYmFz
ZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkKCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZm
ZXJDb25zdW1lZCwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVy
Tm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVy
Q29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQoKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlf
RW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb24sIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01TYW1w
bGVCdWZmZXJBdHRhY2htZW50S2V5X0VuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uIGdldF9Db3Jl
TWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJh
dGlvbigpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NN
U2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9HcmFkdWFsRGVjb2RlclJlZnJlc2gsIENGU3RyaW5n
UmVmKQorI2RlZmluZSBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0dyYWR1YWxEZWNvZGVy
UmVmcmVzaCBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVh
bERlY29kZXJSZWZyZXNoKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1
cmF0aW9uQXRTdGFydCwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGdldF9Db3JlTWVkaWFfa0NNU2Ft
cGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0IGdldF9Db3JlTWVkaWFf
a0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0KCkKKworU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llLCBjb25zdCB2b2lkKiwgKENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvblJlZiBkZXNjLCBzaXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCkpCisjZGVm
aW5lIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llIHNvZnRMaW5rX0NvcmVN
ZWRpYV9DTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZQogU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlv
bkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24sIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiAqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVm
aW5lIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24gc29m
dExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVz
Y3JpcHRpb24KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBD
TUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrLCBPU1N0YXR1cywgKENGQWxsb2NhdG9y
UmVmIHN0cnVjdHVyZUFsbG9jYXRvciwgdm9pZCogbWVtb3J5QmxvY2ssIHNpemVfdCBibG9ja0xl
bmd0aCwgQ0ZBbGxvY2F0b3JSZWYgYmxvY2tBbGxvY2F0b3IsIGNvbnN0IENNQmxvY2tCdWZmZXJD
dXN0b21CbG9ja1NvdXJjZSogY3VzdG9tQmxvY2tTb3VyY2UsIHNpemVfdCBvZmZzZXRUb0RhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoLCBDTUJsb2NrQnVmZmVyRmxhZ3MgZmxhZ3MsIENNQmxvY2tCdWZm
ZXJSZWYqIGJsb2NrQnVmZmVyT3V0KSwgKHN0cnVjdHVyZUFsbG9jYXRvciwgbWVtb3J5QmxvY2ss
IGJsb2NrTGVuZ3RoLCBibG9ja0FsbG9jYXRvciwgY3VzdG9tQmxvY2tTb3VyY2UsIG9mZnNldFRv
RGF0YSwgZGF0YUxlbmd0aCwgZmxhZ3MsIGJsb2NrQnVmZmVyT3V0KSkKQEAgLTI2NCw2ICsyNzks
OCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1w
bGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldEF1
ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyIHNvZnRMaW5rX0NvcmVNZWRpYV9D
TVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyCiBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZm
ZXJHZXROdW1TYW1wbGVzLCBDTUl0ZW1Db3VudCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAo
c2J1ZikpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcyBzb2Z0TGlua19Db3Jl
TWVkaWFfQ01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVz
dERlY29kYWJsZUZvcm1hdCwgY29uc3QgQXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCisjZGVmaW5lIENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQgc29mdExpbmtfQ29yZU1lZGlhX0NN
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQKIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNvcHlT
YW1wbGVCdWZmZXJGb3JSYW5nZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENGUmFuZ2Ugc2FtcGxlUmFuZ2UsIENNU2FtcGxlQnVm
ZmVyUmVmKiBzQnVmT3V0KSwgKGFsbG9jYXRvciwgc2J1Ziwgc2FtcGxlUmFuZ2UsIHNCdWZPdXQp
KQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZSBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2UKIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdl
dFNhbXBsZVNpemVBcnJheSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDTUl0
ZW1Db3VudCBzaXplQXJyYXlFbnRyaWVzLCBzaXplX3QqIHNpemVBcnJheU91dCwgQ01JdGVtQ291
bnQqIHNpemVBcnJheUVudHJpZXNOZWVkZWRPdXQpLCAoc2J1Ziwgc2l6ZUFycmF5RW50cmllcywg
c2l6ZUFycmF5T3V0LCBzaXplQXJyYXlFbnRyaWVzTmVlZGVkT3V0KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmRiYTM3NjE3N2EwZmU3ODBlMjFlMzc3M2IwODZhYzJhNWIxOTEzMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwCkBA
IC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
VVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25T
ZXNzaW9uLmg+CisKKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZS
QU1FV09SS19GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94KQorCitTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9FeHBlY3RlZEZyYW1lUmF0ZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhL
ZXlGcmFtZUludGVydmFsRHVyYXRpb24sIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gsIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlf
UmVhbFRpbWUsIENGU3RyaW5nUmVmKQorCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQ
QUwsIFZpZGVvVG9vbGJveCwga1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVIYXJk
d2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyLCBDRlN0cmluZ1JlZikKKworU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9u
Q3JlYXRlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgaW50MzJfdCB3aWR0
aCwgaW50MzJfdCBoZWlnaHQsIENNVmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlLCBDRkRpY3Rpb25h
cnlSZWYgZW5jb2RlclNwZWNpZmljYXRpb24sIENGRGljdGlvbmFyeVJlZiBzb3VyY2VJbWFnZUJ1
ZmZlckF0dHJpYnV0ZXMsIENGQWxsb2NhdG9yUmVmIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBW
VENvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2sgb3V0cHV0Q2FsbGJhY2ssIHZvaWQqIG91dHB1dENh
bGxiYWNrUmVmQ29uLCBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiogY29tcHJlc3Npb25TZXNzaW9u
T3V0KSwgKGFsbG9jYXRvciwgd2lkdGgsIGhlaWdodCwgY29kZWNUeXBlLCBlbmNvZGVyU3BlY2lm
aWNhdGlvbiwgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBjb21wcmVzc2VkRGF0YUFsbG9j
YXRvciwgb3V0cHV0Q2FsbGJhY2ssIG91dHB1dENhbGxiYWNrUmVmQ29uLCBjb21wcmVzc2lvblNl
c3Npb25PdXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xi
b3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21w
cmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ01UaW1lIGNvbXBsZXRlVW50aWxQcmVzZW50YXRp
b25UaW1lU3RhbXApLCAoc2Vzc2lvbiwgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFt
cCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRD
b21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSwgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vz
c2lvblJlZiBzZXNzaW9uLCBDVkltYWdlQnVmZmVyUmVmIGltYWdlQnVmZmVyLCBDTVRpbWUgcHJl
c2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUgZHVyYXRpb24sIENGRGljdGlvbmFyeVJlZiBmcmFt
ZVByb3BlcnRpZXMsIHZvaWQqIHNvdXJjZUZyYW1lUmVmY29uLCBWVEVuY29kZUluZm9GbGFncyog
aW5mb0ZsYWdzT3V0KSwgKHNlc3Npb24sIGltYWdlQnVmZmVyLCBwcmVzZW50YXRpb25UaW1lU3Rh
bXAsIGR1cmF0aW9uLCBmcmFtZVByb3BlcnRpZXMsIHNvdXJjZUZyYW1lUmVmY29uLCBpbmZvRmxh
Z3NPdXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gs
IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzLCBPU1N0YXR1cywgKFZU
Q29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikpCisKKyNlbmRpZiAvLyBV
U0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9W
aWRlb1Rvb2xib3hTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rv
b2xib3hTb2Z0TGluay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhOWZlNTFlMGZmMTVjZjIzZGFkOTgwODljMjU5
NmFkZjE5MGFkNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Nm
L1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlIDx3dGYvU29m
dExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBBTCwgVmlkZW9U
b29sYm94KQorCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJv
eCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgQ0ZTdHJpbmdS
ZWYpCisjZGVmaW5lIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0ZWRGcmFtZVJhdGUg
Z2V0X1ZpZGVvVG9vbGJveF9rVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVS
YXRlKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBr
VlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgQ0ZT
dHJpbmdSZWYpCisjZGVmaW5lIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJ
bnRlcnZhbER1cmF0aW9uIGdldF9WaWRlb1Rvb2xib3hfa1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24oKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9I
RUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRp
bWUsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxU
aW1lIGdldF9WaWRlb1Rvb2xib3hfa1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSgp
CisKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRW
aWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0Vu
Y29kZXIsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9u
X0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIgZ2V0X1ZpZGVvVG9vbGJveF9r
VlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRl
b0VuY29kZXIoKQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9v
bGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgQ01WaWRlb0NvZGVj
VHlwZSBjb2RlY1R5cGUsIENGRGljdGlvbmFyeVJlZiBlbmNvZGVyU3BlY2lmaWNhdGlvbiwgQ0ZE
aWN0aW9uYXJ5UmVmIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgQ0ZBbGxvY2F0b3JSZWYg
Y29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIFZUQ29tcHJlc3Npb25PdXRwdXRDYWxsYmFjayBvdXRw
dXRDYWxsYmFjaywgdm9pZCogb3V0cHV0Q2FsbGJhY2tSZWZDb24sIFZUQ29tcHJlc3Npb25TZXNz
aW9uUmVmKiBjb21wcmVzc2lvblNlc3Npb25PdXQpLCAoYWxsb2NhdG9yLCB3aWR0aCwgaGVpZ2h0
LCBjb2RlY1R5cGUsIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBzb3VyY2VJbWFnZUJ1ZmZlckF0dHJp
YnV0ZXMsIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBvdXRwdXRDYWxsYmFjaywgb3V0cHV0Q2Fs
bGJhY2tSZWZDb24sIGNvbXByZXNzaW9uU2Vzc2lvbk91dCkpCisjZGVmaW5lIFZUQ29tcHJlc3Np
b25TZXNzaW9uQ3JlYXRlIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lv
bkNyZWF0ZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gs
IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVz
c2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ01UaW1lIGNvbXBsZXRlVW50aWxQcmVzZW50YXRpb25U
aW1lU3RhbXApLCAoc2Vzc2lvbiwgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCkp
CisjZGVmaW5lIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgc29mdExpbmtfVmlk
ZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lv
bkVuY29kZUZyYW1lLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24s
IENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3Rh
bXAsIENNVGltZSBkdXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIGZyYW1lUHJvcGVydGllcywgdm9p
ZCogc291cmNlRnJhbWVSZWZjb24sIFZURW5jb2RlSW5mb0ZsYWdzKiBpbmZvRmxhZ3NPdXQpLCAo
c2Vzc2lvbiwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZHVyYXRpb24sIGZy
YW1lUHJvcGVydGllcywgc291cmNlRnJhbWVSZWZjb24sIGluZm9GbGFnc091dCkpCisjZGVmaW5l
IFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZU
Q29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29k
ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uKSwgKHNl
c3Npb24pKQorI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1l
cyBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNv
ZGVGcmFtZXMKKworI2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTYwODAxZDQ5Yjg5
ZmY1MThlM2JlM2VlMjM1MTY0MzNhN2M0NWUzMS4uMmE1N2M0YzFkOTZlZDY0ZGQxODBkZmViYTk2
YTdmMjkyYWQyNzFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTA5Nyw2ICsxMDk3LDcgQEAKIAkJNDE2RTZGRTgxQkJEMTJE
RjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3
NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2
MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJs
ZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
MDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE2Rjc5OTAyM0Q3
NTBDRjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkY3OThGMjNENzUwQ0IwMDgy
OUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi87IH07CiAJCTQxNzI1M0FC
MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJB
IC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi87IH07CiAJCTQxNzYxMkFGMUUzQTk5NDAwMEMz
RDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFCMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmNwcCAqLzsgfTsKIAkJNDE3NjEyQjAxRTNBOTk0MDAwQzNEODFE
IC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmggKi87IH07CkBAIC0xMTM3LDYgKzExMzgsNyBAQAogCQk0MUI4Nzc2MjIz
REUxMDQ1MDAzNjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQjg3NzYwMjNERTEwNDIw
MDM2MzhCOCAvKiBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQkYyMDQ5MjJCQTdCRTgwMDA0
RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyogUmVhbHRpbWVW
aWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAw
QzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNDFDRDZGOEMyM0Q2RTgyMTAwQjE2NDIxIC8qIFZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxQ0Q2RjhCMjNENkU4MUQwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW0gKi87IH07CiAJCTQxRDAxNUNBMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50
VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFE
MDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFEMTI5Q0UxRjNEMEVGNjAwRDE1RTQ3
IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCMjc4RDFGMzRDMjgyMDA3OTU0ODcgLyogV29ya2VyR2xv
YmFsU2NvcGVDYWNoZXMuaCAqLzsgfTsKIAkJNDFEMTI5RDAxRjNEMEYwNTAwRDE1RTQ3IC8qIENh
Y2hlUXVlcnlPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZCMjc5QjFGMzRDRUYwMDA3OTU0ODcgLyogQ2FjaGVRdWVyeU9wdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzM2MCw2
ICs3MzYyLDggQEAKIAkJNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5m
b3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xvYWRJ
bmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMEIzNzIwOUJD
M0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZldGNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyUmVwb3J0aW5nUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2Rjc5OEQyM0Q3NTBDQTAwODI5RkMxIC8qIEF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE3MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNB
OTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTc0NjcsNiArNzQ3MSw4IEBACiAJCTQxQzdFMTA1MUU2QTU0MzYw
MDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdFMTA2MUU2QTU0MzYwMDI3QjRE
RSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwODFFNkFBMzdDMDAyN0I0REUgLyogQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFDRDZGODkyM0Q2RTgxQzAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRDZGOEIyM0Q2RTgxRDAw
QjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8q
IEZldGNoQm9keUNvbnN1bWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZldGNoQm9keUNvbnN1bWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFDRjhCRTUxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg4OTgsOCArMTg5MDQsMTIgQEAKIAkJNEQzQzA1
RDQyMUFGNDgwOTAwRjI4OTBBIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLmggKi8sCisJCQkJNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8q
IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLywKIAkJCQk0RDczRjk0QzIxOEM0QTg3
MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oICovLAogCQkJCTRE
NzNGOTREMjE4QzRBODcwMDNBM0VENiAvKiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tICovLAorCQkJCTQxQ0Q2Rjg5MjNENkU4MUMwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaCAqLywKKwkJCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzU0NCw2ICszMzU1NCw3IEBACiAJCQkJQTk3
ODdDQjQxRjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAxRDBCRDAg
LyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNkY3OTkwMjNE
NzUwQ0YwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwRDgxNzE1RDJB
MjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNDI3Niw2ICsz
NDI4Nyw3IEBACiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZCQzRBRjMxODk4ODE1NjAw
NDZFRTM4IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTJENUExOEYxQzU0NTkyMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFu
YWdlck9iakMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MUNENkY4QzIzRDZFODIxMDBCMTY0MjEg
LyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4
OEUwREUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkU4OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEMzM2RjY3MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
QVZGSW1wbC5jcHAKaW5kZXggNzNmMWQwYTE1MTlmMmMwM2I5MWQ2OTUxMDUxMzVhNGYyMGQxZGE2
NC4uZjFmNjgwNDUyMjkzNjVkOGZjM2IwNzk2NzJkMmMyMDMzZmJlYTM5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAtMjYsOSArMjYsMTAgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaCIK
IAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
SEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIgog
I2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC02OCw3ICs2OSwxNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGw6OmNyZWF0ZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
YXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGF1ZGlvVHJh
Y2ssIHZpZGVvVHJhY2spOworCisgICAgaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKKyAgICBp
ZiAodmlkZW9UcmFjaykgeworICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IHZpZGVvVHJhY2stPnNl
dHRpbmdzKCk7CisgICAgICAgIHdpZHRoID0gc2V0dGluZ3Mud2lkdGgoKTsKKyAgICAgICAgaGVp
Z2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7CisgICAgfQorICAgIGF1dG8gd3JpdGVyID0gTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSghIWF1ZGlvVHJhY2ssIHdpZHRoLCBoZWlnaHQp
OwogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTE5LDQg
KzEyNyw0IEBAIGNvbnN0IFN0cmluZyYgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjptaW1l
VHlwZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VU
V1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAppbmRl
eCAwY2YwZGYzYzY0Y2M5NzEzZTMwNTliZTM2Y2FjYzlmYzdjY2MwYjM2Li4zNGUyYTk2Yzc5NDE4
ZDRlODY2YzFhYzIxMDQwOThjYzkzOGY0NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsLmgKQEAgLTI0LDcgKzI0LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NF
VFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGUuaCIKICNp
bmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCkBAIC01Niw0ICs1Niw0
IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShB
VkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDdiZjgxZTFkNDU2YzcwYzJkOTQ0ZjcwNDVhOGUx
NmUwNTliY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVNZWRp
YS5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZm
ZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252ZXJ0
ZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRl
KENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKyAg
ICB+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAgICB2b2lkIGZpbmlzaCgpOwor
ICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBSZXRhaW5QdHI8Q01TYW1w
bGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKTsKKyAgICBib29sIGluaXRpYWxpemUoQ01CdWZm
ZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworCisgICAgc3Rh
dGljIE9TU3RhdHVzIGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252
ZXJ0ZXJSZWYsIFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVz
Y3JpcHRpb24qKiwgdm9pZCopOworCisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2Ft
cGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1h
dERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIEF1ZGlvRm9ybWF0SUQpOworICAg
IHNpemVfdCBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiwgVUludDMyLCBGbG9hdDMyKTsKKyAgICB2b2lkIGF0dGFjaFByaW1pbmdUcmlt
c0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IGdy
YWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCk7CisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
QnVmZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCk7
CisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKENNVGltZSk7
CisgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKFVJbnQzMios
IEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKik7CisKKyAg
ICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBS
ZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9pbnB1dEJ1ZmZlclF1ZXVlOworICAgIGRpc3Bh
dGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIENNVGltZSBtX2xvd1dhdGVy
VGltZTsKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07CisKKyAgICBSZXRhaW5QdHI8
QXVkaW9Db252ZXJ0ZXJSZWY+IG1fY29udmVydGVyOworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiBtX3NvdXJjZUZvcm1hdDsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24g
bV9kZXN0aW5hdGlvbkZvcm1hdDsKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJl
Zj4gbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAgIFJldGFpblB0cjxOU051bWJl
cj4gbV9nZHJDb3VudE51bTsKKyAgICBVSW50MzIgbV9tYXhPdXRwdXRQYWNrZXRTaXplOworICAg
IFZlY3RvcjxBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX2Rlc3RpbmF0aW9uUGFja2V0
RGVzY3JpcHRpb25zOworCisgICAgQ01UaW1lIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRp
bWVTdGFtcDsKKyAgICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1w
OworICAgIENNVGltZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb247CisKKyAgICBWZWN0b3I8Y2hh
cj4gbV9zb3VyY2VCdWZmZXI7CisgICAgVmVjdG9yPGNoYXI+IG1fZGVzdGluYXRpb25CdWZmZXI7
CisKKyAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsK
KyAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7CisgICAgc2l6ZV90IG1fY3VycmVu
dE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXI7CisgICAgQXVkaW9Gb3JtYXRJRCBtX291dHB1dENv
ZGVjVHlwZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVT
RShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiMTUxMjA2MGQ3MGEwYjdkNzJjMWQxYmJlZWMwZTRmNjU0
Yzk1OGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtMCwwICsxLDQ5
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPEF1ZGlv
VG9vbGJveC9BdWRpb0NvZGVjLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVy
dGVyLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+CisjaW5jbHVkZSA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgPHBhbC9jZi9BdWRpb1Rvb2xib3hT
b2Z0TGluay5oPgorCisjZGVmaW5lIExPV19XQVRFUl9USU1FX0lOX1NFQ09ORFMgMC4xCisKK3Vz
aW5nIG5hbWVzcGFjZSBQQUw7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpjcmVhdGUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCog
Y2FsbGJhY2tPYmplY3QpCit7CisgICAgYXV0byBjb21wcmVzc29yID0gc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4obmV3IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcigpKTsKKyAgICBpZiAoIWNvbXByZXNzb3ItPmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxi
YWNrT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbXByZXNz
b3I7Cit9CisKK0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yKCkKKyAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgiY29tLmFwcGxlLkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENI
X1FVRVVFX1NFUklBTCkgfQorICAgICwgbV9sb3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNl
Y29uZHMoTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EUywgMTAwMCkgfQorICAgICwgbV9vdXRwdXRD
b2RlY1R5cGUgeyBrQXVkaW9Gb3JtYXRNUEVHNEFBQyB9Cit7Cit9CisKK0F1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCit7CisgICAgaWYg
KG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3Nlcmlh
bERpc3BhdGNoUXVldWUpOworfQorCitib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBj
YWxsYmFja09iamVjdCkKK3sKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIGlucHV0QnVmZmVyUXVldWU7
CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZl
cnMoKSwgJmlucHV0QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVDcmVh
dGUgZm9yIG1faW5wdXRCdWZmZXJRdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX2lucHV0QnVmZmVyUXVldWUgPSBhZG9wdENG
KGlucHV0QnVmZmVyUXVldWUpOworCisgICAgQ01CdWZmZXJRdWV1ZVJlZiBvdXRwdXRCdWZmZXJR
dWV1ZTsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxl
QnVmZmVycygpLCAmb3V0cHV0QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVl
dWVDcmVhdGUgZm9yIG1fb3V0cHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9vdXRwdXRCdWZmZXJRdWV1ZSA9
IGFkb3B0Q0Yob3V0cHV0QnVmZmVyUXVldWUpOworICAgIENNQnVmZmVyUXVldWVJbnN0YWxsVHJp
Z2dlcihtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBjYWxsYmFjaywgY2FsbGJhY2tPYmplY3Qs
IGtDTUJ1ZmZlclF1ZXVlVHJpZ2dlcl9XaGVuRGF0YUJlY29tZXNSZWFkeSwga0NNVGltZVplcm8s
IE5VTEwpOworCisgICAgbV9pc0VuY29kaW5nID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCit7CisgICAgZGlz
cGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIHByb2Nlc3NTYW1w
bGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUoa0NNVGltZUludmFsaWQpOworICAgICAgICBhdXRv
IGVycm9yID0gQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1ZS5n
ZXQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBm
YWlsZWQgJWQiLCBlcnJvcik7CisgICAgICAgIG1faXNFbmNvZGluZyA9IGZhbHNlOworICAgIH0p
OworfQorCitib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVy
dGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3Jt
YXREZXNjcmlwdGlvbiwgQXVkaW9Gb3JtYXRJRCBvdXRwdXRGb3JtYXRJRCkKK3sKKyAgICBjb25z
dCBhdXRvICphdWRpb0Zvcm1hdExpc3RJdGVtID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0
UmljaGVzdERlY29kYWJsZUZvcm1hdChmb3JtYXREZXNjcmlwdGlvbik7CisgICAgbV9zb3VyY2VG
b3JtYXQgPSBhdWRpb0Zvcm1hdExpc3RJdGVtLT5tQVNCRDsKKworICAgIG1lbXNldCgmbV9kZXN0
aW5hdGlvbkZvcm1hdCwgMCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwor
ICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUZvcm1hdElEID0gb3V0cHV0Rm9ybWF0SUQ7CisgICAg
bV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fc291cmNlRm9ybWF0Lm1TYW1wbGVS
YXRlOworICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgPSBtX3NvdXJj
ZUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKG1f
ZGVzdGluYXRpb25Gb3JtYXQpOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Gb3JtYXRHZXRQ
cm9wZXJ0eShrQXVkaW9Gb3JtYXRQcm9wZXJ0eV9Gb3JtYXRJbmZvLCAwLCBOVUxMLCAmc2l6ZSwg
Jm1fZGVzdGluYXRpb25Gb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIEF1ZGlvRm9ybWF0R2V0UHJvcGVy
dHkgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBBdWRpb0NvbnZlcnRlclJlZiBjb252ZXJ0ZXI7CisgICAgaWYgKGF1dG8gZXJyb3Ig
PSBBdWRpb0NvbnZlcnRlck5ldygmbV9zb3VyY2VGb3JtYXQsICZtX2Rlc3RpbmF0aW9uRm9ybWF0
LCAmY29udmVydGVyKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRpb0NvbnZlcnRlck5ldyBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX2NvbnZl
cnRlciA9IGFkb3B0Q0YoY29udmVydGVyKTsKKworICAgIHNpemVfdCBjb29raWVTaXplID0gMDsK
KyAgICBjb25zdCB2b2lkICpjb29raWUgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdp
Y0Nvb2tpZShmb3JtYXREZXNjcmlwdGlvbiwgJmNvb2tpZVNpemUpOworICAgIGlmIChjb29raWVT
aXplKSB7CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0
eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29v
a2llLCAoVUludDMyKWNvb2tpZVNpemUsIGNvb2tpZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRp
bmcga0F1ZGlvQ29udmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29va2llIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
CisgICAgc2l6ZSA9IHNpemVvZihtX3NvdXJjZUZvcm1hdCk7CisgICAgaWYgKGF1dG8gZXJyb3Ig
PSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252
ZXJ0ZXJDdXJyZW50SW5wdXRTdHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX3NvdXJjZUZvcm1h
dCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50SW5wdXRTdHJl
YW1EZXNjcmlwdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmICghbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAibUJ5dGVzUGVyUGFja2V0
IHNob3VsZCBub3QgYmUgemVybyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgc2l6ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJv
ciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0Nv
bnZlcnRlckN1cnJlbnRPdXRwdXRTdHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX2Rlc3RpbmF0
aW9uRm9ybWF0KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRP
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3Jt
YXRJRCA9PSBrQXVkaW9Gb3JtYXRNUEVHNEFBQykgeworICAgICAgICAvLyBGSVhNRTogU2V0IG91
dHB1dEJpdFJhdGUgYWNjb3JkaW5nIE1lZGlhUmVjb3JkZXJPcHRpb25zLmF1ZGlvQml0c1BlclNl
Y29uZC4KKyAgICAgICAgVUludDMyIG91dHB1dEJpdFJhdGUgPSA2NDAwMDsKKyAgICAgICAgaWYg
KG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUgPj0gNDQxMDApCisgICAgICAgICAgICBv
dXRwdXRCaXRSYXRlID0gMTkyMDAwOworICAgICAgICBlbHNlIGlmIChtX2Rlc3RpbmF0aW9uRm9y
bWF0Lm1TYW1wbGVSYXRlIDwgMjIwMDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMzIw
MDA7CisKKyAgICAgICAgc2l6ZSA9IHNpemVvZihvdXRwdXRCaXRSYXRlKTsKKyAgICAgICAgaWYg
KGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgp
LCBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmICghbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQp
IHsKKyAgICAgICAgLy8gSWYgdGhlIGRlc3RpbmF0aW9uIGZvcm1hdCBpcyBWQlIsIHdlIG5lZWQg
dG8gZ2V0IG1heCBzaXplIHBlciBwYWNrZXQgZnJvbSB0aGUgY29udmVydGVyLgorICAgICAgICBz
aXplID0gc2l6ZW9mKG1fbWF4T3V0cHV0UGFja2V0U2l6ZSk7CisKKyAgICAgICAgaWYgKGF1dG8g
ZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVk
aW9Db252ZXJ0ZXJQcm9wZXJ0eU1heGltdW1PdXRwdXRQYWNrZXRTaXplLCAmc2l6ZSwgJm1fbWF4
T3V0cHV0UGFja2V0U2l6ZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
U3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVy
dGVyUHJvcGVydHlNYXhpbXVtT3V0cHV0UGFja2V0U2l6ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1f
ZGVzdGluYXRpb25CdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KGNvbXB1dGVCdWZmZXJTaXplRm9yQXVk
aW9Gb3JtYXQobV9kZXN0aW5hdGlvbkZvcm1hdCwgbV9tYXhPdXRwdXRQYWNrZXRTaXplLCBMT1df
V0FURVJfVElNRV9JTl9TRUNPTkRTKSk7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1C
eXRlc1BlclBhY2tldCkKKyAgICAgICAgbV9kZXN0aW5hdGlvblBhY2tldERlc2NyaXB0aW9ucy5y
ZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpIC8gbV9tYXhPdXRw
dXRQYWNrZXRTaXplKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzaXplX3QgQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBmb3JtYXQsIFVJbnQzMiBtYXhPdXRwdXRQYWNrZXRTaXpl
LCBGbG9hdDMyIGR1cmF0aW9uKQoreworICAgIFVJbnQzMiBudW1QYWNrZXRzID0gKGZvcm1hdC5t
U2FtcGxlUmF0ZSAqIGR1cmF0aW9uKSAvIGZvcm1hdC5tRnJhbWVzUGVyUGFja2V0OworICAgIFVJ
bnQzMiBvdXRwdXRQYWNrZXRTaXplID0gZm9ybWF0Lm1CeXRlc1BlclBhY2tldCA/IGZvcm1hdC5t
Qnl0ZXNQZXJQYWNrZXQgOiBtYXhPdXRwdXRQYWNrZXRTaXplOworICAgIFVJbnQzMiBidWZmZXJT
aXplID0gbnVtUGFja2V0cyAqIG91dHB1dFBhY2tldFNpemU7CisKKyAgICByZXR1cm4gYnVmZmVy
U2l6ZTsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF0dGFjaFByaW1p
bmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBpZiAoQ01U
SU1FX0lTX0lOVkFMSUQobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uKSkgeworICAgICAgICBBdWRp
b0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07CisgICAgICAgIFVJbnQzMiBz
aXplID0gc2l6ZW9mKHByaW1lSW5mbyk7CisKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRp
b0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQ
cmltZUluZm8sICZzaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBr
QXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRp
b24gPSBDTVRpbWVNYWtlKHByaW1lSW5mby5sZWFkaW5nRnJhbWVzLCBtX2Rlc3RpbmF0aW9uRm9y
bWF0Lm1TYW1wbGVSYXRlKTsKKyAgICB9CisKKyAgICBpZiAoQ01USU1FX0NPTVBBUkVfSU5MSU5F
KGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7CisgICAgICAgIENN
VGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsK
KyAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1pbmltdW0oc2FtcGxlRHVyYXRp
b24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7CisgICAgICAgIENGRGljdGlvbmFyeVJlZiB0
cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NG
QWxsb2NhdG9yRGVmYXVsdCk7CisgICAgICAgIENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNh
bXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnRE
aWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOworICAgICAgICBDRlJlbGVh
c2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uID0g
Q01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uLCB0cmltRHVyYXRpb24pOwor
ICAgIH0KK30KKworUmV0YWluUHRyPE5TTnVtYmVyPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KCkKK3sKKyAgICBVSW50MzIgZGVsYXlTaXpl
ID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICB1aW50MzJfdCBvcmlnaW5hbERlbGF5TW9kZSA9IDA7
CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVy
dGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCAmZGVsYXlTaXplLCAmb3Jp
Z2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0
eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICB9CisKKyAgICB1aW50MzJfdCBvcHRpbWFsRGVsYXlNb2RlID0ga0F1ZGlvQ29kZWNEZWxh
eU1vZGVfT3B0aW1hbDsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyU2V0UHJv
cGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUsIGRl
bGF5U2l6ZSwgJm9wdGltYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlv
Q29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBVSW50MzIgcHJpbWVTaXplID0gc2l6ZW9mKEF1ZGlv
Q29kZWNQcmltZUluZm8pOworICAgIEF1ZGlvQ29kZWNQcmltZUluZm8gcHJpbWVJbmZvIHsgMCwg
MCB9OworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2Nv
bnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1lSW5mbywgJnByaW1lU2l6ZSwg
JnByaW1lSW5mbykpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5UHJp
bWVJbmZvIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAg
IH0KKworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2Nv
bnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSwgZGVsYXlTaXplLCAm
b3JpZ2luYWxEZWxheU1vZGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3Ry
ZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29kZWNQcm9w
ZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0TlMoW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6KHBy
aW1lSW5mby5sZWFkaW5nRnJhbWVzIC8gbV9kZXN0aW5hdGlvbkZvcm1hdC5tRnJhbWVzUGVyUGFj
a2V0KV0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKFVJbnQzMiBudW1QYWNrZXRzLCBBdWRpb0J1
ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3QpCit7CisgICAgVmVjdG9yPGNoYXI+IGNvb2tpZTsKKyAg
ICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAgICBVSW50MzIg
Y29va2llU2l6ZSA9IDA7CisKKyAgICAgICAgYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0
UHJvcGVydHlJbmZvKG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDb21wcmVzc2lv
bk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgTlVMTCk7CisgICAgICAgIGlmICgoZXJyb3IgPT0g
bm9FcnIpICYmICEhY29va2llU2l6ZSkgeworICAgICAgICAgICAgY29va2llLnJlc2VydmVDYXBh
Y2l0eShjb29raWVTaXplKTsKKworICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0Nv
bnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDb21w
cmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwgY29va2llLmRhdGEoKSkpIHsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29r
aWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYgZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbjsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3Ig
PSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJm1f
ZGVzdGluYXRpb25Gb3JtYXQsIDAsIE5VTEwsIGNvb2tpZVNpemUsIGNvb2tpZS5kYXRhKCksIE5V
TEwsICZkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSkgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01B
dWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAgICAgICBtX2Rlc3RpbmF0aW9uRm9y
bWF0RGVzY3JpcHRpb24gPSBhZG9wdENGKGRlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24pOwor
ICAgICAgICBtX2dkckNvdW50TnVtID0gZ3JhZHVhbERlY29kZXJSZWZyZXNoQ291bnQoKTsKKyAg
ICB9CisKKyAgICBjaGFyICpkYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGZpbGxCdWZmZXJMaXN0
Lm1CdWZmZXJzWzBdLm1EYXRhKTsKKyAgICBzaXplX3QgZGF0YVNpemUgPSBmaWxsQnVmZmVyTGlz
dC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplOworCisgICAgQ01CbG9ja0J1ZmZlclJlZiBibG9j
a0J1ZmZlcjsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVt
b3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZGF0YVNpemUsIGtDRkFsbG9jYXRv
ckRlZmF1bHQsIE5VTEwsIDAsIGRhdGFTaXplLCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5v
d0ZsYWcsICZibG9ja0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNyZWF0ZVdp
dGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKGJsb2NrQnVmZmVyKTsKKworICAg
IGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMoZGF0YSwgYnVm
ZmVyLmdldCgpLCAwLCBkYXRhU2l6ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlclJlcGxh
Y2VEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7
CisgICAgfQorCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyOworICAgIGF1dG8g
ZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIuZ2V0KCksIHRydWUsIE5VTEwsIE5VTEwsIG1fZGVz
dGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgbnVtUGFja2V0cywgbV9jdXJyZW50TmF0
aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wLCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25z
LmRhdGEoKSwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENN
QXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIGlmIChbbV9n
ZHJDb3VudE51bSBpbnRWYWx1ZV0pCisgICAgICAgIENNU2V0QXR0YWNobWVudChzYW1wbGVCdWZm
ZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERlY29kZXJSZWZyZXNoLCAo
X19icmlkZ2UgQ0ZUeXBlUmVmKW1fZ2RyQ291bnROdW0uZ2V0KCksIGtDTUF0dGFjaG1lbnRNb2Rl
X1Nob3VsZFByb3BhZ2F0ZSk7CisKKyAgICByZXR1cm4gc2FtcGxlQnVmZmVyOworfQorCitPU1N0
YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlvQ29udmVydGVyQ29tcGxleElu
cHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiAqbnVtT3V0cHV0UGFja2V0c1B0
ciwgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0
aW9uICoqcGFja2V0RGVzY3JpcHRpb25PdXQsIHZvaWQgKmF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcikKK3sKKyAgICBhdXRvICpjb21wcmVzc29yID0gc3RhdGljX2Nhc3Q8QXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yKj4oYXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKTsKKyAgICByZXR1
cm4gY29tcHJlc3Nvci0+cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKG51bU91dHB1
dFBhY2tldHNQdHIsIGJ1ZmZlckxpc3QsIHBhY2tldERlc2NyaXB0aW9uT3V0KTsKK30KKworT1NT
dGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm92aWRlU291cmNlRGF0YU51bU91
dHB1dFBhY2tldHMoVUludDMyKiBudW1PdXRwdXRQYWNrZXRzUHRyLCBBdWRpb0J1ZmZlckxpc3Qq
IGF1ZGlvQnVmZmVyTGlzdCwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioqIHBhY2tldERl
c2NyaXB0aW9uT3V0KQoreworICAgIGlmIChwYWNrZXREZXNjcmlwdGlvbk91dCkKKyAgICAgICAg
KnBhY2tldERlc2NyaXB0aW9uT3V0ID0gTlVMTDsKKworICAgIGNvbnN0IFVJbnQzMiBudW1QYWNr
ZXRzVG9Db3B5ID0gKm51bU91dHB1dFBhY2tldHNQdHI7CisgICAgc2l6ZV90IG51bUJ5dGVzVG9D
b3B5ID0gKG51bVBhY2tldHNUb0NvcHkgKiBtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQp
OworCisgICAgaWYgKGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnMgPT0gMSkgeworICAg
ICAgICBzaXplX3QgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyID0gMDsKKworICAgICAgICBt
X3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobnVtQnl0ZXNUb0NvcHkpOworCisgICAgICAg
IHdoaWxlIChudW1CeXRlc1RvQ29weSkgeworICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tC
dWZmZXJTaXplIDw9IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAg
ICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgbV9z
YW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkp
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGF1dG8gc2Ft
cGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+
KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkp
KSk7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxv
Y2tCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0
RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAgICAgICAgICAgICBpZiAo
IW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVC
dWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAgICAgICAgICBtX3NhbXBs
ZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNl
dEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNp
emUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgp
KTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0g
MDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXIp
IHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiA9
IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgLSBtX2N1
cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSk7CisgICAgICAgICAgICAgICAgaWYgKGF1
dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVy
LmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyLCBudW1CeXRlc1RvQ29w
eUZyb21TYW1wbGVCYnVmLCAobV9zb3VyY2VCdWZmZXIuZGF0YSgpICsgY3VycmVudE9mZnNldElu
U291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNv
cHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbnVtQnl0
ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgICAg
ICBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgKz0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxl
QmJ1ZjsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVy
ICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IG1fc291cmNl
QnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0
YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOworICAgICAgICBhdWRpb0J1
ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fc291cmNlRm9ybWF0Lm1D
aGFubmVsc1BlckZyYW1lOworCisgICAgICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlv
QnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1C
eXRlc1BlclBhY2tldCk7CisgICAgICAgIHJldHVybiBub0VycjsKKyAgICB9CisKKyAgICBBU1NF
UlQoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAyKTsKKworICAgIC8vIEZJWE1F
OiBTdXBwb3J0IGludGVybGVhdmVkIGRhdGEgYnkgdW5pbnRlcmxlYXZpbmcgbV9zb3VyY2VCdWZm
ZXIgaWYgbmVlZGVkLgorICAgIEFTU0VSVChtX3NvdXJjZUZvcm1hdC5tRm9ybWF0RmxhZ3MgJiBr
QXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZCk7CisKKyAgICBtX3NvdXJjZUJ1ZmZlci5y
ZXNlcnZlQ2FwYWNpdHkoMiAqIG51bUJ5dGVzVG9Db3B5KTsKKyAgICBhdXRvKiBmaXJzdENoYW5u
ZWwgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7CisgICAgYXV0byogc2Vjb25kQ2hhbm5lbCA9IG1f
c291cmNlQnVmZmVyLmRhdGEoKSArIG51bUJ5dGVzVG9Db3B5OworCisgICAgc2l6ZV90IGN1cnJl
bnRPZmZzZXRJblNvdXJjZUJ1ZmZlciA9IDA7CisgICAgd2hpbGUgKG51bUJ5dGVzVG9Db3B5KSB7
CisgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA8PSBtX2N1cnJlbnRPZmZzZXRJ
blNhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZl
cikgeworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBudWxscHRyOworICAg
ICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5KG1faW5wdXRCdWZmZXJRdWV1
ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGF1dG8gc2Ft
cGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+
KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkp
KSk7CisgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRDRigoQ01CbG9ja0J1
ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJHZXREYXRh
QnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAgICAgICAgaWYgKCFtX3NhbXBs
ZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRh
QnVmZmVyIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXpl
ID0gMDsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVy
ID0gMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgo
bV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSkgLyAyOworICAgICAgICAgICAgbV9jdXJyZW50T2Zm
c2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9z
YW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgc2l6ZV90IG51bUJ5dGVzVG9Db3B5RnJv
bVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1CeXRlc1RvQ29weSwgKG1fc2FtcGxlQmxvY2tCdWZm
ZXJTaXplIC0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikpOworICAgICAgICAg
ICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJs
b2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyLCBudW1C
eXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoZmlyc3RDaGFubmVsICsgY3VycmVudE9mZnNldElu
U291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURh
dGFCeXRlcyBmaXJzdCBjaGFubmVsIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRv
IGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5n
ZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArIG1fc2FtcGxlQmxvY2tC
dWZmZXJTaXplLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoc2Vjb25kQ2hhbm5lbCAr
IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcikpKSB7CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01C
bG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc2Vjb25kIGNoYW5uZWwgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsK
KyAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciArPSBudW1CeXRlc1RvQ29w
eUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9j
a0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICB9CisgICAg
fQorCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IGZpcnN0Q2hhbm5l
bDsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBjdXJy
ZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sw
XS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sx
XS5tRGF0YSA9IHNlY29uZENoYW5uZWw7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sx
XS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOworICAgIGF1ZGlv
QnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0gMTsKKworICAgICpudW1P
dXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRl
U2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisgICAgcmV0dXJuIG5vRXJy
OworfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1
ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRpbWUgbG93V2F0ZXJUaW1lKQoreworICAgIGlmICgh
bV9jb252ZXJ0ZXIpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSAoQ01TYW1wbGVCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1faW5wdXRCdWZmZXJRdWV1
ZS5nZXQoKSkpKTsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlcik7CisKKyAgICAgICAgbV9jdXJyZW50
TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRp
b25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9u
VGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAo
YnVmZmVyKTsKKworICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZm
ZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpOworICAgICAgICBpZiAoIWluaXRBdWRpb0Nv
bnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uLCBtX291
dHB1dENvZGVjVHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2hpbGUg
KENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVyVGltZSkgfHwgQ01USU1FX0NPTVBBUkVfSU5MSU5F
KGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJRdWV1ZUdldER1cmF0aW9uKG1faW5wdXRCdWZmZXJR
dWV1ZS5nZXQoKSkpKSB7CisgICAgICAgIEF1ZGlvQnVmZmVyTGlzdCBmaWxsQnVmZmVyTGlzdDsK
KworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9IDE7CisgICAgICAgIGZp
bGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fZGVzdGluYXRpb25G
b3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJz
WzBdLm1EYXRhQnl0ZVNpemUgPSAoVUludDMyKW1fZGVzdGluYXRpb25CdWZmZXIuY2FwYWNpdHko
KTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2Rlc3RpbmF0
aW9uQnVmZmVyLmRhdGEoKTsKKworICAgICAgICBVSW50MzIgb3V0cHV0UGFja2V0U2l6ZSA9IG1f
ZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gbV9kZXN0aW5hdGlvbkZvcm1hdC5t
Qnl0ZXNQZXJQYWNrZXQgOiBtX21heE91dHB1dFBhY2tldFNpemU7CisgICAgICAgIFVJbnQzMiBu
dW1PdXRwdXRQYWNrZXRzID0gKFVJbnQzMiltX2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5KCkg
LyBvdXRwdXRQYWNrZXRTaXplOworCisgICAgICAgIGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRl
ckZpbGxDb21wbGV4QnVmZmVyKG1fY29udmVydGVyLmdldCgpLCBhdWRpb0NvbnZlcnRlckNvbXBs
ZXhJbnB1dERhdGFQcm9jLCB0aGlzLCAmbnVtT3V0cHV0UGFja2V0cywgJmZpbGxCdWZmZXJMaXN0
LCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSk7CisgICAgICAgIGlmIChl
cnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJGaWxsQ29tcGxleEJ1ZmZlciBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICghbnVtT3V0cHV0UGFja2V0cykKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGF1dG8gYnVmZmVyID0gc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMobnVtT3V0cHV0
UGFja2V0cywgZmlsbEJ1ZmZlckxpc3QpOworCisgICAgICAgIGF0dGFjaFByaW1pbmdUcmltc0lm
TmVlZGVkKGJ1ZmZlcik7CisKKyAgICAgICAgZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldE91dHB1
dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIsIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlv
blRpbWVTdGFtcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1w
bGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBDTVRpbWUg
bmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7CisgICAg
ICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1
cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG5hdGl2ZUR1cmF0aW9uKTsKKworICAg
ICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0
aW9uKGJ1ZmZlcik7CisgICAgICAgIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFt
cCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAsIG91dHB1
dER1cmF0aW9uKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVldWVFbnF1ZXVlKG1fb3V0
cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAgIGlmIChlcnJvcikgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVy
UmVmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUobV9p
bnB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
KGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZl
clF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIHByb2Nlc3NTYW1w
bGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUobV9sb3dXYXRlclRpbWUpOworfQorCit2b2lkIEF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVy
UmVmIGJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwg
XnsKKyAgICAgICAgaWYgKG1faXNFbmNvZGluZykKKyAgICAgICAgICAgIHByb2Nlc3NTYW1wbGVC
dWZmZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVCdWZmZXJSZWYgQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVy
biAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRI
ZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisKK1JldGFpblB0cjxDTVNhbXBs
ZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxl
QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0
X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1fb3V0cHV0QnVmZmVy
UXVldWUuZ2V0KCkpKSkpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCBiMTQ3Y2EyODgyOWIwZjEwMzBiZGE3NGEwODQy
NmM0NTY1ZTk4NzFlLi4wNTE4NjA4NmEyNTYxNjAyNDZjZDhkMzIyMTU4YzU2ODkxYTQyYzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aApAQCAtMjQsNyArMjQsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVM
RUdBVEUpCisKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAg
LTM1LDEwICszNywxNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKKyNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1
ZGlvVHlwZXMuaD4KKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ01UaW1lLmg+CisKIHR5cGVkZWYgc3Ry
dWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVkZWYgY29u
c3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25S
ZWY7Cit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuICpDTUJ1
ZmZlclF1ZXVlVHJpZ2dlclRva2VuOwogCiBPQkpDX0NMQVNTIEFWQXNzZXRXcml0ZXI7CiBPQkpD
X0NMQVNTIEFWQXNzZXRXcml0ZXJJbnB1dDsKK09CSkNfQ0xBU1MgV2ViQVZBc3NldFdyaXRlckRl
bGVnYXRlOwogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1lZGlhVGltZTsKQEAgLTQ2LDUxICs1
NCw3MiBAQCBjbGFzcyBNZWRpYVRpbWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOwogY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bjsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0Rh
dGE7CitjbGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiAKLWNsYXNzIFdFQkNPUkVf
RVhQT1JUIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFk
OjpNYWluPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
PiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgV1RG
OjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlciwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFnZXI+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
PiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNvbnN0
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKTsKICAgICBzdGF0aWMgUmVmUHRy
PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKTsKLSAg
ICAKLSAgICBib29sIHNldHVwV3JpdGVyKCk7Ci0gICAgYm9vbCBzZXRWaWRlb0lucHV0KGludCB3
aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgYm9vbCBzZXRBdWRpb0lucHV0KCk7CisKICAgICB2b2lk
IGFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKICAgICB2b2lkIGFw
cGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAg
ICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmKTsKIAorICAgIHZvaWQgYXBwZW5k
RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZERhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJik7CisKIHByaXZhdGU6Ci0gICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIo
UmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYsIFN0cmluZyYmIHBhdGgpOworICAgIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pOwogICAgIHZv
aWQgY2xlYXIoKTsKIAotICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKLSAg
ICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX3ZpZGVvSW5wdXQ7Ci0gICAgUmV0YWlu
UHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0lucHV0OwotCi0gICAgU3RyaW5nIG1fcGF0
aDsKLSAgICBMb2NrIG1fdmlkZW9Mb2NrOwotICAgIExvY2sgbV9hdWRpb0xvY2s7Ci0gICAgQmlu
YXJ5U2VtYXBob3JlIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZTsKLSAgICBCaW5hcnlTZW1hcGhv
cmUgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmU7Ci0gICAgQmluYXJ5U2VtYXBob3JlIG1f
ZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlOworICAgIGJvb2wgaW5pdGlhbGl6ZSgpOworCisg
ICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCos
IENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOworICAgIHN0YXRpYyB2b2lkIGNvbXByZXNzZWRB
dWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2Vu
KTsKKworICAgIHZvaWQgc3RhcnRBc3NldFdyaXRlcigpOworICAgIHZvaWQgYXBwZW5kQ29tcHJl
c3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKworICAgIGJvb2wgYXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2Ft
cGxlQnVmZmVyKCk7CisgICAgYm9vbCBhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIo
KTsKKworICAgIHZvaWQgcHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcnMoKTsK
KyAgICB2b2lkIHByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCk7CisKKyAg
ICB2b2lkIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIGFwcGVuZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVk
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKICAgICBib29sIG1faGFzU3RhcnRlZFdy
aXRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1N0b3BwZWQgeyBmYWxzZSB9OwotICAgIGJv
b2wgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgeyB0cnVlIH07Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBt
X2F1ZGlvUHVsbFF1ZXVlOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV92aWRlb1B1bGxRdWV1ZTsK
LSAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX3ZpZGVvQnVmZmVyUG9v
bDsKLSAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX2F1ZGlvQnVmZmVy
UG9vbDsKKworICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIGJv
b2wgbV9pc1N0b3BwaW5nIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Rh
dGE7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4g
bV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKKworICAgIGJvb2wgbV9oYXNBdWRpbzsKKyAg
ICBib29sIG1faGFzVmlkZW87CisKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJl
Zj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fYXVkaW9Db21wcmVzc29yOworICAgIFJldGFpblB0cjxB
VkFzc2V0V3JpdGVySW5wdXQ+IG1fYXVkaW9Bc3NldFdyaXRlcklucHV0OworCisgICAgUmV0YWlu
UHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBtX3ZpZGVvQ29t
cHJlc3NvcjsKKyAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX3ZpZGVvQXNzZXRX
cml0ZXJJbnB1dDsKKyAgICBDTVRpbWUgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1lOworICAg
IENNVGltZSBtX2xhc3RWaWRlb0RlY29kaW5nVGltZTsKKyAgICBib29sIG1faGFzRW5jb2RlZFZp
ZGVvU2FtcGxlcyB7IGZhbHNlIH07CisKKyAgICBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRl
bGVnYXRlPiBtX3dyaXRlckRlbGVnYXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAyMzM1NGY0Nzg0
ZGUwOTJmMDQ4N2MxODU0ZmM1YjI2YTVlMjIxMWFjLi5lYzNiYjZlZjQzMjQ1ZTllMzkyOThiMDFm
ZmQyN2I2YmFlOWM2MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0yNiwyNTMgKzI2LDM0OCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKIAot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKKyNpbmNsdWRl
ICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgi
CiAjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9u
L0FWQXNzZXRXcml0ZXIuaD4KICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcklu
cHV0Lmg+CisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJfUHJpdmF0ZS5oPgor
I2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW5j
bHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAogI2ltcG9ydCA8
cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKLSN1bmRlZiBBVkVuY29kZXJCaXRS
YXRlS2V5Ci0jZGVmaW5lIEFWRW5jb2RlckJpdFJhdGVLZXkgZ2V0QVZFbmNvZGVyQml0UmF0ZUtl
eVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZGb3JtYXRJREtleQotI2RlZmluZSBBVkZvcm1hdElE
S2V5IGdldEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQotI3VuZGVmIEFWTnVtYmVyT2ZDaGFu
bmVsc0tleQotI2RlZmluZSBBVk51bWJlck9mQ2hhbm5lbHNLZXkgZ2V0QVZOdW1iZXJPZkNoYW5u
ZWxzS2V5V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBBVlNhbXBsZVJhdGVLZXkKLSNkZWZpbmUgQVZT
YW1wbGVSYXRlS2V5IGdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCitAaW50ZXJmYWNl
IFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxBVkFzc2V0V3JpdGVyRGVsZWdh
dGU+IHsKKyAgICBXZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBt
X3dyaXRlcjsKK30KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoV3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciopd3JpdGVyOwor
LSAodm9pZCljbG9zZTsKIAotdXNpbmcgbmFtZXNwYWNlIFBBTDsKK0BlbmQKIAotc3RhdGljIE5T
U3RyaW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKK0BpbXBsZW1lbnRhdGlvbiBX
ZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgeworfTsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
V3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciopd3JpdGVyCiB7Ci0g
ICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgpKQotICAgICAg
ICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKTsKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKHNl
bGYpCisgICAgICAgIHNlbGYtPm1fd3JpdGVyID0gbWFrZVdlYWtQdHIod3JpdGVyKTsKIAotICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZGb3JtYXRJREtleSIp
OwotICAgIHJldHVybiBAIkFWRm9ybWF0SURLZXkiOworICAgIHJldHVybiBzZWxmOwogfQogCi1z
dGF0aWMgTlNTdHJpbmcgKmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCist
ICh2b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVj
ZUZyYWdtZW50ZWRIZWFkZXJEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkSGVhZGVyRGF0YQogewot
ICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgp
KQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVs
c0tleSgpOworICAgIFVOVVNFRF9QQVJBTShhc3NldFdyaXRlcik7CisgICAgaWYgKCFpc01haW5U
aHJlYWQoKSkgeworICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRIZWFkZXJEYXRh
IGxlbmd0aF0pIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYg
PSBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVyID0gV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFn
bWVudGVkSGVhZGVyRGF0YSBieXRlc10pLCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBpZiAocHJvdGVjdGVkU2VsZi0+bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAgIHBy
b3RlY3RlZFNlbGYtPm1fd3JpdGVyLT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVk51bWJlck9mQ2hhbm5lbHNL
ZXkiKTsKLSAgICByZXR1cm4gQCJBVk51bWJlck9mQ2hhbm5lbHNLZXkiOworICAgIGlmIChtX3dy
aXRlcikKKyAgICAgICAgbV93cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRlc10pLCBbZnJhZ21lbnRlZEhlYWRlckRhdGEg
bGVuZ3RoXSk7CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZh
bGxiYWNrKCkKKy0gKHZvaWQpYXNzZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRl
ciBkaWRQcm9kdWNlRnJhZ21lbnRlZE1lZGlhRGF0YTooTlNEYXRhICopZnJhZ21lbnRlZE1lZGlh
RGF0YSBmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0OihBVkZyYWdtZW50ZWRNZWRpYURhdGFSZXBv
cnQgKilmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0CiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9B
VkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9B
VkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCk7CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3Jp
dGVyKTsKKyAgICBVTlVTRURfUEFSQU0oZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCk7CisgICAg
aWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50
ZWRNZWRpYURhdGEgbGVuZ3RoXSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBi
dWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4oW2ZyYWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyKQorICAgICAgICAgICAg
ICAgICAgICBwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZl
cikpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZTYW1wbGVS
YXRlS2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZTYW1wbGVSYXRlS2V5IjsKKyAgICBpZiAobV93cml0
ZXIpCisgICAgICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihbZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5n
dGhdKTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZh
bGxiYWNrKCkKKy0gKHZvaWQpY2xvc2UKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRh
dGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZv
dW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgpOworICAgIG1fd3JpdGVyID0gbnVsbHB0cjsK
K30KKworQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBQQUw7
CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRW5jb2Rl
ckJpdFJhdGVLZXkiKTsKLSAgICByZXR1cm4gQCJBVkVuY29kZXJCaXRSYXRlS2V5IjsKK1JlZlB0
cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgYXV0
byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGhhc0F1
ZGlvLCB3aWR0aCAmJiBoZWlnaHQpKTsKKyAgICBpZiAoIXdyaXRlci0+aW5pdGlhbGl6ZSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gd3JpdGVyOwogfQogCi1SZWZQdHI8
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpj
cmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNvbnN0IE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKQordm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCAqbWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pCiB7Ci0g
ICAgaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKLSAgICBpZiAodmlkZW9UcmFjaykgewotICAg
ICAgICBhdXRvJiBzZXR0aW5ncyA9IHZpZGVvVHJhY2stPnNldHRpbmdzKCk7Ci0gICAgICAgIHdp
ZHRoID0gc2V0dGluZ3Mud2lkdGgoKTsKLSAgICAgICAgaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0
KCk7Ci0gICAgfQotICAgIHJldHVybiBjcmVhdGUoISFhdWRpb1RyYWNrLCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICBhdXRvICp3cml0ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcio+KG1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKTsKKyAgICB3cml0ZXItPnByb2Nlc3NO
ZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCk7CiB9CiAKLVJlZlB0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShib29s
IGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkICptZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlciwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbikKIHsKLSAg
ICBOU1N0cmluZyAqZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KEAidmlkZW9zIik7Ci0gICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIvJWxsZC5tcDQiLCBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRp
bWVDbG9jaygpKS52YWx1ZV07Ci0gICAgTlNTdHJpbmcgKnBhdGggPSBbZGlyZWN0b3J5IHN0cmlu
Z0J5QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1lXTsKKyAgICBhdXRvICp3cml0ZXIgPSBzdGF0aWNf
Y2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcio+KG1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyKTsKKyAgICB3cml0ZXItPnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJz
KCk7Cit9CisKK01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcihib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKQorICAgIDogbV9oYXNBdWRpbyho
YXNBdWRpbykKKyAgICAsIG1faGFzVmlkZW8oaGFzVmlkZW8pCit7Cit9CisKK01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQoreworICAgIGNs
ZWFyKCk7Cit9CiAKLSAgICBOU1VSTCAqb3V0cHV0VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpwYXRoXTsKLSAgICBTdHJpbmcgZmlsZVBhdGggPSBbcGF0aCBVVEY4U3RyaW5nXTsKK2Jvb2wg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmluaXRpYWxpemUoKQorewogICAgIE5TRXJyb3Ig
KmVycm9yID0gbmlsOwotICAgIGF1dG8gYXZBc3NldFdyaXRlciA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0aFVSTDpvdXRwdXRVUkwgZmlsZVR5cGU6
QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOworICAgIG1fd3JpdGVyID0gYWRvcHROUyhb
UEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRXaXRoRmlsZVR5cGU6QVZGaWxl
VHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNl
IGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29kZSk7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0
byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFdURk1v
dmUoYXZBc3NldFdyaXRlciksIFdURk1vdmUoZmlsZVBhdGgpKSk7CisgICAgbV93cml0ZXJEZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRo
V3JpdGVyOiB0aGlzXSk7CisgICAgW21fd3JpdGVyLmdldCgpIHNldERlbGVnYXRlOm1fd3JpdGVy
RGVsZWdhdGUuZ2V0KCldOwogCi0gICAgaWYgKGhhc0F1ZGlvICYmICF3cml0ZXItPnNldEF1ZGlv
SW5wdXQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAod2lkdGggJiYgaGVp
Z2h0KSB7Ci0gICAgICAgIGlmICghd3JpdGVyLT5zZXRWaWRlb0lucHV0KHdpZHRoLCBoZWlnaHQp
KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKG1faGFzQXVkaW8pIHsKKyAg
ICAgICAgbV9hdWRpb0NvbXByZXNzb3IgPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNy
ZWF0ZShjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7CisgICAgICAg
IGlmICghbV9hdWRpb0NvbXByZXNzb3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotCi0gICAgcmV0dXJuIFdURk1vdmUod3JpdGVyKTsKKyAgICBpZiAobV9oYXNWaWRlbykgewor
ICAgICAgICBtX3ZpZGVvQ29tcHJlc3NvciA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
Y3JlYXRlKGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQsIGNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZl
ckNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgaWYgKCFtX3ZpZGVvQ29tcHJlc3NvcikKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLU1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRhaW5Q
dHI8QVZBc3NldFdyaXRlcj4mJiBhdkFzc2V0V3JpdGVyLCBTdHJpbmcmJiBmaWxlUGF0aCkKLSAg
ICA6IG1fd3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRlcikpCi0gICAgLCBtX3BhdGgoV1RGTW92
ZShmaWxlUGF0aCkpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3
Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpCiB7CisgICAgQVNTRVJUKG1faGFzVmlkZW8p
OworICAgIGlmICghbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIG1fdmlkZW9G
b3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24obV92
aWRlb0NvbXByZXNzb3ItPmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpKTsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10geworICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIGlmIChtX2hhc0F1ZGlvICYmICFtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24pCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAg
ICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCisgICAgICAgIHJl
dHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOwogfQogCi1NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKK3ZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1w
bGVCdWZmZXJzKCkKIHsKLSAgICBjbGVhcigpOworICAgIEFTU0VSVChtX2hhc0F1ZGlvKTsKKyAg
ICBpZiAoIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikgeworICAgICAgICBtX2F1ZGlvRm9ybWF0
RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKG1fYXVkaW9D
b21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVCdWZmZXIoKSk7CisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXNdIHsKKyAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiAobV9oYXNWaWRlbyAmJiAhbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc3RhcnRBc3NldFdyaXRlcigp
OworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKQorICAg
ICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKIH0KIAot
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlcigpCiB7Ci0gICAgaWYgKG1fdmlkZW9J
bnB1dCkgewotICAgICAgICBtX3ZpZGVvSW5wdXQuY2xlYXIoKTsKLSAgICAgICAgZGlzcGF0Y2hf
cmVsZWFzZShtX3ZpZGVvUHVsbFF1ZXVlKTsKKyAgICBpZiAobV9oYXNWaWRlbykgeworICAgICAg
ICBtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3Jp
dGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0
cHV0U2V0dGluZ3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6bV92aWRlb0Zvcm1hdERlc2NyaXB0aW9u
LmdldCgpXSk7CisgICAgICAgIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVk
aWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2Fu
QWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgdmlkZW8iKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5w
dXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOwogICAgIH0KLSAgICBpZiAobV9hdWRp
b0lucHV0KSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRj
aF9yZWxlYXNlKG1fYXVkaW9QdWxsUXVldWUpOworICAgIAorICAgIGlmIChtX2hhc0F1ZGlvKSB7
CisgICAgICAgIG1fYXVkaW9Bc3NldFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FW
QXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVB
dWRpbyBvdXRwdXRTZXR0aW5nczpuaWwgc291cmNlRm9ybWF0SGludDptX2F1ZGlvRm9ybWF0RGVz
Y3JpcHRpb24uZ2V0KCldKTsKKyAgICAgICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IHNldEV4
cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOworICAgICAgICBpZiAoIVttX3dyaXRlci5n
ZXQoKSBjYW5BZGRJbnB1dDptX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0pIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIGNhbkFkZElucHV0IGZvciBhdWRpbyIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFttX3dyaXRlci5nZXQo
KSBhZGRJbnB1dDptX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV07CisgICAgfQorICAgIAor
ICAgIGlmICghW21fd3JpdGVyLmdldCgpIHN0YXJ0V3JpdGluZ10pIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3Rh
cnRBc3NldFdyaXRlciBmYWlsZWQgc3RhcnRXcml0aW5nIik7CisgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgaWYgKG1fd3JpdGVyKQotICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogCi0gICAg
bV9kYXRhID0gbnVsbHB0cjsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOworICAgIFttX3dyaXRlci5nZXQoKSBzdGFydFNlc3Npb25BdFNvdXJjZVRp
bWU6a0NNVGltZVplcm9dOworCisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsK
KworICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOwogfQogCi1ib29sIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhlaWdodCkKK2Jv
b2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBs
ZUJ1ZmZlcigpCiB7Ci0gICAgQVNTRVJUKCFtX3ZpZGVvSW5wdXQpOwotICAgIAotICAgIE5TRGlj
dGlvbmFyeSAqY29tcHJlc3Npb25Qcm9wZXJ0aWVzID0gQHsKLSAgICAgICAgQVZWaWRlb0F2ZXJh
Z2VCaXRSYXRlS2V5IDogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAx
Ml0sCi0gICAgICAgIEFWVmlkZW9FeHBlY3RlZFNvdXJjZUZyYW1lUmF0ZUtleSA6IEAoMzApLAot
ICAgICAgICBBVlZpZGVvTWF4S2V5RnJhbWVJbnRlcnZhbEtleSA6IEAoMTIwKSwKLSAgICAgICAg
QVZWaWRlb1Byb2ZpbGVMZXZlbEtleSA6IEFWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9M
ZXZlbAotICAgIH07Ci0KLSAgICBOU0RpY3Rpb25hcnkgKnZpZGVvU2V0dGluZ3MgPSBAewotICAg
ICAgICBBVlZpZGVvQ29kZWNLZXk6IEFWVmlkZW9Db2RlY0gyNjQsCi0gICAgICAgIEFWVmlkZW9X
aWR0aEtleTogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6d2lkdGhdLAotICAgICAgICBBVlZpZGVv
SGVpZ2h0S2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpoZWlnaHRdLAotICAgICAgICBBVlZp
ZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5OiBjb21wcmVzc2lvblByb3BlcnRpZXMKLSAgICB9
OwotICAgIAotICAgIG1fdmlkZW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3Jp
dGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0
cHV0U2V0dGluZ3M6dmlkZW9TZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5pbF0pOwotICAgIFtt
X3ZpZGVvSW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07Ci0gICAgCi0g
ICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV92aWRlb0lucHV0LmdldCgpXSkgewotICAg
ICAgICBtX3ZpZGVvSW5wdXQgPSBudWxscHRyOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgInRoZSB2aWRlbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhl
IEFWQXNzZXRXcml0ZXIiKTsKKyAgICBpZiAoIW1fYXVkaW9Db21wcmVzc29yKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFttX3dyaXRlciBhZGRJbnB1dDptX3ZpZGVvSW5wdXQu
Z2V0KCldOwotICAgIG1fdmlkZW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldl
YkNvcmVWaWRlb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklB
TCk7CisKKyAgICBpZiAoIVttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1l
ZGlhRGF0YV0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gYnVmZmVyID0gbV9h
dWRpb0NvbXByZXNzb3ItPnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0
LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRBdWRpb0lucHV0KCkK
K2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1Nh
bXBsZUJ1ZmZlcigpCiB7Ci0gICAgQVNTRVJUKCFtX2F1ZGlvSW5wdXQpOworICAgIGlmICghbV92
aWRlb0NvbXByZXNzb3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5TRGljdGlvbmFy
eSAqYXVkaW9TZXR0aW5ncyA9IEB7Ci0gICAgICAgIEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4
MDAwKSwKLSAgICAgICAgQVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAot
ICAgICAgICBBVk51bWJlck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAotICAgICAgICBBVlNhbXBsZVJh
dGVLZXkgOiBAKDIyMDUwKQotICAgIH07CisgICAgaWYgKCFbbV92aWRlb0Fzc2V0V3JpdGVySW5w
dXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBtX2F1ZGlvSW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5z
dGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdz
OmF1ZGlvU2V0dGluZ3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsKLSAgICBbbV9hdWRpb0lucHV0
IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOwotICAgIAotICAgIGlmICghW21f
d3JpdGVyIGNhbkFkZElucHV0Om1fYXVkaW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV9hdWRp
b0lucHV0ID0gbnVsbHB0cjsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJ0aGUgYXVkaW8gaW5wdXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3Jp
dGVyIik7CisgICAgYXV0byBidWZmZXIgPSBtX3ZpZGVvQ29tcHJlc3Nvci0+dGFrZU91dHB1dFNh
bXBsZUJ1ZmZlcigpOworICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIFttX3dyaXRlciBhZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldOwotICAgIG1f
YXVkaW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVBdWRpb1JlY29y
ZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisKKyAgICBtX2xh
c3RWaWRlb1ByZXNlbnRhdGlvblRpbWUgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRp
bWVTdGFtcChidWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lID0gQ01T
YW1wbGVCdWZmZXJHZXREZWNvZGVUaW1lU3RhbXAoYnVmZmVyLmdldCgpKTsKKyAgICBtX2hhc0Vu
Y29kZWRWaWRlb1NhbXBsZXMgPSB0cnVlOworCisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0
LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVl
OwogfQogCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2Vk
U2FtcGxlQnVmZmVycygpCit7CisgICAgd2hpbGUgKGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBs
ZUJ1ZmZlcigpIHx8IGFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpKSB7IH07Cit9
CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1h
cmtlcihBVkFzc2V0V3JpdGVySW5wdXQgKmFzc2V0V3JpdGVySW5wdXQsIENNVGltZSBwcmVzZW50
YXRpb25UaW1lU3RhbXAsIENNVGltZSBkZWNvZGluZ1RpbWVTdGFtcCkKK3sKKyAgICBDTVNhbXBs
ZVRpbWluZ0luZm8gdGltaW5nSW5mbyA9IHsga0NNVGltZUludmFsaWQsIHByZXNlbnRhdGlvblRp
bWVTdGFtcCwgZGVjb2RpbmdUaW1lU3RhbXB9OworCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgYnVm
ZmVyID0gTlVMTDsKKyAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgTlVMTCwgdHJ1ZSwgTlVMTCwgTlVMTCwgTlVMTCwgMCwgMSwgJnRpbWlu
Z0luZm8sIDAsIE5VTEwsICZidWZmZXIpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFw
cGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2VyIGZhaWxlZCBDTVNhbXBsZUJ1ZmZl
ckNyZWF0ZSB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1
dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRihidWZmZXIpOworCisgICAgQ01TZXRBdHRhY2htZW50
KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRzUHJl
dmlvdXNTYW1wbGVEdXJhdGlvbiwga0NGQm9vbGVhblRydWUsIGtDTUF0dGFjaG1lbnRNb2RlX1No
b3VsZFByb3BhZ2F0ZSk7CisgICAgaWYgKCFbYXNzZXRXcml0ZXJJbnB1dCBhcHBlbmRTYW1wbGVC
dWZmZXI6c2FtcGxlQnVmZmVyLmdldCgpXSkKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRTYW1wbGVCdWZmZXIg
dG8gd3JpdGVyIGlucHV0IGZhaWxlZCIpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjphcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2hhc0Vu
Y29kZWRWaWRlb1NhbXBsZXMpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVh
ZHlGb3JNb3JlTWVkaWFEYXRhXSkgeworICAgICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVE
dXJhdGlvbk1hcmtlcihtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9Q
cmVzZW50YXRpb25UaW1lLCBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2Nr
ID0gbWFrZUJsb2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgICAgICBpZiAod2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGFwcGVuZEVuZHNQcmV2aW91c1Nh
bXBsZUR1cmF0aW9uTWFya2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpLCBtX2xhc3RW
aWRlb1ByZXNlbnRhdGlvblRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsKKyAgICAgICAg
ICAgIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBtYXJrQXNGaW5pc2hlZF07CisgICAgICAgIH0K
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKyAgICBbbV92aWRlb0Fzc2V0
V3JpdGVySW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOmJsb2NrLmdldCgpXTsKK30KKwordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXBwZW5kQ29t
cHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKyAgICBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRp
b25JZk5lZWRlZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKCkKK3sKKyAgICBpZiAobV93cml0ZXIpCisgICAg
ICAgIG1fd3JpdGVyLmNsZWFyKCk7CisKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5k
bGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKKwogc3RhdGlj
IGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZmZXJXaXRo
Q3VycmVudFRpbWVTdGFtcChDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikKIHsKICAg
ICBDTVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xv
Y2soKSk7CiAgICAgQ01JdGVtQ291bnQgY291bnQgPSAwOwogICAgIENNU2FtcGxlQnVmZmVyR2V0
U2FtcGxlVGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCAwLCBuaWwsICZjb3VudCk7Ci0g
ICAgCisKICAgICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3VudCk7CiAg
ICAgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIs
IGNvdW50LCB0aW1lSW5mby5kYXRhKCksICZjb3VudCk7Ci0gICAgCi0gICAgZm9yIChDTUl0ZW1D
b3VudCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKworICAgIGZvciAoYXV0byBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKICAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1wID0ga0NN
VGltZUludmFsaWQ7CiAgICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9
IHN0YXJ0VGltZTsKICAgICB9Ci0gICAgCisKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdCdWZm
ZXIgPSBudWxscHRyOwotICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlX
aXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwg
dGltZUluZm8uZGF0YSgpLCAmbmV3QnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYgKGF1
dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAmbmV3
QnVmZmVyKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyIENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1p
bmcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KICAgICByZXR1cm4gYWRvcHRDRihuZXdCdWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJl
ZiBzYW1wbGVCdWZmZXIpCiB7Ci0gICAgQVNTRVJUKG1fdmlkZW9JbnB1dCk7Ci0gICAgaWYgKG1f
aXNTdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRp
bmcpIHsKLSAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewotICAgICAgICAg
ICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJv
ciBjb2RlICVsZCIsIChsb25nKVttX3dyaXRlciBlcnJvcl0pOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6
Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICBtX2hh
c1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fdmlkZW9JbnB1dCBy
ZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX3ZpZGVvUHVsbFF1ZXVlIHVzaW5nQmxv
Y2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAg
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGlzUmVhZHlG
b3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX3ZpZGVvQnVmZmVyUG9vbC50
YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5n
ZXQoKV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSB3aGlsZSAo
dHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV92aWRlb0J1ZmZlclBvb2wu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgW21fdmlkZW9JbnB1dCBtYXJrQXNGaW5pc2hl
ZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmUuc2lnbmFs
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJy
ZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7Ci0gICAgaWYgKCFidWZmZXJXaXRoQ3VycmVudFRp
bWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRl
b0xvY2spOwotICAgIG1fdmlkZW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcldpdGhD
dXJyZW50VGltZSkpOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHNldCB0aGUgdGltZXN0
YW1wcyBpZiB0aGV5IGFyZSBhbHJlYWR5IHNldC4KKyAgICBpZiAoYXV0byBidWZmZXJXaXRoQ3Vy
cmVudFRpbWUgPSBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2FtcGxlQnVm
ZmVyKSkKKyAgICAgICAgbV92aWRlb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihidWZmZXJX
aXRoQ3VycmVudFRpbWUuZ2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTUZv
cm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQpAQCAtMjgwLDY4ICszNzUsMzkgQEAg
c3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVk
aW9Gb3JtYXREZXNjcmlwdGlvbihjb24KICAgICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6
OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0
Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYgZm9ybWF0ID0gbnVsbHB0cjsKICAgICBhdXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24sIDAsIE5V
TEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXQpOwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJy
b3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1
cm4gYWRvcHRDRihmb3JtYXQpOwogfQogCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBs
ZUJ1ZmZlclJlZj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25z
KENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0LCBzaXplX3Qgc2FtcGxlQ291bnQpCi17Ci0g
ICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNs
b2NrKCkpOwotICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7Ci0g
ICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3Jp
cHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3Jt
YXQsIHNhbXBsZUNvdW50LCBzdGFydFRpbWUsIE5VTEwsICZzYW1wbGVCdWZmZXIpOwotICAgIGlm
IChlcnJvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0Q0Yoc2Ft
cGxlQnVmZmVyKTsKLX0KLQotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
QXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYs
IHNpemVfdCBzYW1wbGVDb3VudCkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVm
ZmVyUmVmPiBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYg
ZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdU
Rjo6TWVkaWFUaW1lJiB0aW1lLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7Ci0gICAgQVNTRVJUKG1f
YXVkaW9JbnB1dCk7Ci0gICAgaWYgKCghbV9oYXNTdGFydGVkV3JpdGluZyAmJiBtX3ZpZGVvSW5w
dXQpIHx8IG1faXNTdG9wcGVkKQotICAgICAgICByZXR1cm47CiAgICAgYXV0byBmb3JtYXQgPSBj
cmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKICAgICBpZiAoIWZvcm1h
dCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2lzRmlyc3RBdWRpb1NhbXBsZSkgewotICAg
ICAgICBpZiAoIW1fdmlkZW9JbnB1dCkgewotICAgICAgICAgICAgLy8gYXVkaW8tb25seSByZWNv
cmRpbmcuCi0gICAgICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7Ci0gICAg
ICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJj
ZVRpbWU6Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAg
ICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgbV9p
c0ZpcnN0QXVkaW9TYW1wbGUgPSBmYWxzZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fYXVkaW9JbnB1
dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX2F1ZGlvUHVsbFF1ZXVlIHVzaW5n
QmxvY2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0g
ICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV9hdWRpb0lucHV0IGlzUmVh
ZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyUG9v
bC50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAg
ICAgICAgICAgICAgICBbbV9hdWRpb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0
KCldOwotICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0
b3BwZWQgJiYgbV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
W21fYXVkaW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hX
cml0aW5nQXVkaW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1d
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJD
cmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGZh
bHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50LCB0b0NNVGltZSh0aW1l
KSwgTlVMTCwgJnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgY3Jl
YXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVk
IiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CisgICAgYXV0byBidWZm
ZXIgPSBhZG9wdENGKHNhbXBsZUJ1ZmZlcik7CiAKLSAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNy
ZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhmb3JtYXQuZ2V0KCks
IHNhbXBsZUNvdW50KTsKLSAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOwot
ICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZm
ZXJMaXN0KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkp
OwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuOworICAgIGVycm9yID0gQ01TYW1wbGVC
dWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdChidWZmZXIuZ2V0KCksIGtDRkFs
bG9jYXRvckRlZmF1bHQsIGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlv
QnVmZmVyTGlzdD4oZGF0YSkubGlzdCgpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBD
TVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0IGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJu
IGJ1ZmZlcjsKK30KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb0xvY2spOwot
ICAgIG1fYXVkaW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKHNhbXBsZUJ1ZmZlcikpOwordm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgc2l6ZV90IHNhbXBsZUNv
dW50KQoreworICAgIGlmIChhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVm
ZmVyKGRhdGEsIGRlc2NyaXB0aW9uLCB0aW1lLCBzYW1wbGVDb3VudCkpCisgICAgICAgIG1fYXVk
aW9Db21wcmVzc29yLT5hZGRTYW1wbGVCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKTsKIH0KIAog
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCkBAIC0zNTAs
MzUgKzQxNiw0MCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3Jk
aW5nKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworCisgICAg
aWYgKG1fdmlkZW9Db21wcmVzc29yKQorICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+ZmluaXNo
KCk7CisgICAgaWYgKG1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nv
ci0+ZmluaXNoKCk7CisKICAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCiAgICAgICAgIHJl
dHVybjsKICAgICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZBc3NldFdyaXRlclN0YXR1
c1dyaXRpbmcpOwotICAgIGlmIChtX3ZpZGVvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGlu
Z1ZpZGVvU2VtYXBob3JlLndhaXQoKTsKLQotICAgIGlmIChtX2F1ZGlvSW5wdXQpCi0gICAgICAg
IG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKIAogICAgIG1faXNTdG9wcGlu
ZyA9IHRydWU7Ci0gICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6W3RoaXMsIHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3ZlKHdlYWtQdHIpLCBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpXSgp
IG11dGFibGUgewotICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBp
ZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgICAgICBtX2ZldGNo
RGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgIGZsdXNoQ29t
cHJlc3NlZFNhbXBsZUJ1ZmZlcnMoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
KCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2hhc1N0
YXJ0ZWRXcml0aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9
IHRydWU7Ci0gICAgICAgICAgICBjbGVhcigpOwotICAgICAgICB9KTsKLSAgICAgICAgbV9maW5p
c2hXcml0aW5nU2VtYXBob3JlLnNpZ25hbCgpOwotICAgIH1dOwotICAgIG1fZmluaXNoV3JpdGlu
Z1NlbWFwaG9yZS53YWl0KCk7CisgICAgICAgIFttX3dyaXRlciBmbHVzaF07CisgICAgICAgIFtt
X3dyaXRlciBmaW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhp
cyA9IFdURk1vdmUod2Vha1RoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFdURk1vdmUobV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNs
ZWFyKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfV07CisgICAgfSk7CiB9CiAKIHZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMzky
LDYgKzQ2MywyNCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQgogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYg
KCFtX2RhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
c2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwg
c2l6ZSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAgICAg
ICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IG1fZGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJ
T04pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZTQyODkzNTIzNjBjYjE3ODAwZGQwNmU2YjViMTUzODc5NjJjNzllCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCwwICsxLDcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNF
KEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbmNs
dWRlIDxWaWRlb1Rvb2xib3gvVlRFcnJvcnMuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01T
YW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRD
b21wcmVzc2lvblNlc3Npb24gKlZUQ29tcHJlc3Npb25TZXNzaW9uUmVmOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IGNyZWF0ZShDTVZpZGVvQ29kZWNUeXBlLCBD
TUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7CisgICAg
flZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpOworCisgICAgdm9pZCBmaW5pc2goKTsKKyAg
ICB2b2lkIGFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CisgICAgQ01TYW1wbGVC
dWZmZXJSZWYgZ2V0T3V0cHV0U2FtcGxlQnVmZmVyKCk7CisgICAgUmV0YWluUHRyPENNU2FtcGxl
QnVmZmVyUmVmPiB0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKENNVmlkZW9Db2RlY1R5cGUpOworCisg
ICAgYm9vbCBpbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrT2JqZWN0KTsKKworICAgIHZvaWQgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1
ZmZlclJlZik7CisgICAgYm9vbCBpbml0Q29tcHJlc3Npb25TZXNzaW9uKENNVmlkZW9Gb3JtYXRE
ZXNjcmlwdGlvblJlZik7CisKKyAgICBzdGF0aWMgdm9pZCB2aWRlb0NvbXByZXNzaW9uQ2FsbGJh
Y2sodm9pZCAqcmVmQ29uLCB2b2lkKiwgT1NTdGF0dXMsIFZURW5jb2RlSW5mb0ZsYWdzLCBDTVNh
bXBsZUJ1ZmZlclJlZik7CisKKyAgICBkaXNwYXRjaF9xdWV1ZV90IG1fc2VyaWFsRGlzcGF0Y2hR
dWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1
ZTsKKyAgICBSZXRhaW5QdHI8VlRDb21wcmVzc2lvblNlc3Npb25SZWY+IG1fdnRTZXNzaW9uOwor
CisgICAgYm9vbCBtX2lzRW5jb2RpbmcgeyBmYWxzZSB9OworCisgICAgQ01WaWRlb0NvZGVjVHlw
ZSBtX291dHB1dENvZGVjVHlwZTsKKyAgICBmbG9hdCBtX21heEtleUZyYW1lSW50ZXJ2YWxEdXJh
dGlvbiB7IDIuMCB9OworICAgIHVuc2lnbmVkIG1fZXhwZWN0ZWRGcmFtZVJhdGUgeyAzMCB9Owor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA4ZmU0MzI5NWVmNTJhNjc5MGZmMWRlY2FjYTZmMzBk
OWJiYmFmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0wLDAgKzEs
MTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxDb3JlTWVk
aWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBv
cnQgPFZpZGVvVG9vbGJveC9WVENvbXByZXNzaW9uU2Vzc2lvbi5oPgorI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CisKKyNpbXBvcnQgPHBhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5oPgor
Cit1c2luZyBuYW1lc3BhY2UgUEFMOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6dW5p
cXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6Y3JlYXRlKENNVmlkZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlLCBDTUJ1ZmZl
clF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sK
KyAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yPihuZXcgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKG91dHB1dENvZGVjVHlw
ZSkpOworICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShjYWxsYmFjaywgY2FsbGJhY2tP
YmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29tcHJlc3NvcjsK
K30KKworVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUpCisgICAgOiBtX3NlcmlhbERp
c3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICAsIG1fb3V0
cHV0Q29kZWNUeXBlIHsgb3V0cHV0Q29kZWNUeXBlIH0KK3sKK30KKworVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKK3sKKyAgICBpZiAo
bV9zZXJpYWxEaXNwYXRjaFF1ZXVlKQorICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VyaWFs
RGlzcGF0Y2hRdWV1ZSk7Cit9CisKK2Jvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpp
bml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrT2JqZWN0KQoreworICAgIENNQnVmZmVyUXVldWVSZWYgb3V0cHV0QnVmZmVyUXVldWU7
CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZl
cnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB1bmFibGUgdG8gY3JlYXRl
IGJ1ZmZlciBxdWV1ZSAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBtX291dHB1dEJ1ZmZlclF1ZXVlID0gb3V0cHV0QnVmZmVyUXVldWU7CisgICAgQ01CdWZm
ZXJRdWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGNhbGxiYWNr
LCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVyUXVldWVUcmlnZ2VyX1doZW5EYXRhQmVjb21lc1Jl
YWR5LCBrQ01UaW1lWmVybywgTlVMTCk7CisKKyAgICBtX2lzRW5jb2RpbmcgPSB0cnVlOworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Zmlu
aXNoKCkKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAg
ICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMobV92
dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZU
Q29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisKKyAgICAgICAgZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1
ZmZlclF1ZXVlLmdldCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1l
ZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJr
RW5kT2ZEYXRhIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgICAgIG1faXNFbmNvZGlu
ZyA9IGZhbHNlOworICAgIH0pOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9TU3RhdHVz
IHN0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sK
KyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihzdGF0dXMsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayBzdGF0dXMgaXMgJWQi
LCBzdGF0dXMpOworICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciAqY29tcHJlc3NvciA9IHN0YXRpY19jYXN0
PFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcio+KHJlZkNvbik7CisKKyAgICBhdXRvIGVycm9y
ID0gQ01CdWZmZXJRdWV1ZUVucXVldWUoY29tcHJlc3Nvci0+bV9vdXRwdXRCdWZmZXJRdWV1ZS5n
ZXQoKSwgYnVmZmVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJl
YW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7Cit9CisKK2Jvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjppbml0Q29tcHJlc3Npb25TZXNzaW9uKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBm
b3JtYXREZXNjcmlwdGlvbikKK3sKKyAgICBDTVZpZGVvRGltZW5zaW9ucyBkaW1lbnNpb25zID0g
Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlvbik7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIE5TRGljdGlvbmFyeSAqZW5jb2RlclNwZWNpZmljYXRp
b25zID0gbmlsOworI2Vsc2UKKyAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJTcGVjaWZpY2F0aW9u
cyA9IEB7KF9fYnJpZGdlIE5TU3RyaW5nICopa1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9F
bmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyOkBZRVN9OworI2VuZGlmCisKKyAg
ICBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiB2dFNlc3Npb247CisgICAgYXV0byBlcnJvciA9IFZU
Q29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRpbWVuc2lvbnMu
d2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBtX291dHB1dENvZGVjVHlwZSwgKF9fYnJpZGdlIENG
RGljdGlvbmFyeVJlZillbmNvZGVyU3BlY2lmaWNhdGlvbnMsIE5VTEwsIE5VTEwsIHZpZGVvQ29t
cHJlc3Npb25DYWxsYmFjaywgdGhpcywgJnZ0U2Vzc2lvbik7CisgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorICAgIG1fdnRTZXNzaW9uID0gYWRvcHRD
Rih2dFNlc3Npb24pOworCisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vz
c2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwga0NGQm9vbGVh
blRydWUpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVz
c2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgIGVy
cm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNz
aW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uLCAoX19icmlkZ2UgQ0ZU
eXBlUmVmKUAobV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24pKTsKKyAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlG
cmFtZUludGVydmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgZXJyb3Ig
PSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Q
cm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1fZXhw
ZWN0ZWRGcmFtZVJhdGUpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFT
dHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkg
a1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKKworICAgIC8vIEZJWE1FOiBTZXQgdmlkZW8gY29tcHJlc3Npb24gcmF0ZS4K
KyAgICBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzKG1f
dnRTZXNzaW9uLmdldCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFT
dHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25Q
cmVwYXJlVG9FbmNvZGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICByZXR1
cm4gWUVTOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1Nh
bXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgaWYgKCFtX3Z0U2Vz
c2lvbikgeworICAgICAgICBpZiAoIWluaXRDb21wcmVzc2lvblNlc3Npb24oQ01TYW1wbGVCdWZm
ZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZl
cihidWZmZXIpOworICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZm
ZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICBhdXRvIGR1cmF0aW9uID0g
Q01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgIGF1dG8gZXJyb3IgPSBWVENv
bXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKG1fdnRTZXNzaW9uLmdldCgpLCBpbWFnZUJ1ZmZl
ciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgTlVMTCwgdGhpcywgTlVMTCk7Cisg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjph
ZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGRpc3BhdGNo
X3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBpZiAoIW1faXNFbmNvZGlu
ZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyKGJ1
ZmZlcik7CisgICAgfSk7Cit9CisKK0NNU2FtcGxlQnVmZmVyUmVmIFZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gKENNU2Ft
cGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0SGVhZChtX291
dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOworfQorCitSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJS
ZWY+IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigp
Cit7CisgICAgcmV0dXJuIGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZv
aWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX291dHB1dEJ1ZmZlclF1ZXVlLmdl
dCgpKSkpKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTZjZWU1NGM5N2M5MjE1
YTY4NzNmNGRjYjEyYmRlNDdjMWRjNDBlYy4uZjMxMGY0OGVkN2VkZTU4ZmUyZTViNzg0NjRmNjJj
OTBlMmQwMTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTQ5LDYgKzE0OSw3IEBAIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyCiAgICAgcmV0dXJuICptX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7
CiB9CiAKKyNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIFJlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYVJlY29yZGVyTWFuYWdl
cigpCiB7CiAgICAgaWYgKCFtX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyKQpAQCAtMTU2LDYg
KzE1Nyw3IEBAIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjptZWRpYVJlY29yZGVyTWFuYWdlcigpCiAKICAgICByZXR1cm4gKm1fcmVtb3RlTWVk
aWFSZWNvcmRlck1hbmFnZXI7CiB9CisjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciYgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6YXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcigpCkBAIC0xNzQsNyArMTc2
LDcgQEAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2FtcGxlQnVmZmVyRGkKICAgICByZXR1cm4gKm1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlcjsKIH0KICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gIFBMQVRG
T1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIFVTRShMSUJXRUJSVEMpCiBMaWJXZWJSVENDb2RlY3NQcm94eSYgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzUHJveHkoKQpAQCAtMjAzLDYgKzIwNSw3IEBAIHZv
aWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJCiAgICAgICAgIHVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQorI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRF
KQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAg
ICBtZWRpYVJlY29yZGVyTWFuYWdlcigpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTIxMSw2ICsyMTQsNyBA
QCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSQogICAgICAgICBtZWRpYVJlY29yZGVyTWFuYWdlcigp
LmRpZFJlY2VpdmVSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRpZiAvLyBIQVZFKEFWQVNTRVRXUklURVJE
RUxFR0FURSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKICAgICAgICAgYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcigpLmRpZFJlY2VpdmVNZXNzYWdl
RnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CkBAIC0yMjgsOCArMjMyLDggQEAg
dm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIEkKICAgICAgICAgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlcigpLmRpZFJlY2VpdmVMYXllck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1By
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgbGliV2ViUlRDQ29kZWNzUHJv
eHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKaW5kZXggMmI5YmQxZjg4N2JhZGFmYTRlYTVjNGJhMzQxNjlkOGI5NzhmZDYyZC4u
Nzg2NjNiY2RiYTA3MzJlZmY1YjExYjk0YzVkY2EyMzg4MmVlOWI4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC03
OSw3ICs3OSw5IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5JiB1c2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdB
VEUpCiAgICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXImIG1lZGlhUmVjb3JkZXJNYW5hZ2Vy
KCk7CisjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyJiBhdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyKCk7
CiAgICAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlcigpOwpAQCAtMTAyLDcgKzEwNCw5IEBAIHByaXZhdGU6CiAgICAg
UEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk+IG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKKyNpZiBIQVZFKEFWQVNT
RVRXUklURVJERUxFR0FURSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CisjZW5kaWYKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gbV9hdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCBjYjI0
ZGRiZjI3OWZiMjY1OTQ2YWExMjFjYjA3MjJiNjJiOGM2YWY3Li41NjhjMjgwMTcxOGZlOTBiOGJl
MDgyZmVhMzVlZTc1MGQ2M2RkYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyLmgiCiAK
LSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAj
aW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NB
UmluZ0J1ZmZlci5oPgpAQCAtMTM2LDQgKzEzNiw0IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRl
cjo6c3RvcFJlY29yZGluZygpCiAKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFW
RShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IGZmNWE4Mjk4NGZiMzk2NDFl
ZDFlNTYxNTQ4OThmOTUyNmM5YmQ1MmEuLmE4M2RhMzA1NTJlYjQxZWY5NTk0NGRiM2FhNTA0ZmZj
YTNmNjgzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAog
I2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCkBAIC04Miw0ICs4Miw0IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlmCisjZW5k
aWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIubWVzc2FnZXMuaW4KaW5kZXggNTRiYTY0ZDU2ZmJlYTMwZmNiYjM5NmRhZDVlYTNmYzMwYzk5
NWRlZS4uY2UzMmI3MDRlN2VjOGM0NzdiZTA1MWUyMGQ3ZDI3YWYwYzRmODIxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CiAjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1l
ZGlhUmVjb3JkZXIgTm90UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5n
ZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJh
bWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAppbmRleCAzNzBjZDliMzg3NTY5YTk4ZTg0
ZTE3ODA5ZjA4NWQ2MmIzYjZlOWQ2Li4wMTllNGI4NWYwZWViYjYyNGU1Njk1ODhhN2FhZTQ4NDIx
MjU4NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2Vy
LmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRF
KQogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlck1hbmFnZXIuaAppbmRleCA1NDcxYmJkNDg0ZGQ5YjNkMGM4ZWUzZGQ2MTFjMDVl
OTBkMDM2YzdjLi5hYjgwMWJjMTE0YzQ5MjNlYTlkNzkwZjkyM2M1MmRmNDlhYTExZTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAog
I2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgppbmRl
eCAzODdhNDEzNjFjZGJkOWI3ZWFlMmMzMzczNjUyYTk4ZjQ5MzRlMTc0Li5jNTE4NDEwY2I0OWZh
ZGE2ODhkMzc3ZDFkN2EwNmNkZTNiYWM3OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJl
Y29yZGVyTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAgICBDcmVhdGVSZWNvcmRlcihXZWJLaXQ6
Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkLCBib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBjcmVhdGlvbkVy
cm9yKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaApp
bmRleCA5ZjliMzBjNzYxNjIzZGQ5NDhkMjliZTBmMzdmMGFkMGY0N2U1YTlhLi5lMzhjNWQ2YzA1
ZDBkZmFmNDI2ODE5OTViOWUwNGY0ZTc2NDdmMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXJNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAK
aW5kZXggZGQ0MDkxOTg4YzEyNjg5NzViYjk3OTJlODMzN2M2ZTA2NTM3ZjNjOC4uNjdlM2VlNjUx
M2Q4ZmE0M2U4MWU4YjIyYzY1OGRmODk2NDA3Njg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNw
cApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlh
UmVjb3JkZXJQcml2YXRlLmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NF
VFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC0xNDYsNCAr
MTQ2LDQgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3RvcFJlY29yZGluZygpCiAKIH0K
IAotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCA2ZDlmYWJlM2VhNzI0NzNmNDU5OTBj
ZThhZDE3MmQwY2QwM2E4MTI2Li5kODBmY2Q3ZjE5ODg5NzUyNWM5ZWZmYzkxNzU3ZDIyZmMzMjNl
ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRF
KQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgpAQCAtNzMsNSArNzMsNSBAQCBwcml2YXRlOgogCiB9CiAK
LSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRF
TEVHQVRFKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCBiY2U3NzRhODgxZGNlYzc5
NDI2Mzc5Njg1NTJlM2NjYzdiYjM3NDBiLi5kOTU5YzkyNWZkZDNhMjIxYTM3YjFhMzcwN2M2ZGYx
YWQwMmEwZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZT4gTWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJp
dmF0ZShjb25zdCBNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKIHsKLSNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRXUklURVJE
RUxFR0FURSkKICAgICBpZiAobV91c2VHUFVQcm9jZXNzKQogICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZT4oc3RyZWFtKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM2ODhm
OGYxYzA4YmQyNGZkMjcxY2Q0ZmE1MjA5ODlhNjIwMWFmYzQuLmI5MDdmY2Y1Zjk3NjI1MWQ3Nzk3
MjdmYWI3MDI2OWVlNzQ1ZDBmYzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMi0wNiAg
eW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2Ug
QVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgRGlzYWJsZSB0ZXN0cyBvbiBh
bGwgcGxhdGZvcm1zIGV4Y2VwdCB0aGUgb25lcyBzdXBwb3J0aW5nIEFWQXNzZXRXcml0ZXJEZWxl
Z2F0ZS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogaHR0cC93cHQv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUt
Z3B1cHJvY2Vzcy5odG1sOgorICAgICAgICBSZW1vdmUgd2ViIGF1ZGlvIGdlbmVyYXRpb24gc2lu
Y2UgdGhlcmUgc2VlbXMgdG8gYmUgc29tZSB1bnN0YWJpbGl0eSBpbiB3ZWIgYXVkaW8gLT4gc3Ry
ZWFtIC0+IG1lZGlhIHJlY29yZGVyLgorICAgICAgICB3aGljaCBzaG91bGQgYmUgZml4ZWQgYXMg
Zm9sbG93LXVwIHNwZWNpZmljIHBhdGNoZXMuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgIEVuYWJsZSBydW5uaW5nIHRlc3RzLgorCiAyMDIwLTAyLTA2
ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhu
XSBhdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uIHNob3VsZCBiZSBzZW50IHdpdGhvdXQgcGluQXV0
aCBpZiBVViA9ICJkaXNjb3VyYWdlZCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGVjNjZkN2NmYzk5
ZGE1NDg1NTIxYTc2OTVkMWJjMWRjMmNlMWY5ZTYuLjAzNTQxYTI2NzFiZGJjOGViYjY4MzJhOTli
OGNlOWMzYWY2YWFjMDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzMzMiw3ICszMzMyLDEwIEBA
IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NvcHktdGV4LWltYWdlLTJkLWZvcm1h
dHMuaHRtbCBbIFNraXAgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvY2FudmFzL3JhcGlkLXJl
c2l6aW5nLmh0bWwgWyBTa2lwIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
d2ViZ2wtZHJhdy1idWZmZXJzLmh0bWwgWyBTa2lwIF0KIAotd2Via2l0Lm9yZy9iLzE5NzY3MyBo
dHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2
YWlsYWJsZS5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQorIyBOb3Qgc3VwcG9ydGVkIGJ5
IGRlZmF1bHQKK2h0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAgXQorZmFzdC9oaXN0
b3J5L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIFNraXAgXQogCiAjIFRvIGFpZCB0
cmFuc2l0aW9uIHRvIEFOR0xFIGJhY2tlbmQgZm9yIFdlYkdMLCBza2lwIGFsbCBvZiBXZWJHTCAy
IHRlc3RzIGZvciBub3cuIAogIyBSZS1lbmFibGUgYXMgZWFjaCBjaHVuayBvZiB0ZXN0cyBhcmUg
dmVyaWZpZWQgd2l0aCBBTkdMRSBiYWNrZW5kLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFp
bGFibGUtZ3B1cHJvY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5o
dG1sCmluZGV4IDMzMzA2ZGU3OTQ3YmJiOTI1NzM5NGMzYmExOTYyMDFiMDU4NDc4OGIuLjg4MDE0
ODY1N2UyNWRkZTMzY2IxMDkzNDZkNmNiZWFhYjdmOWNlZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1k
YXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1n
cHVwcm9jZXNzLmh0bWwKQEAgLTU2LDE3ICs1Niw3IEBACiAgICAgfQogCiAgICAgYXN5bmNfdGVz
dCh0ID0+IHsKLSAgICAgICAgY29uc3QgYWMgPSBuZXcgQXVkaW9Db250ZXh0KCk7Ci0gICAgICAg
IGNvbnN0IG9zYyA9IGFjLmNyZWF0ZU9zY2lsbGF0b3IoKTsKLSAgICAgICAgY29uc3QgZGVzdCA9
IGFjLmNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKLSAgICAgICAgY29uc3QgYXVkaW8g
PSBkZXN0LnN0cmVhbTsKLSAgICAgICAgb3NjLmNvbm5lY3QoZGVzdCk7Ci0KICAgICAgICAgY29u
c3QgdmlkZW8gPSBjcmVhdGVWaWRlb1N0cmVhbSgpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHZp
ZGVvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAwLCAidmlkZW8gbWVkaWFzdHJlYW0gc3RhcnRz
IHdpdGggbm8gYXVkaW8gdHJhY2siKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhhdWRpby5nZXRB
dWRpb1RyYWNrcygpLmxlbmd0aCwgMSwgImF1ZGlvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRoIG9u
ZSBhdWRpbyB0cmFjayIpOwotICAgICAgICB2aWRlby5hZGRUcmFjayhhdWRpby5nZXRBdWRpb1Ry
YWNrcygpWzBdKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWRlby5nZXRBdWRpb1RyYWNrcygp
Lmxlbmd0aCwgMSwgInZpZGVvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRoIG9uZSBhdWRpbyB0cmFj
ayIpOwogICAgICAgICBjb25zdCByZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHZpZGVvKTsK
ICAgICAgICAgbGV0IG1vZGUgPSAwOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDMzYTliZjcyNDMxOTRkOTlhNDRiMTBlNWIzMjkyOTZjNDYxMmRkZjgu
LjY4Yzk0YmFjMjJhNDM4Y2RkMTVjNjZjZTE5OTRmZjM4YTNmYjk4ZmYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODI4LDYgKzE4MjgsMTAgQEAgd2Vi
a2l0Lm9yZy9iLzE5NTYzNSBzY3JvbGxpbmdjb29yZGluYXRvci9tYWMvbXVsdGlwbGUtZml4ZWQu
aHRtbCBbIFBhc3MgVGltZW91dAogWyBDYXRhbGluYSsgXSBmYXN0L3RleHQvZGVzaWduLXN5c3Rl
bS11aS0xNS5odG1sIFsgUGFzcyBdCiBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9kZXNpZ24tc3lz
dGVtLXVpLTE2Lmh0bWwgWyBQYXNzIF0KIAorWyBDYXRhbGluYSsgXSBodHRwL3dwdC9tZWRpYXJl
Y29yZGVyIFsgUGFzcyBGYWlsdXJlIF0gCitbIENhdGFsaW5hKyBdIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFBhc3MgRmFpbHVyZSBdCitbIENh
dGFsaW5hKyBdIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLW1lZGlhLXJlY29yZGVyLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQorCiB3ZWJraXQub3JnL2IvMjAwMTI4IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtdmlkZW8tZWxl
bWVudC92aWRlb190aW1ldXBkYXRlX29uX3NlZWsuaHRtbCBbIFRpbWVvdXQgUGFzcyBdCiAKICMg
cmRhcjovLzU1NDA1ODUxIChbIG1hY09TIF0gTGF5b3V0IHRlc3RzIHdlYmdwdS8qLXRyaWFuZ2xl
LXN0cmlwLmh0bWwgYXJlIGZsYWt5IGZhaWx1cmVzLiAoMjAxODI3KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401142</attachid>
            <date>2020-06-05 05:19:10 -0700</date>
            <delta_ts>2020-06-05 09:13:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206582-20200605141907.patch</filename>
            <type>text/plain</type>
            <size>145134</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYzOTQ3NjVmZTY3ODQ1MWRkMzBkYzQ0
N2U1MmY1ZWY2YTk3ODlmYmIuLjBmOGUwYTY5NDU0ZDQ1NDgzY2ZjM2FiZGY2ZWFjZGFmNjg4MDlj
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDYtMDUgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTA2LTAxICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBFTkFC
TEUoV0hFRUxfRVZFTlRfUkVHSU9OUyksIGVuYWJsZWQgb24gbWFjT1Mgd2hpY2ggaXMgdGhlIG9u
bHkgcGxhdGZvcm0gdGhhdCBuZWVkcyB3aGVlbCBldmVudCByZWdpb25zIGZvciBzY3JvbGxpbmcg
dGhyZWFkIGhpdC10ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBhNjYyZGVmNjYxMWRiOTBhNzQ0M2Ni
MWQyNTY0YTU1YWFhYWIzYS4uMjcxMTlhMjZmZjA5NDFiOGI1Y2RmNTBiNmY5NWIxMWEzYTJjMzI0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIwLTA2LTA1ICB5b3Vlbm4gZmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVy
RGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTg5ODUzNjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAg
ICAgIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBhbGxvd3MgdG8gZ3JhYiByZWNvcmRlZCBkYXRhIHdo
ZW5ldmVyIHdhbnRlZC4KKyAgICAgICAgVGhpcyBkZWxlZ2F0ZSByZXF1aXJlcyBwYXNzaW5nIGNv
bXByZXNzZWQgc2FtcGxlcyB0byBBVkFzc2V0V3JpdGVyLgorICAgICAgICBJbXBsZW1lbnQgdmlk
ZW8gZW5jb2RpbmcgYW5kIGF1ZGlvIGVuY29kaW5nIGluIGRlZGljYXRlZCBjbGFzc2VzIGFuZCB1
c2UgdGhlc2UgY2xhc3NlcyBiZWZvcmUgYWRkaW5nIGJ1ZmZlcnMgdG8gQVZBc3NldFdyaXRlci4K
KyAgICAgICAgVGhlc2UgY2xhc3NlcyBhcmUgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGFu
ZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuCisgICAgICAgIFRoZXkgc3VwcG9ydCBBQUMg
YW5kIEgyNjQgc28gZmFyIGFuZCBzaG91bGQgYmUgZnVydGhlciBpbXByb3ZlZCB0byBzdXBwb3J0
IG1vcmUgZW5jb2Rpbmcgb3B0aW9ucy4KKworICAgICAgICBJbnN0YW50aWF0ZSByZWFsIHdyaXRl
ciBvbmx5IGZvciBwbGF0Zm9ybXMgc3VwcG9ydGluZyBBVkFzc2V0V3JpdGVyRGVsZWdhdGUsIHNp
bmNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgZXZlcnl3aGVyZS4KKyAgICAgICAgVGhlIHdyaXRlciwg
ZG9pbmcgdGhlIHBhY2FrZ2luZywgaXMgcmVjZWl2aW5nIGNvbXByZXNzZWQgYnVmZmVyIGZyb20g
dGhlIGF1ZGlvL3ZpZGVvIGNvbXByZXNzb3JzLgorICAgICAgICBJdCB0aGVuIHNlbmRzIGRhdGEg
d2hlbiBiZWluZyByZXF1ZXN0IHRvIGZsdXNoIHRvIGl0cyBkZWxlZ2F0ZSwgd2hpY2ggd2lsbCBz
ZW5kIGRhdGEgdG8gdGhlIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLgorICAgICAgICBUaGUg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgc3RvcmVzIHRoZSBkYXRhIGluIGEgU2hhcmVkQnVm
ZmVyIHVudGlsIE1lZGlhUmVjb3JkZXIgYXNrcyBmb3IgZGF0YS4KKworICAgICAgICBOb3RlIHRo
YXQsIHdoZW5ldmVyIHdlIHJlcXVlc3QgZGF0YSwgd2UgZmx1c2ggdGhlIHdyaXRlciBhbmQgaW5z
ZXJ0IGFuIGVuZCBvZiB2aWRlbyBzYW1wbGUgdG8gbWFrZSBzdXJlIHZpZGVvIGRhdGEgZ2V0cyBm
bHVzaGVkLgorICAgICAgICBUaGVyZWZvcmUgZGF0YSBzaG91bGQgbm90IGJlIHJlcXVlc3RlZCB0
b28gZmFzdCB0byBnZXQgYWRlcXVhdGUgdmlkZW8gY29tcHJlc3Npb24uCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6fkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNv
bXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVy
UmVmcmVzaENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6c2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphdWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQ
cm9jKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJv
dmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVy
VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnBy
b2Nlc3NTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkFW
QXNzZXRXcml0ZXJEZWxlZ2F0ZSBpbml0V2l0aFdyaXRlcjpdKToKKyAgICAgICAgKC1bV2ViQVZB
c3NldFdyaXRlckRlbGVnYXRlIGFzc2V0V3JpdGVyOmRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVy
RGF0YTpdKToKKyAgICAgICAgKC1bV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFzc2V0V3JpdGVy
OmRpZFByb2R1Y2VGcmFnbWVudGVkTWVkaWFEYXRhOmZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQ6
XSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBjbG9zZV0pOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0
cHV0QnVmZmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVm
ZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJv
Y2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRp
b1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVm
ZmVycyk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlv
bk1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
YXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFy
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFt
cCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
VmlkZW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVk
aW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnN0b3BSZWNvcmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsLmguCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OnZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcik6CisKIDIwMjAt
MDYtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpbGUg
VVJMcyB3aXRoIGhvc3RuYW1lcyBhcmUgbWlzbGVhZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXgg
NjY4ODZhZmVhMzk3ZWQ1MGJjMTQwMmUyYmExMTk0YTY2MzI5OTc4NS4uNDUyNTgzYmI1MDk4ZjFk
NGVhODU3OGMxMWFlMjZmZmY5NjViNzAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMjAtMDYtMDUgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVk
aWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA2NTgyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODk4NTM2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIHNvZnQgbGluayBtYWNyb3Mg
Zm9yIFZpZGVvVG9vbGJveCBhbmQgQXVkaW9Ub29sYm94LgorCisgICAgICAgICogUEFMLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRM
aW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmg6
IEFkZGVkLgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHA6CisgICAgICAg
ICogcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg6CisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9v
bGJveFNvZnRMaW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNv
ZnRMaW5rLmg6IEFkZGVkLgorCiAyMDIwLTA2LTAyICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgRkVBVFVSRVNfREVGSU5FUyByZWxhdGVkIGNoYW5n
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNGJmOWJmNmY3YjQzNjZlOGQwMTkwMjNhZDAwMjc3OGE1OThiNzYzZi4u
YmJkZWU3MDdhYWZjNmRkN2NjNzNlNTFiYjRlNDE4OWEyMWE1YWM2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wNi0wNSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVu
dCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDY1ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4OTg1MzY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBFbmFibGUgUmVtb3RlTWVk
aWFSZWNvcmRlciBvbmx5IGZvciBzeXN0ZW1zIHN1cHBvcnRpbmcgQVZBc3NldFdyaXRlckRlbGVn
YXRlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2
ZU1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
OgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJN
YW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKToKKwogMjAy
MC0wNi0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IG1vcmUgbG9nZ2luZyByZWxhdGVkIHRvIHNlcnZpY2Ugd29ya2VyIGZldGNoIGV2ZW50IGhhbmRs
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IDU1OGZiMDQxZTc2MTQ3YmY3Y2E0OWU5Yjg4Nzkz
MzBkODBlMTUzODQuLmJiNWQxZjY5YTg0NDllNDNkYzkxMTFlMTFmNDA0NTY0MWFhY2MxMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC01NDMsNiArNTQzLDEwIEBACiAjZGVmaW5lIEhBVkVfT1Nf
U0lHTlBPU1QgMQogI2VuZGlmCiAKKyNpZiAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElPUykpICYmIChkZWZp
bmVkIF9faGFzX2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8QVZGb3VuZGF0aW9uL0FWQXNzZXRX
cml0ZXJfUHJpdmF0ZS5oPikpCisjZGVmaW5lIEhBVkVfQVZBU1NFVFdSSVRFUkRFTEVHQVRFIDEK
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKFdBVENIT1Mp
ICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxFX1RJ
VExFXzAgMQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxFX1RJVExFXzQgMQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCA0NGM5ZDA3YTliOTc1MGQ2NjI2ZWI3NTg3ZWFiYzUx
M2Y0MzZiOGIzLi44ODRhNDA3OTBhNDZhODMyNjI2ZTBmYTBlZWJiOWM5ZDlmNDRjYWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzQsNyArMzQsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IE1lZGlhUmVj
b3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2
YXRlJiBzdHJlYW0pCiB7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgcmV0
dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlKHN0cmVhbSk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOworICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA0Zjk4OTc3MzdkODgyZDhlNGEyNzAwMTBkMmVhNTBhMDIxMTkyNGEwLi41YjAy
YjUxMzAwYTRkMGNkNWQ5ZDgyZTgyYjRmMGNiNzdiZGI2NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTksNiArMTE5LDkg
QEAKIAkJMkUxMzQyQ0MyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNBMjE1QUExMEEw
MDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggKi87IH07CiAJCTJFMTM0MkNEMjE1QUExMEEwMDcx
OTlEMiAvKiBVSUtpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkUxMzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsu
bW0gKi87IH07CiAJCTMxMzA4QjE0MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMwOEIx
MzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovOyB9OworCQk0MTZFOTk1
MzIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTEyM0RBRTZCRDAwRTg3
MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCAqLzsgfTsKKwkJNDE2RTk5NTQyM0RBRTZC
RTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVk
aW9Ub29sYm94U29mdExpbmsuaCAqLzsgfTsKKwkJNDFFMUYzNDQyNDhBNkEwMDAwMjJENURFIC8q
IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU1MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hT
b2Z0TGluay5jcHAgKi87IH07CiAJCTQ0Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Mjk1
NkNDMjE4QTcyREUwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCAqLzsgfTsKIAkJNDQ1MEZDOUYyMUY1
RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1
aWNrTG9va1NvZnRMaW5rLm1tICovOyB9OwogCQk0NDUwRkNBMDIxRjVGNjAyMDA0REZBNTYgLyog
UXVpY2tMb29rU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5o
ICovOyB9OwpAQCAtMzAwLDYgKzMwMywxMCBAQAogCQkyRTEzNDJDQjIxNUFBMTBBMDA3MTk5RDIg
LyogVUlLaXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFVJS2l0U29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzA4
QjEzMjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN5c3RlbVByZXZpZXdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxMTlB
NzgyMENDQjVGRjAwMkM2REM5IC8qIFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNj
b25maWc7IHBhdGggPSBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rv
b2xib3hTb2Z0TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
dWRpb1Rvb2xib3hTb2Z0TGluay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
NkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGluay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9U
b29sYm94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VmlkZW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTZFOTk1NjIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExpbmsuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0IC8qIFJldmVh
bFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXZlYWxTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1
aWNrTG9va1NvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUXVpY2tMb29rU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0xvb2tTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTQxLDggKzU0OCwxMiBAQAogCQkwQ0Y5OUNBNTFGNzM4NDFDMDA3
RUU3OTMgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAg
Ki8sCisJCQkJNDE2RTk5NTIyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5r
LmggKi8sCiAJCQkJMENGOTlDQTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5r
LmNwcCAqLywKIAkJCQkwQ0Y5OUNBNzFGNzM4NDM3MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExp
bmsuaCAqLywKKwkJCQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29m
dExpbmsuY3BwICovLAorCQkJCTQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xi
b3hTb2Z0TGluay5oICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC03MzUsNiArNzQ2LDcgQEAKIAkJCQkyOTNFRTRBOTI0MTU0RjhGMDA0NzQ5
M0QgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdGRDMxOEIyMkIzNTk4OTAwOEQwRThCIC8qIEFwcFNTT1NvZnRMaW5rLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzZDQTlENjIyQjg1NEFCMDAzMDE0M0MgLyogQXBwU1NPU1BJLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MTZFOTk1NDIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExp
bmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDJFOTNDMjA1NkZBQTcwMEExMzc5NyAvKiBBdWRp
b1Rvb2xib3hTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MkExMDc4MjJCNDU2RjUwMEY0MTBD
OCAvKiBBdXRoS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzdFODdCMjIyNkE0NjAzMDBB
MkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovLApAQCAtOTUzLDYg
Kzk2NSw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQkyOTNFRTRBODI0MTU0RjhGMDA0NzQ5M0QgLyog
QWNjZXNzaWJpbGl0eVN1cHBvcnRTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1N0ZE
MzE4QTIyQjM1OTNFMDA4RDBFOEIgLyogQXBwU1NPU29mdExpbmsubW0gaW4gU291cmNlcyAqLywK
KwkJCQk0MTZFOTk1MzIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDc3RTg3QjEyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRh
dGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEM1RkZGMEYxRjc4RDlEQTAwOUVG
RjFBIC8qIENsb2NrQ00ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwQ0Y5OUNBODFGNzM4NDM3MDA3
RUU3OTMgLyogQ29yZU1lZGlhU29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NjcsNiAr
OTgwLDcgQEAKIAkJCQk0NEUxQThCMDIxRkE1NEVCMDBDMzA0OEUgLyogTG9va3VwU29mdExpbmsu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzdDNzg3NDIzQUMzRTc3MDA2NUY0N0UgLyogTWFuYWdl
ZENvbmZpZ3VyYXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBDRjk5Q0E0MUY3
MzYzNzUwMDdFRTc5MyAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNDFFMUYzNDQyNDhBNkEwMDAwMjJENURFIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNEQUNCMzYwMjM4NzQyNUIwMDE4RDdDRSAvKiBNZWRpYVRv
b2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUY2M0NBMDIxQTREQkY3MDA2
RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTExNzVCNEYx
RjZCMzM3MzAwQzRCOUYwIC8qIFBvcHVwTWVudS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xY2Y1NTA1NmFjZGE2ZjU2NTNhZGM3ZTE3ZWMwMmEyZDgyNmU0NDdmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5j
cHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29u
dmVydGVyLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+CisKKyNpbmNs
dWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNF
KFBBTCwgQXVkaW9Ub29sYm94KQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUws
IEF1ZGlvVG9vbGJveCwgQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0Zv
cm1hdFByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5TcGVjaWZpZXJTaXplLCBjb25z
dCB2b2lkKiBpblNwZWNpZmllciwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91
dFByb3BlcnR5RGF0YSksIChpblByb3BlcnR5SUQsIGluU3BlY2lmaWVyU2l6ZSwgaW5TcGVjaWZp
ZXIsIGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NT
dGF0dXMsIChjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0
LCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQs
IEF1ZGlvQ29udmVydGVyUmVmKiBvdXRBdWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwg
aW5EZXN0aW5hdGlvbkZvcm1hdCwgb3V0QXVkaW9Db252ZXJ0ZXIpKQorU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyU2V0UHJvcGVy
dHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9D
b252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGluUHJvcGVydHlEYXRhU2l6
ZSwgY29uc3Qgdm9pZCogaW5Qcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9w
ZXJ0eUlELCBpblByb3BlcnR5RGF0YVNpemUsIGluUHJvcGVydHlEYXRhKSkKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlckdldFBy
b3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1
ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiogaW9Qcm9wZXJ0eURh
dGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9w
ZXJ0eUlELCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkpCisKKyNlbmRpZiAv
LyBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
Zi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRp
b1Rvb2xib3hTb2Z0TGluay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MzExODcxNzRhYzE1NTQ0MzcxZGVlMDNi
MTQzMmUzZTY1NjMyZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlIDx3dGYv
U29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBBTCwgQXVk
aW9Ub29sYm94KQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9v
bGJveCwgQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRl
clJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0
eUlELCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRhKSwg
KGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQ
cm9wZXJ0eURhdGEpKQorI2RlZmluZSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5IHNvZnRMaW5r
X0F1ZGlvVG9vbGJveF9BdWRpb0NvbnZlcnRlckdldFByb3BlcnR5CitTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJOZXcsIE9TU3Rh
dHVzLCAoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpblNvdXJjZUZvcm1hdCwg
Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpbkRlc3RpbmF0aW9uRm9ybWF0LCBB
dWRpb0NvbnZlcnRlclJlZiogb3V0QXVkaW9Db252ZXJ0ZXIpLCAoaW5Tb3VyY2VGb3JtYXQsIGlu
RGVzdGluYXRpb25Gb3JtYXQsIG91dEF1ZGlvQ29udmVydGVyKSkKKyNkZWZpbmUgQXVkaW9Db252
ZXJ0ZXJOZXcgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29udmVydGVyTmV3CitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJT
ZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVy
LCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5Qcm9wZXJ0
eURhdGFTaXplLCBjb25zdCB2b2lkKiBpblByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVy
LCBpblByb3BlcnR5SUQsIGluUHJvcGVydHlEYXRhU2l6ZSwgaW5Qcm9wZXJ0eURhdGEpKQorI2Rl
ZmluZSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRp
b0NvbnZlcnRlclNldFByb3BlcnR5CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUws
IEF1ZGlvVG9vbGJveCwgQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0Zv
cm1hdFByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5TcGVjaWZpZXJTaXplLCBjb25z
dCB2b2lkKiBpblNwZWNpZmllciwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91
dFByb3BlcnR5RGF0YSksIChpblByb3BlcnR5SUQsIGluU3BlY2lmaWVyU2l6ZSwgaW5TcGVjaWZp
ZXIsIGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKyNkZWZpbmUgQXVkaW9G
b3JtYXRHZXRQcm9wZXJ0eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Gb3JtYXRHZXRQcm9w
ZXJ0eQorCisKKyNlbmRpZiAvLyBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAppbmRleCAxOTY5MjkxYTgxZTI0NThk
YmE3ODAzNWNlOThlZDE0ZmM3NzU1OWYxLi45MmVhNzY4ZmZkZTE4ZWViZjE0ODY0Yzk3ZjE0OTky
NzJiMDRmOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRp
YVNvZnRMaW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmNwcApAQCAtNDYsNiArNDYsNyBAQCBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIFBBTF9FWFBPUlQpCiAKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVm
ZmVyQ29weURhdGFCeXRlcywgT1NTdGF0dXMsIChDTUJsb2NrQnVmZmVyUmVmIHRoZVNvdXJjZUJ1
ZmZlciwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIHZvaWQqIGRlc3Rp
bmF0aW9uKSwgKHRoZVNvdXJjZUJ1ZmZlciwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBkZXN0
aW5hdGlvbiksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgsIHNpemVf
dCwgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZlciksIFBBTF9FWFBPUlQp
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRp
YSwgQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMsIE9TU3RhdHVzLCAoY29uc3Qgdm9pZCog
c291cmNlQnl0ZXMsIENNQmxvY2tCdWZmZXJSZWYgZGVzdGluYXRpb25CdWZmZXIsIHNpemVfdCBv
ZmZzZXRJbnRvRGVzdGluYXRpb24sIHNpemVfdCBkYXRhTGVuZ3RoKSwgKHNvdXJjZUJ5dGVzLCBk
ZXN0aW5hdGlvbkJ1ZmZlciwgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBkYXRhTGVuZ3RoKSwgUEFM
X0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
Q29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9uYXJ5
UmVmLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpLCBQQUxfRVhQT1JUKQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEs
IENNU2FtcGxlQnVmZmVyR2V0VHlwZUlELCBDRlR5cGVJRCwgKHZvaWQpLCAoKSwgUEFMX0VYUE9S
VCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1l
ZGlhLCBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIsIENNQmxvY2tCdWZmZXJSZWYsIChDTVNh
bXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpLCBQQUxfRVhQT1JUKQpAQCAtMTMzLDkgKzEzNCwx
MSBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVN
ZWRpYSwgQ01CdWZmZXJRdWV1ZURlcXVldWVBbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVFbnF1ZXVlLCBPU1N0
YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUsIENNQnVmZmVyUmVmIGJ1ZmZlciksIChxdWV1
ZSwgYnVmZmVyKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlSXNFbXB0eSwgQm9vbGVhbiwg
KENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpLCBQQUxfRVhQT1JUKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVy
UXVldWVHZXRCdWZmZXJDb3VudCwgQ01JdGVtQ291bnQsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVl
KSwgKHF1ZXVlKSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5z
b3J0ZWRTYW1wbGVCdWZmZXJzLCBjb25zdCBDTUJ1ZmZlckNhbGxiYWNrcyAqLCAoKSwgKCksIFBB
TF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0YW1wLCBD
TVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSwgUEFMX0VYUE9SVCkKIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBD
TUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTUJ1ZmZl
clF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlSW5z
dGFsbFRyaWdnZXJXaXRoSW50ZWdlclRocmVzaG9sZCwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVl
UmVmIHF1ZXVlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIHRyaWdnZXJDYWxsYmFjaywg
dm9pZCogdHJpZ2dlclJlZmNvbiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDb25kaXRpb24gdHJpZ2dl
ckNvbmRpdGlvbiwgQ01JdGVtQ291bnQgdHJpZ2dlclRocmVzaG9sZCwgQ01CdWZmZXJRdWV1ZVRy
aWdnZXJUb2tlbiogdHJpZ2dlclRva2VuT3V0KSwgKHF1ZXVlLCB0cmlnZ2VyQ2FsbGJhY2ssIHRy
aWdnZXJSZWZjb24sIHRyaWdnZXJDb25kaXRpb24sIHRyaWdnZXJUaHJlc2hvbGQsIHRyaWdnZXJU
b2tlbk91dCksIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3Rh
dHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSksIFBBTF9FWFBPUlQpCiAKIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBr
Q01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxheSwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBP
UlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVN
ZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Ob3RTeW5jLCBDRlN0cmluZ1JlZiwgUEFMX0VY
UE9SVCkKQEAgLTE0OSw2ICsxNTIsOSBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobQogU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTVNh
bXBsZUF0dGFjaG1lbnRLZXlfRGlzcGxheUltbWVkaWF0ZWx5LCBDRlN0cmluZ1JlZiwgUEFMX0VY
UE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29y
ZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0lzRGVwZW5kZWRPbkJ5T3RoZXJzLCBDRlN0
cmluZ1JlZiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlv
bl9CdWZmZXJDb25zdW1lZCwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVm
ZmVyQXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYs
IFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9HcmFkdWFsRGVjb2Rl
clJlZnJlc2gsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGdldF9Db3JlTWVkaWFfa0NNU2Ft
cGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCBDRlN0cmluZ1JlZiwg
UEFMX0VYUE9SVCkKIAogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBDb3JlTWVkaWEsIGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX0VmZmVjdGl2ZVJhdGVDaGFu
Z2VkLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9U
aW1lSnVtcGVkLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKQEAgLTE2Myw2ICsxNjksOCBAQCBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwg
Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21B
dWRpb0J1ZmZlckxpc3QsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZBbGxv
Y2F0b3JSZWYgYmJ1ZlN0cnVjdEFsbG9jYXRvciwgQ0ZBbGxvY2F0b3JSZWYgYmJ1Zk1lbW9yeUFs
bG9jYXRvciwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCAqYnVmZmVyTGlz
dCksIChzYnVmLCBiYnVmU3RydWN0QWxsb2NhdG9yLCBiYnVmTWVtb3J5QWxsb2NhdG9yLCBmbGFn
cywgYnVmZmVyTGlzdCksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhUmVhZHks
IE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSwgUEFMX0VYUE9SVCkK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlh
LCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGFzYmQsIHNp
emVfdCBsYXlvdXRTaXplLCBjb25zdCBBdWRpb0NoYW5uZWxMYXlvdXQqIGxheW91dCwgc2l6ZV90
IG1hZ2ljQ29va2llU2l6ZSwgY29uc3Qgdm9pZCogbWFnaWNDb29raWUsIENGRGljdGlvbmFyeVJl
ZiBleHRlbnNpb25zLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYqIG91dERlc2MpLCAoYWxs
b2NhdG9yLCBhc2JkLCBsYXlvdXRTaXplLCBsYXlvdXQsIG1hZ2ljQ29va2llU2l6ZSwgbWFnaWND
b29raWUsIGV4dGVuc2lvbnMsIG91dERlc2MpLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llLCBjb25zdCB2b2lkKiwgKENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvblJlZiBkZXNjLCBzaXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCksIFBBTF9F
WFBPUlQpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENv
cmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1h
dCwgY29uc3QgQXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9u
UmVmIGRlc2MpLCAoZGVzYyksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2ss
IENNQ2xvY2tSZWYsICh2b2lkKSwgKCksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldFRpbWUsIENN
VGltZSwgKENNQ2xvY2tSZWYgY2xvY2spLCAoY2xvY2spLCBQQUxfRVhQT1JUKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxl
QnVmZmVyQ2FsbEZvckVhY2hTYW1wbGUsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1
ZiwgT1NTdGF0dXMgKCogQ01TQU1QTEVCVUZGRVJDQUxMX05PRVNDQVBFIGNhbGxiYWNrKSggQ01T
YW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBDTUl0ZW1Db3VudCBpbmRleCwgdm9pZCAqcmVm
Y29uKSwgdm9pZCAqcmVmY29uKSwgKHNidWYsIGNhbGxiYWNrLCByZWZjb24pLCBQQUxfRVhQT1JU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCmluZGV4
IDI3MWRmNjJkYzhmYWY2ODBjZWQxYzk4NTMyZTBjOTMwNzliNzZkZGYuLjg0MjkzMzI5MjMxNGQ4
MDNiMmRmMTYzOTRlMmJiZGI4NmFkNTc4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKQEAgLTQ5LDYgKzQ5LDggQEAgU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVz
LCBPU1N0YXQKICNkZWZpbmUgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc29mdExpbmtfQ29y
ZU1lZGlhX0NNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgsIHNpemVf
dCwgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZlcikpCiAjZGVmaW5lIENN
QmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVy
R2V0RGF0YUxlbmd0aAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzLCBPU1N0YXR1cywgKGNvbnN0IHZvaWQq
IHNvdXJjZUJ5dGVzLCBDTUJsb2NrQnVmZmVyUmVmIGRlc3RpbmF0aW9uQnVmZmVyLCBzaXplX3Qg
b2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUxlbmd0aCksIChzb3VyY2VCeXRlcywg
ZGVzdGluYXRpb25CdWZmZXIsIG9mZnNldEludG9EZXN0aW5hdGlvbiwgZGF0YUxlbmd0aCkpCisj
ZGVmaW5lIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9D
TUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRp
Y3Rpb25hcnlSZWYsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVm
aW5lIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zIHNvZnRMaW5rX0NvcmVNZWRpYV9D
TUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0VHlwZUlELCBDRlR5cGVJRCwg
KHZvaWQpLCAoKSkKQEAgLTIyNSwxMCArMjI3LDE0IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0QnVmZmVyQ291bnQsIENNSXRl
CiAjZGVmaW5lIENNQnVmZmVyUXVldWVHZXRCdWZmZXJDb3VudCBzb2Z0TGlua19Db3JlTWVkaWFf
Q01CdWZmZXJRdWV1ZUdldEJ1ZmZlckNvdW50CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0
YW1wLCBDTVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKICNkZWZpbmUg
Q01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0YW1wIHNvZnRMaW5rX0NvcmVN
ZWRpYV9DTUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25UaW1lU3RhbXAKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Q2Fs
bGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzLCBjb25zdCBDTUJ1ZmZlckNhbGxiYWNrcyAq
LCAoKSwgKCkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNh
bXBsZUJ1ZmZlcnMgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NG
b3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGltZVN0YW1wLCBD
TVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKICNkZWZpbmUgQ01CdWZm
ZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3JlTWVkaWFfQ01C
dWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcAogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldp
dGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUsIENN
QnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNrLCB2b2lkKiB0cmlnZ2Vy
UmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmlnZ2VyQ29uZGl0aW9uLCBD
TUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKiB0
cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywgdHJpZ2dlclJlZmNvbiwg
dHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dlclRva2VuT3V0KSkKICNk
ZWZpbmUgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQgc29m
dExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhy
ZXNob2xkCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01C
dWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1
ZSksIChxdWV1ZSkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YQogCiBTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05v
dERpc3BsYXksIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0Rv
Tm90RGlzcGxheSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNw
bGF5KCkKQEAgLTI1OCw2ICsyNjQsMTUgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIo
UEFMLCBDb3JlTWVkaWEsIGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQKICNkZWZp
bmUga0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCBnZXRfQ29yZU1lZGlhX2tDTVRp
bWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9I
RUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9u
X0J1ZmZlckNvbnN1bWVkLCBDRlN0cmluZ1JlZikKICNkZWZpbmUga0NNU2FtcGxlQnVmZmVyQ29u
c3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQgZ2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVC
dWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCgpCitTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVu
dEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtD
TVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb24gZ2V0
X0NvcmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0VuZHNQcmV2aW91c1NhbXBs
ZUR1cmF0aW9uKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlh
LCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0dyYWR1YWxEZWNvZGVyUmVmcmVzaCwgQ0ZT
dHJpbmdSZWYpCisjZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERl
Y29kZXJSZWZyZXNoIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9H
cmFkdWFsRGVjb2RlclJlZnJlc2goKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9U
cmltRHVyYXRpb25BdFN0YXJ0LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUgZ2V0X0NvcmVNZWRpYV9r
Q01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3RhcnQgZ2V0X0NvcmVN
ZWRpYV9rQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3RhcnQoKQor
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUsIGNvbnN0IHZvaWQqLCAoQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uUmVmIGRlc2MsIHNpemVfdCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkK
KyNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUgc29mdExpbmtf
Q29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkK
ICNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlv
biBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFz
aWNEZXNjcmlwdGlvbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2ssIE9TU3RhdHVzLCAoQ0ZBbGxv
Y2F0b3JSZWYgc3RydWN0dXJlQWxsb2NhdG9yLCB2b2lkKiBtZW1vcnlCbG9jaywgc2l6ZV90IGJs
b2NrTGVuZ3RoLCBDRkFsbG9jYXRvclJlZiBibG9ja0FsbG9jYXRvciwgY29uc3QgQ01CbG9ja0J1
ZmZlckN1c3RvbUJsb2NrU291cmNlKiBjdXN0b21CbG9ja1NvdXJjZSwgc2l6ZV90IG9mZnNldFRv
RGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIENNQmxvY2tCdWZmZXJGbGFncyBmbGFncywgQ01CbG9j
a0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJlQWxsb2NhdG9yLCBtZW1vcnlC
bG9jaywgYmxvY2tMZW5ndGgsIGJsb2NrQWxsb2NhdG9yLCBjdXN0b21CbG9ja1NvdXJjZSwgb2Zm
c2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncywgYmxvY2tCdWZmZXJPdXQpKQpAQCAtMjY2LDYg
KzI4MSw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBD
TVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVy
R2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIgc29mdExpbmtfQ29yZU1l
ZGlhX0NNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZm
ZXIKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBs
ZUJ1ZmZlckdldE51bVNhbXBsZXMsIENNSXRlbUNvdW50LCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1
ZiksIChzYnVmKSkKICNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRS
aWNoZXN0RGVjb2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICosIChDTUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKKyNkZWZpbmUgQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdCBzb2Z0TGlua19Db3JlTWVk
aWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdAogU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVy
Q29weVNhbXBsZUJ1ZmZlckZvclJhbmdlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9j
YXRvciwgQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZSYW5nZSBzYW1wbGVSYW5nZSwgQ01TYW1w
bGVCdWZmZXJSZWYqIHNCdWZPdXQpLCAoYWxsb2NhdG9yLCBzYnVmLCBzYW1wbGVSYW5nZSwgc0J1
Zk91dCkpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlIHNv
ZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVm
ZmVyR2V0U2FtcGxlU2l6ZUFycmF5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYs
IENNSXRlbUNvdW50IHNpemVBcnJheUVudHJpZXMsIHNpemVfdCogc2l6ZUFycmF5T3V0LCBDTUl0
ZW1Db3VudCogc2l6ZUFycmF5RW50cmllc05lZWRlZE91dCksIChzYnVmLCBzaXplQXJyYXlFbnRy
aWVzLCBzaXplQXJyYXlPdXQsIHNpemVBcnJheUVudHJpZXNOZWVkZWRPdXQpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZGJhMzc2MTc3YTBmZTc4MGUyMWUzNzczYjA4NmFjMmE1YjE5MTMzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5j
cHAKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0IDxWaWRlb1Rvb2xib3gvVlRDb21wcmVz
c2lvblNlc3Npb24uaD4KKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJ
TktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gpCisKK1NPRlRfTElOS19D
T05TVEFOVF9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRDb21wcmVzc2lvblByb3Bl
cnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFO
VF9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5
X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0
eUtleV9SZWFsVGltZSwgQ0ZTdHJpbmdSZWYpCisKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJs
ZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsIENGU3RyaW5nUmVmKQorCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNl
c3Npb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgQ01WaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUsIENGRGlj
dGlvbmFyeVJlZiBlbmNvZGVyU3BlY2lmaWNhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUlt
YWdlQnVmZmVyQXR0cmlidXRlcywgQ0ZBbGxvY2F0b3JSZWYgY29tcHJlc3NlZERhdGFBbGxvY2F0
b3IsIFZUQ29tcHJlc3Npb25PdXRwdXRDYWxsYmFjayBvdXRwdXRDYWxsYmFjaywgdm9pZCogb3V0
cHV0Q2FsbGJhY2tSZWZDb24sIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmKiBjb21wcmVzc2lvblNl
c3Npb25PdXQpLCAoYWxsb2NhdG9yLCB3aWR0aCwgaGVpZ2h0LCBjb2RlY1R5cGUsIGVuY29kZXJT
cGVjaWZpY2F0aW9uLCBzb3VyY2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMsIGNvbXByZXNzZWREYXRh
QWxsb2NhdG9yLCBvdXRwdXRDYWxsYmFjaywgb3V0cHV0Q2FsbGJhY2tSZWZDb24sIGNvbXByZXNz
aW9uU2Vzc2lvbk91dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVv
VG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChW
VENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNl
bnRhdGlvblRpbWVTdGFtcCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGlt
ZVN0YW1wKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94
LCBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Np
b25TZXNzaW9uUmVmIHNlc3Npb24sIENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGlt
ZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBkdXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVm
IGZyYW1lUHJvcGVydGllcywgdm9pZCogc291cmNlRnJhbWVSZWZjb24sIFZURW5jb2RlSW5mb0Zs
YWdzKiBpbmZvRmxhZ3NPdXQpLCAoc2Vzc2lvbiwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRp
bWVTdGFtcCwgZHVyYXRpb24sIGZyYW1lUHJvcGVydGllcywgc291cmNlRnJhbWVSZWZjb24sIGlu
Zm9GbGFnc091dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9v
bGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVz
LCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKworI2VuZGlm
IC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1Zp
ZGVvVG9vbGJveFNvZnRMaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE5ZmU1MWUwZmYxNWNmMjNkYWQ5ODA4
OWMyNTk2YWRmMTkwYWQ0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0
Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBW
aWRlb1Rvb2xib3gpCisKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVmlkZW9U
b29sYm94LCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCBDRlN0
cmluZ1JlZikKKyNkZWZpbmUga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1l
UmF0ZSBnZXRfVmlkZW9Ub29sYm94X2tWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0ZWRG
cmFtZVJhdGUoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xi
b3gsIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9u
LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlG
cmFtZUludGVydmFsRHVyYXRpb24gZ2V0X1ZpZGVvVG9vbGJveF9rVlRDb21wcmVzc2lvblByb3Bl
cnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbigpCitTT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9S
ZWFsVGltZSwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlf
UmVhbFRpbWUgZ2V0X1ZpZGVvVG9vbGJveF9rVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxU
aW1lKCkKKworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gs
IGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZp
ZGVvRW5jb2RlciwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtWVFZpZGVvRW5jb2RlclNwZWNpZmlj
YXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRW5jb2RlciBnZXRfVmlkZW9Ub29s
Ym94X2tWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRl
ZFZpZGVvRW5jb2RlcigpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlk
ZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVv
Q29kZWNUeXBlIGNvZGVjVHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9u
LCBDRkRpY3Rpb25hcnlSZWYgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRv
clJlZiBjb21wcmVzc2VkRGF0YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNr
IG91dHB1dENhbGxiYWNrLCB2b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lv
blNlc3Npb25SZWYqIGNvbXByZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBo
ZWlnaHQsIGNvZGVjVHlwZSwgZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVy
QXR0cmlidXRlcywgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRw
dXRDYWxsYmFja1JlZkNvbiwgY29tcHJlc3Npb25TZXNzaW9uT3V0KSkKKyNkZWZpbmUgVlRDb21w
cmVzc2lvblNlc3Npb25DcmVhdGUgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25T
ZXNzaW9uQ3JlYXRlCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9v
bGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENv
bXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRh
dGlvblRpbWVTdGFtcCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0
YW1wKSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBzb2Z0TGlu
a19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcworU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25T
ZXNzaW9uRW5jb2RlRnJhbWUsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vz
c2lvbiwgQ1ZJbWFnZUJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRp
bWVTdGFtcCwgQ01UaW1lIGR1cmF0aW9uLCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVz
LCB2b2lkKiBzb3VyY2VGcmFtZVJlZmNvbiwgVlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091
dCksIChzZXNzaW9uLCBpbWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlv
biwgZnJhbWVQcm9wZXJ0aWVzLCBzb3VyY2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKKyNk
ZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSBzb2Z0TGlua19WaWRlb1Rvb2xi
b3hfVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRv
RW5jb2RlRnJhbWVzLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24p
LCAoc2Vzc2lvbikpCisjZGVmaW5lIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2Rl
RnJhbWVzIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVU
b0VuY29kZUZyYW1lcworCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDZjZDE3NDIzZmMwMjFhYmM2MjRlNzVjZjJhM2Q4Y2IyOWQzZmFkNzMu
LjEwODRiOWI4MTAwN2UwNWE2ODQ4MWM2MDUzYjQzZDVjZTgzN2VkODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dApAQCAtNDkyLDcgKzQ5Miw5IEBAIHBsYXRmb3JtL21hYy9XZWJQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlci5tbQogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQogCiBwbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKK3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIEBuby11bmlm
eQogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCitwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5tbSBAbm8tdW5pZnkKIAogcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODdjZTQxNmIxNzk1OWYw
ZDY4ZWJjN2Q5MjNiZDA1M2UwYThiNDc4Yi4uZThiMmU2NDI2ZWQ4NmY4YTYyZmM5NDc4M2JmOTNj
YmE4OWZlMDk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTE0MSw2ICsxMTQxLDggQEAKIAkJNDFERTdDN0MyMjJEQTE0MzAw
NTMyQjY1IC8qIFN0b3JhZ2VRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREU3QzdCMjIyREExM0UwMDUzMkI2NSAvKiBTdG9yYWdl
UXVvdGFNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDFERUZDQjYxRTU2QzFCRDAwMEQ5RTVGIC8qIEpTRE9NTWFwTGlrZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFERUZDQjQxRTU2QzFC
OTAwMEQ5RTVGIC8qIEpTRE9NTWFwTGlrZS5oICovOyB9OwogCQk0MUUxQjFEMTBGRjU5ODY5MDA1
NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtl
ci5oICovOyB9OworCQk0MUUxRjM0MjI0OEE2OUQwMDAyMkQ1REUgLyogVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbSAqLzsgfTsKKwkJNDFFMUYzNDMyNDhBNjlENDAwMjJENURFIC8qIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRTFGMzNEMjQ4QTYyQjYwMDIyRDVERSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW0gKi87IH07CiAJCTQxRTlEQ0U3MjMxOTc0QkYwMEYzNTk0OSAvKiBCbG9iTG9h
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5
RENFNDIzMTk3M0ZFMDBGMzU5NDkgLyogQmxvYkxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRTlEQ0U5MjMxOUNBNzYwMEYzNTk0OSAv
KiBOZXR3b3JrU2VuZFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUU5RENFODIzMTlDQTc1MDBGMzU5NDkgLyogTmV0d29ya1NlbmRRdWV1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRjA2
MjE0MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMjBGNUYxOTI2
MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oICovOyB9OwpAQCAtNzU4Myw2
ICs3NTg1LDggQEAKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdF
MTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4OTIzRDZFODFDMDBCMTY0MjEg
LyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUNGOEJFNTFENDYyMjIwMDA3MDdEQzkg
LyogRmV0Y2hCb2R5Q29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmV0Y2hCb2R5Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1
QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03NjExLDYgKzc2MTUsOCBAQAogCQk0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJh
Y3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJh
Y3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFDQjBGRjU5
ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWJzdHJhY3RXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFFMUIxQ0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBBYnN0cmFjdFdvcmtlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRTFGMzNEMjQ4QTYyQjYwMDIyRDVERSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
RTFGMzNGMjQ4QTYyQjYwMDIyRDVERSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTQwODM4MURDQjc0NzkwMEVG
Q0UxOSAvKiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFFNTkzRkQyMTQ4NjVBOTAwRDNDQjYxIC8qIFJUQ1ByaW9yaXR5VHlw
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUlRDUHJpb3JpdHlUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFFNTkzRkYyMTQ4NjVBQTAwRDNDQjYxIC8qIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVy
cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5MzI4LDggKzE5MzM0LDEyIEBACiAJCTREM0MwNUQ0MjFBRjQ4MDkw
MEYyODkwQSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJNDFFMUYzM0YyNDhBNjJCNjAwMjJENURFIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5oICovLAorCQkJCTQxRTFGMzNEMjQ4QTYyQjYwMDIyRDVERSAvKiBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8sCiAJCQkJNEQ3M0Y5NEMyMThDNEE4NzAwM0EzRUQ2IC8q
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCAqLywKIAkJCQk0RDczRjk0RDIxOEM0
QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSAqLywKKwkJ
CQk0MUNENkY4OTIzRDZFODFDMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
LmggKi8sCisJCQkJNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMzQzNzIsNiArMzQzODIsNyBAQAogCQkJCUM5MEY2NTU1MUIyMjUz
QjEwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RDOEI1QTYxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MUUxRjM0MzI0OEE2OUQ0MDAy
MkQ1REUgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2Nv
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREYyQjAxMDE4MjA1NDA2MDBGMkI0MjQgLyogTW9j
a0JveC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTA1OEFERjFENjdDMjI5MDA5QTUzOEMgLyog
TW9ja0dhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNDc1Miw2ICszNDc2Myw3IEBACiAJ
CQkJREVDQTgwNEYxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNzAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJREVDQTgwNTAxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2Uy
NzEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTgwNTExRjlGRUQ2QTAwRTNCNjYxIC8qIFVu
aWZpZWRTb3VyY2UyNzIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFFMUYzNDIyNDhBNjlEMDAw
MjJENURFIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCURFQ0E4MDUyMUY5RkVENkEwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjczLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCURFQ0E4MDUzMUY5RkVENkEwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNl
Mjc0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFQ0E4MDU0MUY5RkVENkEwMEUzQjY2MSAvKiBV
bmlmaWVkU291cmNlMjc1LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDJjOWU5YzhlZmE0ZjNiNDI0MGFmZWJmZWEwYWUyMDZl
ODZjZWQzZGQuLmMxMjg0YjAwYzZjYzY5OTRhOWU1NTI3NWMwMTRmMjgyOWQzOTA4OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKQEAgLTI2LDkgKzI2LDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsLmgiCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtMTEyLDQgKzExMyw0IEBAIGNv
bnN0IFN0cmluZyYgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjptaW1lVHlwZSgpCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdB
VEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAppbmRleCBiZDZmNzU4ODI4
ZDIyMDM2NGI1ZGEwOWU3MTg2OGIxNzU4ZjJhMTFhLi43MjZlZWI1MDk1ZjM3YTk5NTIyMmYwYWVm
MWFhODg0MmE5Y2RkNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgK
QEAgLTI0LDcgKzI0LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVH
QVRFKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCkBAIC02MCw0ICs2MCw0IEBAIHByaXZhdGU6
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNDdiZjgxZTFkNDU2YzcwYzJkOTQ0ZjcwNDVhOGUxNmUwNTliY2Y5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCwwICsxLDkxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNF
KEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgorCit0eXBl
ZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBl
ZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252ZXJ0ZXJSZWY7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKENNQnVmZmVyUXVl
dWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKyAgICB+QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAgICB2b2lkIGZpbmlzaCgpOworICAgIHZvaWQgYWRk
U2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBn
ZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+
IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IoKTsKKyAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdn
ZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworCisgICAgc3RhdGljIE9TU3RhdHVz
IGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJ
bnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKiwg
dm9pZCopOworCisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVm
KTsKKyAgICBib29sIGluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9u
KENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIEF1ZGlvRm9ybWF0SUQpOworICAgIHNpemVfdCBjb21w
dXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwg
VUludDMyLCBGbG9hdDMyKTsKKyAgICB2b2lkIGF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENN
U2FtcGxlQnVmZmVyUmVmKTsKKyAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IGdyYWR1YWxEZWNvZGVy
UmVmcmVzaENvdW50KCk7CisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyV2l0aE51
bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCk7CisgICAgdm9pZCBw
cm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKENNVGltZSk7CisgICAgT1NTdGF0
dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKFVJbnQzMiosIEF1ZGlvQnVmZmVy
TGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKik7CisKKyAgICBSZXRhaW5QdHI8
Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01C
dWZmZXJRdWV1ZVJlZj4gbV9pbnB1dEJ1ZmZlclF1ZXVlOworICAgIGRpc3BhdGNoX3F1ZXVlX3Qg
bV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIENNVGltZSBtX2xvd1dhdGVyVGltZTsKKyAgICBi
b29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07CisKKyAgICBSZXRhaW5QdHI8QXVkaW9Db252ZXJ0
ZXJSZWY+IG1fY29udmVydGVyOworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX3Nv
dXJjZUZvcm1hdDsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbV9kZXN0aW5hdGlv
bkZvcm1hdDsKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9kZXN0aW5h
dGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAgIFJldGFpblB0cjxOU051bWJlcj4gbV9nZHJDb3Vu
dE51bTsKKyAgICBVSW50MzIgbV9tYXhPdXRwdXRQYWNrZXRTaXplOworICAgIFZlY3RvcjxBdWRp
b1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25z
OworCisgICAgQ01UaW1lIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAg
ICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wOworICAgIENNVGlt
ZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb247CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9zb3VyY2VC
dWZmZXI7CisgICAgVmVjdG9yPGNoYXI+IG1fZGVzdGluYXRpb25CdWZmZXI7CisKKyAgICBSZXRh
aW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsKKyAgICBzaXplX3Qg
bV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7CisgICAgc2l6ZV90IG1fY3VycmVudE9mZnNldEluU2Ft
cGxlQmxvY2tCdWZmZXI7CisgICAgQXVkaW9Gb3JtYXRJRCBtX291dHB1dENvZGVjVHlwZTsKK307
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJ
T04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk1ZmIzMTJiYmI4ZTUzZDQ0MzdmNzJlYzcxMzljYTBjZTE2ZjI4MzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtMCwwICsxLDUwMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRp
b0NvZGVjLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+CisjaW5j
bHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgPHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oPgor
CisjZGVmaW5lIExPV19XQVRFUl9USU1FX0lOX1NFQ09ORFMgMC4xCisKK3VzaW5nIG5hbWVzcGFj
ZSBQQUw7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUo
Q01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmpl
Y3QpCit7CisgICAgYXV0byBjb21wcmVzc29yID0gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcj4obmV3IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpKTsKKyAg
ICBpZiAoIWNvbXByZXNzb3ItPmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0KSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbXByZXNzb3I7Cit9CisKK0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkK
KyAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29t
LmFwcGxlLkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklB
TCkgfQorICAgICwgbV9sb3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNlY29uZHMoTE9XX1dB
VEVSX1RJTUVfSU5fU0VDT05EUywgMTAwMCkgfQorICAgICwgbV9vdXRwdXRDb2RlY1R5cGUgeyBr
QXVkaW9Gb3JtYXRNUEVHNEFBQyB9Cit7Cit9CisKK0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCit7CisgICAgaWYgKG1fc2VyaWFsRGlz
cGF0Y2hRdWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVl
dWUpOworfQorCitib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShD
TUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVj
dCkKK3sKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIGlucHV0QnVmZmVyUXVldWU7CisgICAgaWYgKGF1
dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENN
QnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJmlucHV0
QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVDcmVhdGUgZm9yIG1faW5w
dXRCdWZmZXJRdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICBtX2lucHV0QnVmZmVyUXVldWUgPSBhZG9wdENGKGlucHV0QnVmZmVy
UXVldWUpOworCisgICAgQ01CdWZmZXJRdWV1ZVJlZiBvdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBp
ZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycygpLCAm
b3V0cHV0QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3Ry
ZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVDcmVhdGUgZm9y
IG1fb3V0cHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9vdXRwdXRCdWZmZXJRdWV1ZSA9IGFkb3B0Q0Yob3V0
cHV0QnVmZmVyUXVldWUpOworICAgIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcihtX291dHB1
dEJ1ZmZlclF1ZXVlLmdldCgpLCBjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QsIGtDTUJ1ZmZlclF1
ZXVlVHJpZ2dlcl9XaGVuRGF0YUJlY29tZXNSZWFkeSwga0NNVGltZVplcm8sIE5VTEwpOworCisg
ICAgbV9pc0VuY29kaW5nID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCit7CisgICAgZGlzcGF0Y2hfc3luYyht
X3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50
aWxMb3dXYXRlclRpbWUoa0NNVGltZUludmFsaWQpOworICAgICAgICBhdXRvIGVycm9yID0gQ01C
dWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBmYWlsZWQgJWQiLCBl
cnJvcik7CisgICAgICAgIG1faXNFbmNvZGluZyA9IGZhbHNlOworICAgIH0pOworfQorCitib29s
IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNl
Rm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlv
biwgQXVkaW9Gb3JtYXRJRCBvdXRwdXRGb3JtYXRJRCkKK3sKKyAgICBjb25zdCBhdXRvICphdWRp
b0Zvcm1hdExpc3RJdGVtID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29k
YWJsZUZvcm1hdChmb3JtYXREZXNjcmlwdGlvbik7CisgICAgbV9zb3VyY2VGb3JtYXQgPSBhdWRp
b0Zvcm1hdExpc3RJdGVtLT5tQVNCRDsKKworICAgIG1lbXNldCgmbV9kZXN0aW5hdGlvbkZvcm1h
dCwgMCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOworICAgIG1fZGVzdGlu
YXRpb25Gb3JtYXQubUZvcm1hdElEID0gb3V0cHV0Rm9ybWF0SUQ7CisgICAgbV9kZXN0aW5hdGlv
bkZvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fc291cmNlRm9ybWF0Lm1TYW1wbGVSYXRlOworICAgIG1f
ZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgPSBtX3NvdXJjZUZvcm1hdC5tQ2hh
bm5lbHNQZXJGcmFtZTsKKworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKG1fZGVzdGluYXRpb25G
b3JtYXQpOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eShrQXVk
aW9Gb3JtYXRQcm9wZXJ0eV9Gb3JtYXRJbmZvLCAwLCBOVUxMLCAmc2l6ZSwgJm1fZGVzdGluYXRp
b25Gb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBBdWRp
b0NvbnZlcnRlclJlZiBjb252ZXJ0ZXI7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZl
cnRlck5ldygmbV9zb3VyY2VGb3JtYXQsICZtX2Rlc3RpbmF0aW9uRm9ybWF0LCAmY29udmVydGVy
KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBBdWRpb0NvbnZlcnRlck5ldyBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX2NvbnZlcnRlciA9IGFkb3B0
Q0YoY29udmVydGVyKTsKKworICAgIHNpemVfdCBjb29raWVTaXplID0gMDsKKyAgICBjb25zdCB2
b2lkICpjb29raWUgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZShmb3Jt
YXREZXNjcmlwdGlvbiwgJmNvb2tpZVNpemUpOworICAgIGlmIChjb29raWVTaXplKSB7CisgICAg
ICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRl
ci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29va2llLCAoVUludDMy
KWNvb2tpZVNpemUsIGNvb2tpZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29u
dmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29va2llIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgc2l6ZSA9
IHNpemVvZihtX3NvdXJjZUZvcm1hdCk7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZl
cnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50
SW5wdXRTdHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX3NvdXJjZUZvcm1hdCkpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50SW5wdXRTdHJlYW1EZXNjcmlwdGlv
biBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmICghbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAibUJ5dGVzUGVyUGFja2V0IHNob3VsZCBub3Qg
YmUgemVybyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc2l6ZSA9IHNp
emVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29u
dmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckN1cnJl
bnRPdXRwdXRTdHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRPdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9PSBrQXVk
aW9Gb3JtYXRNUEVHNEFBQykgeworICAgICAgICAvLyBGSVhNRTogU2V0IG91dHB1dEJpdFJhdGUg
YWNjb3JkaW5nIE1lZGlhUmVjb3JkZXJPcHRpb25zLmF1ZGlvQml0c1BlclNlY29uZC4KKyAgICAg
ICAgVUludDMyIG91dHB1dEJpdFJhdGUgPSA2NDAwMDsKKyAgICAgICAgaWYgKG1fZGVzdGluYXRp
b25Gb3JtYXQubVNhbXBsZVJhdGUgPj0gNDQxMDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRl
ID0gMTkyMDAwOworICAgICAgICBlbHNlIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVS
YXRlIDwgMjIwMDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMzIwMDA7CisKKyAgICAg
ICAgc2l6ZSA9IHNpemVvZihvdXRwdXRCaXRSYXRlKTsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3Ig
PSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252
ZXJ0ZXJFbmNvZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIHNldHRpbmcga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmICghbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpIHsKKyAgICAgICAg
Ly8gSWYgdGhlIGRlc3RpbmF0aW9uIGZvcm1hdCBpcyBWQlIsIHdlIG5lZWQgdG8gZ2V0IG1heCBz
aXplIHBlciBwYWNrZXQgZnJvbSB0aGUgY29udmVydGVyLgorICAgICAgICBzaXplID0gc2l6ZW9m
KG1fbWF4T3V0cHV0UGFja2V0U2l6ZSk7CisKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRp
b0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQ
cm9wZXJ0eU1heGltdW1PdXRwdXRQYWNrZXRTaXplLCAmc2l6ZSwgJm1fbWF4T3V0cHV0UGFja2V0
U2l6ZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyUHJvcGVydHlN
YXhpbXVtT3V0cHV0UGFja2V0U2l6ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gZGVzdGluYXRp
b25CdWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemVGb3JBdWRpb0Zvcm1hdChtX2Rlc3RpbmF0
aW9uRm9ybWF0LCBtX21heE91dHB1dFBhY2tldFNpemUsIExPV19XQVRFUl9USU1FX0lOX1NFQ09O
RFMpOworICAgIGlmIChtX2Rlc3RpbmF0aW9uQnVmZmVyLnNpemUoKSA8IGRlc3RpbmF0aW9uQnVm
ZmVyU2l6ZSkKKyAgICAgICAgbV9kZXN0aW5hdGlvbkJ1ZmZlci5yZXNpemUoZGVzdGluYXRpb25C
dWZmZXJTaXplKTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0
KQorICAgICAgICBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLnJlc2VydmVDYXBhY2l0
eShtX2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5KCkgLyBtX21heE91dHB1dFBhY2tldFNpemUp
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQoQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uIGZvcm1hdCwgVUludDMyIG1heE91dHB1dFBhY2tldFNpemUsIEZsb2F0MzIgZHVy
YXRpb24pCit7CisgICAgVUludDMyIG51bVBhY2tldHMgPSAoZm9ybWF0Lm1TYW1wbGVSYXRlICog
ZHVyYXRpb24pIC8gZm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQ7CisgICAgVUludDMyIG91dHB1dFBh
Y2tldFNpemUgPSBmb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gZm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCA6IG1heE91dHB1dFBhY2tldFNpemU7CisgICAgVUludDMyIGJ1ZmZlclNpemUgPSBudW1QYWNr
ZXRzICogb3V0cHV0UGFja2V0U2l6ZTsKKworICAgIHJldHVybiBidWZmZXJTaXplOworfQorCit2
b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVk
ZWQoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGlmIChDTVRJTUVfSVNfSU5WQUxJ
RChtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7CisgICAgICAgIEF1ZGlvQ29udmVydGVyUHJp
bWVJbmZvIHByaW1lSW5mbyB7IDAsIDAgfTsKKyAgICAgICAgVUludDMyIHNpemUgPSBzaXplb2Yo
cHJpbWVJbmZvKTsKKworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0
UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlclByaW1lSW5mbywgJnNp
emUsICZwcmltZUluZm8pKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRl
clByaW1lSW5mbyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiA9IENNVGltZU1h
a2UocHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMsIG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJh
dGUpOworICAgIH0KKworICAgIGlmIChDTVRJTUVfQ09NUEFSRV9JTkxJTkUoa0NNVGltZVplcm8s
IDwsIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbikpIHsKKyAgICAgICAgQ01UaW1lIHNhbXBsZUR1
cmF0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgICAgICBDTVRp
bWUgdHJpbUR1cmF0aW9uID0gQ01UaW1lTWluaW11bShzYW1wbGVEdXJhdGlvbiwgbV9yZW1haW5p
bmdQcmltZUR1cmF0aW9uKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHRyaW1BdFN0YXJ0RGlj
dCA9IENNVGltZUNvcHlBc0RpY3Rpb25hcnkodHJpbUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JEZWZh
dWx0KTsKKyAgICAgICAgQ01TZXRBdHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0
YWNobWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QsIGtDTUF0dGFj
aG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CisgICAgICAgIENGUmVsZWFzZSh0cmltQXRTdGFy
dERpY3QpOworICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVTdWJ0cmFj
dChtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24sIHRyaW1EdXJhdGlvbik7CisgICAgfQorfQorCitS
ZXRhaW5QdHI8TlNOdW1iZXI+IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z3JhZHVhbERl
Y29kZXJSZWZyZXNoQ291bnQoKQoreworICAgIFVJbnQzMiBkZWxheVNpemUgPSBzaXplb2YodWlu
dDMyX3QpOworICAgIHVpbnQzMl90IG9yaWdpbmFsRGVsYXlNb2RlID0gMDsKKyAgICBpZiAoYXV0
byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtB
dWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUsICZkZWxheVNpemUsICZvcmlnaW5hbERlbGF5TW9k
ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZh
aWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAg
IHVpbnQzMl90IG9wdGltYWxEZWxheU1vZGUgPSBrQXVkaW9Db2RlY0RlbGF5TW9kZV9PcHRpbWFs
OworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZl
cnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSwgZGVsYXlTaXplLCAmb3B0
aW1hbERlbGF5TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5
RGVsYXlNb2RlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOwor
ICAgIH0KKworICAgIFVJbnQzMiBwcmltZVNpemUgPSBzaXplb2YoQXVkaW9Db2RlY1ByaW1lSW5m
byk7CisgICAgQXVkaW9Db2RlY1ByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07CisgICAgaWYg
KGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgp
LCBrQXVkaW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZvLCAmcHJpbWVTaXplLCAmcHJpbWVJbmZvKSkg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlQcmltZUluZm8gZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgaWYg
KGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgp
LCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCBkZWxheVNpemUsICZvcmlnaW5hbERlbGF5
TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2Rl
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAg
ICByZXR1cm4gYWRvcHROUyhbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoocHJpbWVJbmZvLmxlYWRp
bmdGcmFtZXMgLyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQpXSk7Cit9CisK
K0NNU2FtcGxlQnVmZmVyUmVmIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVm
ZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCBmaWxs
QnVmZmVyTGlzdCkKK3sKKyAgICBWZWN0b3I8Y2hhcj4gY29va2llOworICAgIGlmICghbV9kZXN0
aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIFVJbnQzMiBjb29raWVTaXplID0g
MDsKKworICAgICAgICBhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eUluZm8o
bV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29raWUs
ICZjb29raWVTaXplLCBOVUxMKTsKKyAgICAgICAgaWYgKChlcnJvciA9PSBub0VycikgJiYgISFj
b29raWVTaXplKSB7CisgICAgICAgICAgICBjb29raWUucmVzaXplKGNvb2tpZVNpemUpOworCisg
ICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9j
b252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29raWUsICZj
b29raWVTaXplLCBjb29raWUuZGF0YSgpKSkgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcg
a0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tpZSBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXN0aW5hdGlvbkZvcm1hdERl
c2NyaXB0aW9uOworICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmbV9kZXN0aW5hdGlvbkZvcm1hdCwgMCwg
TlVMTCwgY29va2llU2l6ZSwgY29va2llLmRhdGEoKSwgTlVMTCwgJmRlc3RpbmF0aW9uRm9ybWF0
RGVzY3JpcHRpb24pKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25D
cmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gbmlsOwor
ICAgICAgICB9CisgICAgICAgIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbiA9IGFkb3B0
Q0YoZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbik7CisgICAgICAgIG1fZ2RyQ291bnROdW0g
PSBncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudCgpOworICAgIH0KKworICAgIGNoYXIgKmRhdGEg
PSBzdGF0aWNfY2FzdDxjaGFyKj4oZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEpOwor
ICAgIHNpemVfdCBkYXRhU2l6ZSA9IGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0
ZVNpemU7CisKKyAgICBDTUJsb2NrQnVmZmVyUmVmIGJsb2NrQnVmZmVyOworICAgIGlmIChhdXRv
IGVycm9yID0gQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBOVUxMLCBkYXRhU2l6ZSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgMCwgZGF0
YVNpemUsIGtDTUJsb2NrQnVmZmVyQXNzdXJlTWVtb3J5Tm93RmxhZywgJmJsb2NrQnVmZmVyKSkg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICBhdXRvIGJ1
ZmZlciA9IGFkb3B0Q0YoYmxvY2tCdWZmZXIpOworCisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJs
b2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyhkYXRhLCBidWZmZXIuZ2V0KCksIDAsIGRhdGFTaXpl
KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVC
dWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1
ZmZlci5nZXQoKSwgdHJ1ZSwgTlVMTCwgTlVMTCwgbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0
aW9uLmdldCgpLCBudW1QYWNrZXRzLCBtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3Rh
bXAsIG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnMuZGF0YSgpLCAmc2FtcGxlQnVmZmVy
KTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0
ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAg
IHJldHVybiBuaWw7CisgICAgfQorCisgICAgaWYgKFttX2dkckNvdW50TnVtIGludFZhbHVlXSkK
KyAgICAgICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0
YWNobWVudEtleV9HcmFkdWFsRGVjb2RlclJlZnJlc2gsIChfX2JyaWRnZSBDRlR5cGVSZWYpbV9n
ZHJDb3VudE51bS5nZXQoKSwga0NNQXR0YWNobWVudE1vZGVfU2hvdWxkUHJvcGFnYXRlKTsKKwor
ICAgIHJldHVybiBzYW1wbGVCdWZmZXI7Cit9CisKK09TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6YXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYyhBdWRpb0NvbnZl
cnRlclJlZiwgVUludDMyICpudW1PdXRwdXRQYWNrZXRzUHRyLCBBdWRpb0J1ZmZlckxpc3QgKmJ1
ZmZlckxpc3QsIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24gKipwYWNrZXREZXNjcmlwdGlv
bk91dCwgdm9pZCAqYXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKQoreworICAgIGF1dG8gKmNv
bXByZXNzb3IgPSBzdGF0aWNfY2FzdDxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IqPihhdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOworICAgIHJldHVybiBjb21wcmVzc29yLT5wcm92aWRl
U291cmNlRGF0YU51bU91dHB1dFBhY2tldHMobnVtT3V0cHV0UGFja2V0c1B0ciwgYnVmZmVyTGlz
dCwgcGFja2V0RGVzY3JpcHRpb25PdXQpOworfQorCitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIqIG51
bU91dHB1dFBhY2tldHNQdHIsIEF1ZGlvQnVmZmVyTGlzdCogYXVkaW9CdWZmZXJMaXN0LCBBdWRp
b1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiogcGFja2V0RGVzY3JpcHRpb25PdXQpCit7CisgICAg
aWYgKHBhY2tldERlc2NyaXB0aW9uT3V0KQorICAgICAgICAqcGFja2V0RGVzY3JpcHRpb25PdXQg
PSBOVUxMOworCisgICAgY29uc3QgVUludDMyIG51bVBhY2tldHNUb0NvcHkgPSAqbnVtT3V0cHV0
UGFja2V0c1B0cjsKKyAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHkgPSAobnVtUGFja2V0c1RvQ29w
eSAqIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisKKyAgICBpZiAoYXVkaW9CdWZm
ZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAxKSB7CisgICAgICAgIHNpemVfdCBjdXJyZW50T2Zm
c2V0SW5Tb3VyY2VCdWZmZXIgPSAwOworCisgICAgICAgIGlmIChtX3NvdXJjZUJ1ZmZlci5zaXpl
KCkgPCBudW1CeXRlc1RvQ29weSkKKyAgICAgICAgICAgIG1fc291cmNlQnVmZmVyLnJlc2l6ZShu
dW1CeXRlc1RvQ29weSk7CisKKyAgICAgICAgd2hpbGUgKG51bUJ5dGVzVG9Db3B5KSB7CisgICAg
ICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPD0gbV9jdXJyZW50T2Zmc2V0SW5T
YW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVm
ZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBudWxscHRy
OworICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5
KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNhbXBsZUJ1
ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4o
bV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJs
b2NrQnVmZmVyID0gYWRvcHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4o
Q0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkp
KSkpOworICAgICAgICAgICAgICAgIGlmICghbV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIgZmFpbGVkIik7Cisg
ICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3Ro
KG1fc2FtcGxlQmxvY2tCdWZmZXIuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1fY3VycmVudE9m
ZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgIHNpemVfdCBudW1C
eXRlc1RvQ29weUZyb21TYW1wbGVCYnVmID0gc3RkOjptaW4obnVtQnl0ZXNUb0NvcHksIChtX3Nh
bXBsZUJsb2NrQnVmZmVyU2l6ZSAtIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIp
KTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5RGF0
YUJ5dGVzKG1fc2FtcGxlQmxvY2tCdWZmZXIuZ2V0KCksIG1fY3VycmVudE9mZnNldEluU2FtcGxl
QmxvY2tCdWZmZXIsIG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYsIChtX3NvdXJjZUJ1ZmZl
ci5kYXRhKCkgKyBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIpKSkgeworICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBudW1CeXRlc1RvQ29weSAtPSBudW1CeXRlc1RvQ29weUZyb21T
YW1wbGVCYnVmOworICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciAr
PSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgICAgIG1fY3VycmVu
dE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgKz0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1
ZjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1C
dWZmZXJzWzBdLm1EYXRhID0gbV9zb3VyY2VCdWZmZXIuZGF0YSgpOworICAgICAgICBhdWRpb0J1
ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3Vy
Y2VCdWZmZXI7CisgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubU51bWJlckNo
YW5uZWxzID0gbV9zb3VyY2VGb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisKKyAgICAgICAgKm51
bU91dHB1dFBhY2tldHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5
dGVTaXplIC8gbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKKyAgICAgICAgcmV0dXJu
IG5vRXJyOworICAgIH0KKworICAgIEFTU0VSVChhdWRpb0J1ZmZlckxpc3QtPm1OdW1iZXJCdWZm
ZXJzID09IDIpOworCisgICAgLy8gRklYTUU6IFN1cHBvcnQgaW50ZXJsZWF2ZWQgZGF0YSBieSB1
bmludGVybGVhdmluZyBtX3NvdXJjZUJ1ZmZlciBpZiBuZWVkZWQuCisgICAgQVNTRVJUKG1fc291
cmNlRm9ybWF0Lm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVk
KTsKKworICAgIGlmIChtX3NvdXJjZUJ1ZmZlci5zaXplKCkgPCAyICogbnVtQnl0ZXNUb0NvcHkp
CisgICAgICAgIG1fc291cmNlQnVmZmVyLnJlc2l6ZSgyICogbnVtQnl0ZXNUb0NvcHkpOworICAg
IGF1dG8qIGZpcnN0Q2hhbm5lbCA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICBhdXRvKiBz
ZWNvbmRDaGFubmVsID0gbV9zb3VyY2VCdWZmZXIuZGF0YSgpICsgbnVtQnl0ZXNUb0NvcHk7CisK
KyAgICBzaXplX3QgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyID0gMDsKKyAgICB3aGlsZSAo
bnVtQnl0ZXNUb0NvcHkpIHsKKyAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9
IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgIGlmICht
X3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZl
ciA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAw
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoQ01CdWZmZXJRdWV1ZUlzRW1wdHko
bV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZiko
Y29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1
ZmZlclF1ZXVlLmdldCgpKSkpKTsKKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBh
ZG9wdENGKChDTUJsb2NrQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDRlJldGFpbihDTVNh
bXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKSkpKSk7CisgICAgICAg
ICAgICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNh
bXBsZUJ1ZmZlckdldERhdGFCdWZmZXIgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgbV9zYW1w
bGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldElu
U2FtcGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVm
ZmVyR2V0RGF0YUxlbmd0aChtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpKSAvIDI7CisgICAgICAg
ICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICBzaXplX3Qg
bnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAo
bV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgLSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVm
ZmVyKSk7CisgICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5RGF0
YUJ5dGVzKG1fc2FtcGxlQmxvY2tCdWZmZXIuZ2V0KCksIG1fY3VycmVudE9mZnNldEluU2FtcGxl
QmxvY2tCdWZmZXIsIG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYsIChmaXJzdENoYW5uZWwg
KyBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIpKSkgeworICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENN
QmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIGZpcnN0IGNoYW5uZWwgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3Nh
bXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVy
ICsgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUsIG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYs
IChzZWNvbmRDaGFubmVsICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBzZWNvbmQgY2hhbm5lbCBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBudW1CeXRlc1RvQ29weSAtPSBudW1CeXRlc1RvQ29w
eUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVy
ICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICBtX2N1cnJlbnRP
ZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1E
YXRhID0gZmlyc3RDaGFubmVsOworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURh
dGFCeXRlU2l6ZSA9IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcjsKKyAgICBhdWRpb0J1ZmZl
ckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IDE7CisKKyAgICBhdWRpb0J1ZmZl
ckxpc3QtPm1CdWZmZXJzWzFdLm1EYXRhID0gc2Vjb25kQ2hhbm5lbDsKKyAgICBhdWRpb0J1ZmZl
ckxpc3QtPm1CdWZmZXJzWzFdLm1EYXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VC
dWZmZXI7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tTnVtYmVyQ2hhbm5lbHMg
PSAxOworCisgICAgKm51bU91dHB1dFBhY2tldHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0LT5tQnVm
ZmVyc1swXS5tRGF0YUJ5dGVTaXplIC8gbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsK
KyAgICByZXR1cm4gbm9FcnI7Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Ojpwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKENNVGltZSBsb3dXYXRlclRp
bWUpCit7CisgICAgaWYgKCFtX2NvbnZlcnRlcikgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IChD
TVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZUdldEhlYWQo
bV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOworICAgICAgICBBU1NFUlQoYnVmZmVyKTsKKwor
ICAgICAgICBtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1
ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIpOworICAgICAgICBtX2N1cnJlbnRP
dXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFByZXNl
bnRhdGlvblRpbWVTdGFtcChidWZmZXIpOworCisgICAgICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRp
b24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKGJ1ZmZlcik7CisgICAgICAg
IGlmICghaW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oZm9ybWF0
RGVzY3JpcHRpb24sIG1fb3V0cHV0Q29kZWNUeXBlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB3aGlsZSAoQ01USU1FX0lTX0lOVkFMSUQobG93V2F0ZXJUaW1lKSB8fCBDTVRJ
TUVfQ09NUEFSRV9JTkxJTkUobG93V2F0ZXJUaW1lLCA8LCBDTUJ1ZmZlclF1ZXVlR2V0RHVyYXRp
b24obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpIHsKKyAgICAgICAgQXVkaW9CdWZmZXJMaXN0
IGZpbGxCdWZmZXJMaXN0OworCisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJz
ID0gMTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxz
ID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKyAgICAgICAgZmlsbEJ1
ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IChVSW50MzIpbV9kZXN0aW5hdGlv
bkJ1ZmZlci5jYXBhY2l0eSgpOworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5t
RGF0YSA9IG1fZGVzdGluYXRpb25CdWZmZXIuZGF0YSgpOworCisgICAgICAgIFVJbnQzMiBvdXRw
dXRQYWNrZXRTaXplID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPyBtX2Rl
c3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA6IG1fbWF4T3V0cHV0UGFja2V0U2l6ZTsK
KyAgICAgICAgVUludDMyIG51bU91dHB1dFBhY2tldHMgPSAoVUludDMyKW1fZGVzdGluYXRpb25C
dWZmZXIuY2FwYWNpdHkoKSAvIG91dHB1dFBhY2tldFNpemU7CisKKyAgICAgICAgYXV0byBlcnJv
ciA9IEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIobV9jb252ZXJ0ZXIuZ2V0KCksIGF1
ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MsIHRoaXMsICZudW1PdXRwdXRQYWNrZXRz
LCAmZmlsbEJ1ZmZlckxpc3QsIG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnMuZGF0YSgp
KTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRpb0NvbnZlcnRlckZp
bGxDb21wbGV4QnVmZmVyIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFudW1PdXRwdXRQYWNrZXRzKQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBidWZmZXIgPSBzYW1wbGVCdWZmZXJXaXRoTnVt
UGFja2V0cyhudW1PdXRwdXRQYWNrZXRzLCBmaWxsQnVmZmVyTGlzdCk7CisKKyAgICAgICAgYXR0
YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoYnVmZmVyKTsKKworICAgICAgICBlcnJvciA9IENNU2Ft
cGxlQnVmZmVyU2V0T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlciwgbV9jdXJyZW50
T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBDTVNhbXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIENNVGltZSBuYXRpdmVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRp
b24oYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1w
ID0gQ01UaW1lQWRkKG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCwgbmF0aXZl
RHVyYXRpb24pOworCisgICAgICAgIENNVGltZSBvdXRwdXREdXJhdGlvbiA9IENNU2FtcGxlQnVm
ZmVyR2V0T3V0cHV0RHVyYXRpb24oYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJl
c2VudGF0aW9uVGltZVN0YW1wID0gQ01UaW1lQWRkKG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlv
blRpbWVTdGFtcCwgb3V0cHV0RHVyYXRpb24pOworCisgICAgICAgIGVycm9yID0gQ01CdWZmZXJR
dWV1ZUVucXVldWUobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgYnVmZmVyKTsKKyAgICAgICAg
aWYgKGVycm9yKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQg
d2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZm
ZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZl
clF1ZXVlRW5xdWV1ZShtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIENNQnVmZmVyUXVldWVFbnF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
CisgICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShtX2xvd1dhdGVyVGlt
ZSk7Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZm
ZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJp
YWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBpZiAobV9pc0VuY29kaW5nKQorICAgICAgICAg
ICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihidWZmZXIpOworICAgIH0pOworfQorCitDTVNhbXBsZUJ1
ZmZlclJlZiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZl
cigpCit7CisgICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4o
Q01CdWZmZXJRdWV1ZUdldEhlYWQobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKK30KKwor
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVybiBhZG9wdENGKChDTVNhbXBs
ZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRh
aW4obV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IGIxNDdjYTI4ODI5
YjBmMTAzMGJkYTc0YTA4NDI2YzQ1NjVlOTg3MWUuLjQ4ZTkwZGNlMjFiMWNjZjc5M2IxMmFhZDIx
OGQ2MDhlMmUxM2M1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0yNCw3ICsyNCw5IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZF
KEFWQVNTRVRXUklURVJERUxFR0FURSkKKworI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uaCIKIAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgpAQCAtMzUsMTAgKzM3LDE2IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAorI2luY2x1ZGUg
PENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgorI2luY2x1ZGUgPENvcmVNZWRpYS9DTVRpbWUu
aD4KKwogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVy
UmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiogQ01G
b3JtYXREZXNjcmlwdGlvblJlZjsKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNQnVmZmVyUXVldWVU
cmlnZ2VyVG9rZW4gKkNNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW47CiAKIE9CSkNfQ0xBU1MgQVZB
c3NldFdyaXRlcjsKIE9CSkNfQ0xBU1MgQVZBc3NldFdyaXRlcklucHV0OworT0JKQ19DTEFTUyBX
ZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWVkaWFU
aW1lOwpAQCAtNDYsNTEgKzU0LDczIEBAIGNsYXNzIE1lZGlhVGltZTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiBjbGFzcyBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CiBjbGFz
cyBQbGF0Zm9ybUF1ZGlvRGF0YTsKK2NsYXNzIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcjsK
IAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdURjo6
RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI+IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGljIENhbk1h
a2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXZWFrUHRyRmFjdG9yeUluaXRp
YWxpemF0aW9uOjpFYWdlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSog
YXVkaW9UcmFjaywgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHZpZGVvVHJhY2spOwog
ICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IGNyZWF0ZShib29s
IGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAgIH5NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcigpOwotICAgIAotICAgIGJvb2wgc2V0dXBXcml0ZXIoKTsKLSAgICBib29sIHNl
dFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICBib29sIHNldEF1ZGlvSW5w
dXQoKTsKKwogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJS
ZWYpOwogICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRp
b0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29uc3QgV1RGOjpNZWRpYVRp
bWUmLCBzaXplX3QpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwogICAgIHZvaWQgZmV0Y2hE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+JiYpOwog
CisgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIHZvaWQgYXBw
ZW5kRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKwogcHJpdmF0ZToKLSAgICBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcihSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4mJiwgU3RyaW5nJiYgcGF0
aCk7CisgICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9vbCBoYXNBdWRpbywgYm9vbCBo
YXNWaWRlbyk7CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgUmV0YWluUHRyPEFWQXNzZXRXcml0
ZXI+IG1fd3JpdGVyOwotICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9J
bnB1dDsKLSAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX2F1ZGlvSW5wdXQ7Ci0K
LSAgICBTdHJpbmcgbV9wYXRoOwotICAgIExvY2sgbV92aWRlb0xvY2s7Ci0gICAgTG9jayBtX2F1
ZGlvTG9jazsKLSAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nU2VtYXBob3JlOwot
ICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZTsKLSAgICBC
aW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmU7CisgICAgYm9vbCBp
bml0aWFsaXplKCk7CisKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZm
ZXJDYWxsYmFjayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CisgICAgc3RhdGlj
IHZvaWQgY29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVy
UXVldWVUcmlnZ2VyVG9rZW4pOworCisgICAgdm9pZCBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAg
dm9pZCBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworCisgICAgYm9vbCBhcHBlbmRD
b21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKTsKKyAgICBib29sIGFwcGVuZENvbXByZXNzZWRW
aWRlb1NhbXBsZUJ1ZmZlcigpOworCisgICAgdm9pZCBwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlv
U2FtcGxlQnVmZmVycygpOworICAgIHZvaWQgcHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBs
ZUJ1ZmZlcnMoKTsKKworICAgIHZvaWQgZmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYXBwZW5kRW5kT2ZWaWRlb1NhbXBs
ZUR1cmF0aW9uSWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogICAgIGJv
b2wgbV9oYXNTdGFydGVkV3JpdGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU3RvcHBlZCB7
IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzRmlyc3RBdWRpb1NhbXBsZSB7IHRydWUgfTsKLSAgICBk
aXNwYXRjaF9xdWV1ZV90IG1fYXVkaW9QdWxsUXVldWU7Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBt
X3ZpZGVvUHVsbFF1ZXVlOwotICAgIERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4+
IG1fdmlkZW9CdWZmZXJQb29sOwotICAgIERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJl
Zj4+IG1fYXVkaW9CdWZmZXJQb29sOworCisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1f
d3JpdGVyOwogCiAgICAgYm9vbCBtX2lzU3RvcHBpbmcgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOworCisgICAgYm9v
bCBtX2hhc0F1ZGlvOworICAgIGJvb2wgbV9oYXNWaWRlbzsKKworICAgIFJldGFpblB0cjxDTUZv
cm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CisgICAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7
CisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0Fzc2V0V3JpdGVySW5w
dXQ7CisKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV92aWRlb0Zvcm1h
dERlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I+IG1fdmlkZW9Db21wcmVzc29yOworICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5w
dXQ+IG1fdmlkZW9Bc3NldFdyaXRlcklucHV0OworICAgIENNVGltZSBtX2xhc3RWaWRlb1ByZXNl
bnRhdGlvblRpbWU7CisgICAgQ01UaW1lIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lOworICAgIGJv
b2wgbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzIHsgZmFsc2UgfTsKKworICAgIFJldGFpblB0cjxX
ZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+IG1fd3JpdGVyRGVsZWdhdGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1t
CmluZGV4IGRlMTA3MmEwMGEzN2NjZDhhMzYxYjc4MDdkYjYxYzIxNzAwYWJmZmIuLmRhMTExOTIw
MzQ3OGIxOTk2NmJkNWNiNGQyNzg0Yzg3ZTQ5MTNkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTIzLDcwICsyMywxMDMg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKLQot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCi0KLSNpbXBvcnQg
IkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQg
Ik1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW1wb3J0ICJXZWJBdWRpb0J1ZmZlckxpc3Qu
aCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyLmg+Ci0jaW1wb3J0IDxBVkZv
dW5kYXRpb24vQVZBc3NldFdyaXRlcklucHV0Lmg+Ci0jaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KLSNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0KLSNpbXBvcnQgPHBhbC9jZi9D
b3JlTWVkaWFTb2Z0TGluay5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRM
aW5rLmg+Ci0KLSN1bmRlZiBBVkVuY29kZXJCaXRSYXRlS2V5Ci0jZGVmaW5lIEFWRW5jb2RlckJp
dFJhdGVLZXkgZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZG
b3JtYXRJREtleQotI2RlZmluZSBBVkZvcm1hdElES2V5IGdldEFWRm9ybWF0SURLZXlXaXRoRmFs
bGJhY2soKQotI3VuZGVmIEFWTnVtYmVyT2ZDaGFubmVsc0tleQotI2RlZmluZSBBVk51bWJlck9m
Q2hhbm5lbHNLZXkgZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxiYWNrKCkKLSN1bmRl
ZiBBVlNhbXBsZVJhdGVLZXkKLSNkZWZpbmUgQVZTYW1wbGVSYXRlS2V5IGdldEFWU2FtcGxlUmF0
ZUtleVdpdGhGYWxsYmFjaygpCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisKKyNpbmNsdWRlICJBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaCIKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgi
CisjaW5jbHVkZSAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisjaW5jbHVkZSAiV2Vi
QXVkaW9CdWZmZXJMaXN0LmgiCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXIu
aD4KKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcklucHV0Lmg+CisjaW5jbHVk
ZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJfUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHBhbC9h
dmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Jsb2Nr
UHRyLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KKworI2luY2x1
ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHBhbC9jb2NvYS9BVkZv
dW5kYXRpb25Tb2Z0TGluay5oPgorCitAaW50ZXJmYWNlIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSA6IE5TT2JqZWN0IDxBVkFzc2V0V3JpdGVyRGVsZWdhdGU+IHsKKyAgICBXZWFrUHRyPFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBtX3dyaXRlcjsKK30KIAotbmFtZXNwYWNl
IFdlYkNvcmUgeworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV3JpdGVyOihXZWJDb3JlOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlciopd3JpdGVyOworLSAodm9pZCljbG9zZTsKIAotdXNpbmcg
bmFtZXNwYWNlIFBBTDsKK0BlbmQKIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVkZvcm1hdElES2V5
V2l0aEZhbGxiYWNrKCkKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUg
eworfTsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV3JpdGVyOihXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlciopd3JpdGVyCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZv
dW5kYXRpb25fQVZGb3JtYXRJREtleSgpKQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3Vu
ZGF0aW9uX0FWRm9ybWF0SURLZXkoKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKHNlbGYpCisgICAgICAgIHNlbGYtPm1fd3Jp
dGVyID0gbWFrZVdlYWtQdHIod3JpdGVyKTsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
LCAiRmFpbGVkIHRvIGxvYWQgQVZGb3JtYXRJREtleSIpOwotICAgIHJldHVybiBAIkFWRm9ybWF0
SURLZXkiOworICAgIHJldHVybiBzZWxmOwogfQogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFWTnVt
YmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCistICh2b2lkKWFzc2V0V3JpdGVyOihBVkFz
c2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRIZWFkZXJEYXRhOihO
U0RhdGEgKilmcmFnbWVudGVkSGVhZGVyRGF0YQogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZG
b3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgpKQotICAgICAgICByZXR1cm4gUEFMOjpn
ZXRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgpOworICAgIFVOVVNFRF9QQVJB
TShhc3NldFdyaXRlcik7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBpZiAo
YXV0byBzaXplID0gW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pIHsKKyAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZBc3NldFdy
aXRlckRlbGVnYXRlPihzZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRlc10p
LCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+
bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyLT5h
cHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJG
YWlsZWQgdG8gbG9hZCBBVk51bWJlck9mQ2hhbm5lbHNLZXkiKTsKLSAgICByZXR1cm4gQCJBVk51
bWJlck9mQ2hhbm5lbHNLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93cml0ZXIt
PmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0
YSBieXRlc10pLCBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3RoXSk7CiB9CiAKLXN0YXRpYyBO
U1N0cmluZyAqZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQpYXNzZXRX
cml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQcm9kdWNlRnJhZ21lbnRlZE1l
ZGlhRGF0YTooTlNEYXRhICopZnJhZ21lbnRlZE1lZGlhRGF0YSBmcmFnbWVudGVkTWVkaWFEYXRh
UmVwb3J0OihBVkZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQgKilmcmFnbWVudGVkTWVkaWFEYXRh
UmVwb3J0CiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRl
S2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRl
S2V5KCk7CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKKyAgICBVTlVTRURfUEFSQU0o
ZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCk7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewor
ICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSkgewor
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxX
ZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRNZWRpYURh
dGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3Rl
Y3RlZFNlbGYtPm1fd3JpdGVyKQorICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5t
X3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZTYW1wbGVSYXRlS2V5Iik7Ci0gICAgcmV0dXJuIEAi
QVZTYW1wbGVSYXRlS2V5IjsKKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLT5h
cHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZE1lZGlhRGF0YSBi
eXRlc10pLCBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5ndGhdKTsKIH0KIAotc3RhdGljIE5TU3Ry
aW5nICpnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQpY2xvc2UK
IHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5
KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0
ZUtleSgpOworICAgIG1fd3JpdGVyID0gbnVsbHB0cjsKK30KKworQGVuZAorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBQQUw7CiAKLSAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRW5jb2RlckJpdFJhdGVLZXkiKTsKLSAgICByZXR1
cm4gQCJBVkVuY29kZXJCaXRSYXRlS2V5IjsKK1JlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgYXV0byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGhhc0F1ZGlvLCB3aWR0aCAmJiBoZWlnaHQpKTsK
KyAgICBpZiAoIXdyaXRlci0+aW5pdGlhbGl6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gd3JpdGVyOwogfQogCiBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2
aWRlb1RyYWNrKQpAQCAtMTAwLDE3OSArMTMzLDI1MiBAQCBSZWZQdHI8TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoY29uc3QgTWVk
aQogICAgIHJldHVybiBjcmVhdGUoISFhdWRpb1RyYWNrLCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAot
UmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3ZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNh
bGxiYWNrKHZvaWQgKm1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBDTUJ1ZmZlclF1ZXVlVHJp
Z2dlclRva2VuKQogewotICAgIE5TU3RyaW5nICpkaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVh
dGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJ2aWRlb3MiKTsKLSAgICBOU1N0cmluZyAqZmlsZW5hbWUg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIi8lbGxkLm1wNCIsIENNQ2xvY2tHZXRUaW1l
KENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpLnZhbHVlXTsKLSAgICBOU1N0cmluZyAqcGF0aCA9
IFtkaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6ZmlsZW5hbWVdOworICAgIGF1dG8g
KndyaXRlciA9IHN0YXRpY19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKj4obWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIpOworICAgIHdyaXRlci0+cHJvY2Vzc05ld0NvbXByZXNzZWRW
aWRlb1NhbXBsZUJ1ZmZlcnMoKTsKK30KIAotICAgIE5TVVJMICpvdXRwdXRVUkwgPSBbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOnBhdGhdOwotICAgIFN0cmluZyBmaWxlUGF0aCA9IFtwYXRoIFVURjhT
dHJpbmddOwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZEF1ZGlv
T3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCAqbWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENN
QnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pCit7CisgICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nh
c3Q8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cik7CisgICAgd3JpdGVyLT5wcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygp
OworfQorCitNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbykKKyAgICA6IG1faGFzQXVkaW8oaGFz
QXVkaW8pCisgICAgLCBtX2hhc1ZpZGVvKGhhc1ZpZGVvKQoreworfQorCitNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKK3sKKyAgICBjbGVh
cigpOworfQorCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKCkK
K3sKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBhdXRvIGF2QXNzZXRXcml0ZXIgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhVUkw6b3V0
cHV0VVJMIGZpbGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKKyAgICBtX3dy
aXRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0
aEZpbGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKICAgICBpZiAoZXJyb3Ip
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUgQVZBc3Nl
dFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25nKWVycm9y
LmNvZGUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpLCBXVEZNb3ZlKGZpbGVQYXRoKSkpOwor
ICAgIG1fd3JpdGVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQVZBc3NldFdyaXRlckRlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aFdyaXRlcjogdGhpc10pOworICAgIFttX3dyaXRlci5nZXQoKSBzZXRE
ZWxlZ2F0ZTptX3dyaXRlckRlbGVnYXRlLmdldCgpXTsKIAotICAgIGlmIChoYXNBdWRpbyAmJiAh
d3JpdGVyLT5zZXRBdWRpb0lucHV0KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
aWYgKHdpZHRoICYmIGhlaWdodCkgewotICAgICAgICBpZiAoIXdyaXRlci0+c2V0VmlkZW9JbnB1
dCh3aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICht
X2hhc0F1ZGlvKSB7CisgICAgICAgIG1fYXVkaW9Db21wcmVzc29yID0gQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjpjcmVhdGUoY29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2ss
IHRoaXMpOworICAgICAgICBpZiAoIW1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHdyaXRlcik7CisgICAgaWYg
KG1faGFzVmlkZW8pIHsKKyAgICAgICAgbV92aWRlb0NvbXByZXNzb3IgPSBWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShrQ01WaWRlb0NvZGVjVHlwZV9IMjY0LCBjb21wcmVzc2Vk
VmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7CisgICAgICAgIGlmICghbV92aWRlb0Nv
bXByZXNzb3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOwogfQogCi1NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYgYXZBc3NldFdyaXRlciwgU3RyaW5n
JiYgZmlsZVBhdGgpCi0gICAgOiBtX3dyaXRlcihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpKQotICAg
ICwgbV9wYXRoKFdURk1vdmUoZmlsZVBhdGgpKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKQogeworICAgIEFT
U0VSVChtX2hhc1ZpZGVvKTsKKyAgICBpZiAoIW1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbikgewor
ICAgICAgICBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1h
dERlc2NyaXB0aW9uKG1fdmlkZW9Db21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVCdWZmZXIoKSk7
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyks
IHRoaXNdIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBpZiAobV9oYXNBdWRpbyAmJiAhbV9hdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc3RhcnRBc3Nl
dFdyaXRlcigpOworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0
aW5nKQorICAgICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMo
KTsKIH0KIAotTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcigpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29t
cHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpCiB7Ci0gICAgY2xlYXIoKTsKKyAgICBBU1NFUlQo
bV9oYXNBdWRpbyk7CisgICAgaWYgKCFtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24pIHsKKyAgICAg
ICAgbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNj
cmlwdGlvbihtX2F1ZGlvQ29tcHJlc3Nvci0+Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkpOworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlz
XSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgaWYgKG1faGFzVmlkZW8gJiYgIW1fdmlkZW9Gb3JtYXREZXNjcmlwdGlv
bikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHN0YXJ0QXNzZXRXcml0
ZXIoKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGluZykK
KyAgICAgICAgcmV0dXJuOworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CiB9
CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKCkKK3ZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIoKQogewotICAgIGlmIChtX3Zp
ZGVvSW5wdXQpIHsKLSAgICAgICAgbV92aWRlb0lucHV0LmNsZWFyKCk7Ci0gICAgICAgIGRpc3Bh
dGNoX3JlbGVhc2UobV92aWRlb1B1bGxRdWV1ZSk7CisgICAgaWYgKG1faGFzVmlkZW8pIHsKKyAg
ICAgICAgbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3Nl
dFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVv
IG91dHB1dFNldHRpbmdzOm5pbCBzb3VyY2VGb3JtYXRIaW50Om1fdmlkZW9Gb3JtYXREZXNjcmlw
dGlvbi5nZXQoKV0pOworICAgICAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgc2V0RXhwZWN0
c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07CisgICAgICAgIGlmICghW21fd3JpdGVyLmdldCgp
IGNhbkFkZElucHV0Om1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpXSkgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6c3RhcnRBc3NldFdyaXRlciBmYWlsZWQgY2FuQWRkSW5wdXQgZm9yIHZpZGVvIik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgW21fd3JpdGVyLmdldCgpIGFk
ZElucHV0Om1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpXTsKICAgICB9Ci0gICAgaWYgKG1f
YXVkaW9JbnB1dCkgewotICAgICAgICBtX2F1ZGlvSW5wdXQuY2xlYXIoKTsKLSAgICAgICAgZGlz
cGF0Y2hfcmVsZWFzZShtX2F1ZGlvUHVsbFF1ZXVlKTsKKworICAgIGlmIChtX2hhc0F1ZGlvKSB7
CisgICAgICAgIG1fYXVkaW9Bc3NldFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FW
QXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVB
dWRpbyBvdXRwdXRTZXR0aW5nczpuaWwgc291cmNlRm9ybWF0SGludDptX2F1ZGlvRm9ybWF0RGVz
Y3JpcHRpb24uZ2V0KCldKTsKKyAgICAgICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IHNldEV4
cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOworICAgICAgICBpZiAoIVttX3dyaXRlci5n
ZXQoKSBjYW5BZGRJbnB1dDptX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0pIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIGNhbkFkZElucHV0IGZvciBhdWRpbyIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFttX3dyaXRlci5nZXQo
KSBhZGRJbnB1dDptX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV07CiAgICAgfQotICAgIGlm
IChtX3dyaXRlcikKLSAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKIAotICAgIG1fZGF0YSA9IG51
bGxwdHI7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hE
YXRhQ29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRy
KTsKKyAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBzdGFydFdyaXRpbmddKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnN0YXJ0QXNzZXRXcml0ZXIgZmFpbGVkIHN0YXJ0V3JpdGluZyIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgW21fd3JpdGVyLmdldCgpIHN0YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpr
Q01UaW1lWmVyb107CisKKyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworCisg
ICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7CiB9CiAKLWJvb2wgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorYm9vbCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVm
ZmVyKCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9JbnB1dCk7Ci0gICAgCi0gICAgTlNEaWN0aW9u
YXJ5ICpjb21wcmVzc2lvblByb3BlcnRpZXMgPSBAewotICAgICAgICBBVlZpZGVvQXZlcmFnZUJp
dFJhdGVLZXkgOiBAKHdpZHRoICogaGVpZ2h0ICogMTIpLAotICAgICAgICBBVlZpZGVvRXhwZWN0
ZWRTb3VyY2VGcmFtZVJhdGVLZXkgOiBAKDMwKSwKLSAgICAgICAgQVZWaWRlb01heEtleUZyYW1l
SW50ZXJ2YWxLZXkgOiBAKDEyMCksCi0gICAgICAgIEFWVmlkZW9Qcm9maWxlTGV2ZWxLZXkgOiBB
VlZpZGVvUHJvZmlsZUxldmVsSDI2NE1haW5BdXRvTGV2ZWwKLSAgICB9OwotCi0gICAgTlNEaWN0
aW9uYXJ5ICp2aWRlb1NldHRpbmdzID0gQHsKLSAgICAgICAgQVZWaWRlb0NvZGVjS2V5OiBBVlZp
ZGVvQ29kZWNIMjY0LAotICAgICAgICBBVlZpZGVvV2lkdGhLZXk6IEAod2lkdGgpLAotICAgICAg
ICBBVlZpZGVvSGVpZ2h0S2V5OiBAKGhlaWdodCksCi0gICAgICAgIEFWVmlkZW9Db21wcmVzc2lv
blByb3BlcnRpZXNLZXk6IGNvbXByZXNzaW9uUHJvcGVydGllcwotICAgIH07Ci0gICAgCi0gICAg
bV92aWRlb0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3Rh
bmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBvdXRwdXRTZXR0aW5nczp2
aWRlb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7Ci0gICAgW21fdmlkZW9JbnB1dCBz
ZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKLSAgICAKLSAgICBpZiAoIVttX3dy
aXRlciBjYW5BZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgIG1fdmlkZW9J
bnB1dCA9IG51bGxwdHI7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
dGhlIHZpZGVvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRl
ciIpOworICAgIGlmICghbV9hdWRpb0NvbXByZXNzb3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgW21fd3JpdGVyIGFkZElucHV0Om1fdmlkZW9JbnB1dC5nZXQoKV07Ci0gICAg
bV92aWRlb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZVZpZGVvUmVj
b3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKworICAgIGlm
ICghW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBidWZmZXIgPSBtX2F1ZGlvQ29tcHJlc3Nv
ci0+dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCkgYXBwZW5k
U2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldEF1ZGlvSW5wdXQoKQorYm9vbCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKCkK
IHsKLSAgICBBU1NFUlQoIW1fYXVkaW9JbnB1dCk7Ci0KLSAgICBOU0RpY3Rpb25hcnkgKmF1ZGlv
U2V0dGluZ3MgPSBAewotICAgICAgICBBVkVuY29kZXJCaXRSYXRlS2V5IDogQCgyODAwMCksCi0g
ICAgICAgIEFWRm9ybWF0SURLZXkgOiBAKGtBdWRpb0Zvcm1hdE1QRUc0QUFDKSwKLSAgICAgICAg
QVZOdW1iZXJPZkNoYW5uZWxzS2V5IDogQCgxKSwKLSAgICAgICAgQVZTYW1wbGVSYXRlS2V5IDog
QCgyMjA1MCkKLSAgICB9OwotCi0gICAgbV9hdWRpb0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxv
Y0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5
cGVBdWRpbyBvdXRwdXRTZXR0aW5nczphdWRpb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmls
XSk7Ci0gICAgW21fYXVkaW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVl
XTsKLSAgICAKLSAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0
KCldKSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1dCA9IG51bGxwdHI7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIGF1ZGlvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRv
IGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOworICAgIGlmICghbV92aWRlb0NvbXByZXNzb3Ip
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgW21fd3JpdGVyIGFkZElucHV0Om1f
YXVkaW9JbnB1dC5nZXQoKV07Ci0gICAgbV9hdWRpb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgiV2ViQ29yZUF1ZGlvUmVjb3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFUQ0hf
UVVFVUVfU0VSSUFMKTsKKworICAgIGlmICghW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVh
ZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBi
dWZmZXIgPSBtX3ZpZGVvQ29tcHJlc3Nvci0+dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOworICAg
IGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2xhc3RWaWRlb1By
ZXNlbnRhdGlvblRpbWUgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChi
dWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lID0gQ01TYW1wbGVCdWZm
ZXJHZXREZWNvZGVUaW1lU3RhbXAoYnVmZmVyLmdldCgpKTsKKyAgICBtX2hhc0VuY29kZWRWaWRl
b1NhbXBsZXMgPSB0cnVlOworCisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFw
cGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVm
ZmVycygpCit7CisgICAgd2hpbGUgKGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigp
IHx8IGFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpKSB7IH07Cit9CisKK3N0YXRp
YyBpbmxpbmUgdm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFz
c2V0V3JpdGVySW5wdXQgKmFzc2V0V3JpdGVySW5wdXQsIENNVGltZSBwcmVzZW50YXRpb25UaW1l
U3RhbXAsIENNVGltZSBkZWNvZGluZ1RpbWVTdGFtcCkKK3sKKyAgICBDTVNhbXBsZVRpbWluZ0lu
Zm8gdGltaW5nSW5mbyA9IHsga0NNVGltZUludmFsaWQsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwg
ZGVjb2RpbmdUaW1lU3RhbXB9OworCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyID0gTlVM
TDsKKyAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgTlVMTCwgdHJ1ZSwgTlVMTCwgTlVMTCwgTlVMTCwgMCwgMSwgJnRpbWluZ0luZm8sIDAs
IE5VTEwsICZidWZmZXIpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZEVuZHNQ
cmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2VyIGZhaWxlZCBDTVNhbXBsZUJ1ZmZlckNyZWF0ZSB3
aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gc2FtcGxl
QnVmZmVyID0gYWRvcHRDRihidWZmZXIpOworCisgICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1
ZmZlci5nZXQoKSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1w
bGVEdXJhdGlvbiwga0NGQm9vbGVhblRydWUsIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3Bh
Z2F0ZSk7CisgICAgaWYgKCFbYXNzZXRXcml0ZXJJbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6c2Ft
cGxlQnVmZmVyLmdldCgpXSkKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRTYW1wbGVCdWZmZXIgdG8gd3JpdGVy
IGlucHV0IGZhaWxlZCIpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjph
cHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2hhc0VuY29kZWRWaWRl
b1NhbXBsZXMpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAoW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3Jl
TWVkaWFEYXRhXSkgeworICAgICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1h
cmtlcihtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9QcmVzZW50YXRp
b25UaW1lLCBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2NrID0gbWFrZUJs
b2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBp
ZiAod2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0
aW9uTWFya2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpLCBtX2xhc3RWaWRlb1ByZXNl
bnRhdGlvblRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsKKyAgICAgICAgICAgIFttX3Zp
ZGVvQXNzZXRXcml0ZXJJbnB1dCBtYXJrQXNGaW5pc2hlZF07CisgICAgICAgIH0KKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKyAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5w
dXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSB1c2luZ0Jsb2NrOmJsb2NrLmdldCgpXTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXBwZW5kQ29tcHJlc3NlZFNh
bXBsZUJ1ZmZlcnMoKTsKKyAgICBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRl
ZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmNsZWFyKCkKK3sKKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3Jp
dGVyLmNsZWFyKCk7CisKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKKwogc3RhdGljIGlubGluZSBS
ZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRp
bWVTdGFtcChDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5hbEJ1ZmZlcikKIHsKICAgICBDTVRpbWUg
c3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7CiAg
ICAgQ01JdGVtQ291bnQgY291bnQgPSAwOwogICAgIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGlt
aW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCAwLCBuaWwsICZjb3VudCk7Ci0gICAgCisKICAg
ICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3VudCk7CiAgICAgQ01TYW1w
bGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0
aW1lSW5mby5kYXRhKCksICZjb3VudCk7Ci0gICAgCi0gICAgZm9yIChDTUl0ZW1Db3VudCBpID0g
MDsgaSA8IGNvdW50OyBpKyspIHsKKworICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGNvdW50OyBp
KyspIHsKICAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1wID0ga0NNVGltZUludmFs
aWQ7CiAgICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IHN0YXJ0VGlt
ZTsKICAgICB9Ci0gICAgCisKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdCdWZmZXIgPSBudWxs
cHRyOwotICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGlt
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8u
ZGF0YSgpLCAmbmV3QnVmZmVyKTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYgKGF1dG8gZXJyb3Ig
PSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAmbmV3QnVmZmVyKSkg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyIENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICBy
ZXR1cm4gYWRvcHRDRihuZXdCdWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVC
dWZmZXIpCiB7Ci0gICAgQVNTRVJUKG1fdmlkZW9JbnB1dCk7Ci0gICAgaWYgKG1faXNTdG9wcGVk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpIHsKLSAg
ICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewotICAgICAgICAgICAgbV9pc1N0
b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVs
ZCIsIChsb25nKVttX3dyaXRlciBlcnJvcl0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dl
dFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICBtX2hhc1N0YXJ0ZWRX
cml0aW5nID0gdHJ1ZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
PiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fdmlkZW9JbnB1dCByZXF1ZXN0TWVk
aWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX3ZpZGVvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBk
byB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGlzUmVhZHlGb3JNb3JlTWVk
aWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
dmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX3ZpZGVvQnVmZmVyUG9vbC50YWtlRmlyc3Qo
KTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIVttX3ZpZGVvSW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV0pCi0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0g
ICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgW21fdmlkZW9JbnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAg
ICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH1dOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8g
YnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0
YW1wKHNhbXBsZUJ1ZmZlcik7Ci0gICAgaWYgKCFidWZmZXJXaXRoQ3VycmVudFRpbWUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOwot
ICAgIG1fdmlkZW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcldpdGhDdXJyZW50VGlt
ZSkpOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHNldCB0aGUgdGltZXN0YW1wcyBpZiB0
aGV5IGFyZSBhbHJlYWR5IHNldC4KKyAgICBpZiAoYXV0byBidWZmZXJXaXRoQ3VycmVudFRpbWUg
PSBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSkKKyAg
ICAgICAgbV92aWRlb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihidWZmZXJXaXRoQ3VycmVu
dFRpbWUuZ2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbnN0IEF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQpAQCAtMjgwLDY4ICszODYsMzkgQEAgc3RhdGljIGlu
bGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbihjb24KICAgICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25z
dCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2Ny
aXB0aW9uKCkuZGVzY3JpcHRpb24pOwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0
ID0gbnVsbHB0cjsKICAgICBhdXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJhc2ljRGVzY3JpcHRpb24sIDAsIE5VTEwsIDAsIE5V
TEwsIE5VTEwsICZmb3JtYXQpOwotICAgIGlmIChlcnJvcikKKyAgICBpZiAoZXJyb3IpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICByZXR1cm4gYWRvcHRD
Rihmb3JtYXQpOwogfQogCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJl
Zj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZm9ybWF0LCBzaXplX3Qgc2FtcGxlQ291bnQpCitzdGF0aWMgaW5saW5l
IFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIoY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgc2l6ZV90IHNhbXBsZUNv
dW50KQogewotICAgIENNVGltZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0
SG9zdFRpbWVDbG9jaygpKTsKLSAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBu
dWxscHRyOwotICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBh
Y2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVMTCwg
TlVMTCwgZm9ybWF0LCBzYW1wbGVDb3VudCwgc3RhcnRUaW1lLCBOVUxMLCAmc2FtcGxlQnVmZmVy
KTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBh
ZG9wdENGKHNhbXBsZUJ1ZmZlcik7Ci19Ci0KLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRh
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgV1RGOjpN
ZWRpYVRpbWUmLCBzaXplX3Qgc2FtcGxlQ291bnQpCi17Ci0gICAgQVNTRVJUKG1fYXVkaW9JbnB1
dCk7Ci0gICAgaWYgKCghbV9oYXNTdGFydGVkV3JpdGluZyAmJiBtX3ZpZGVvSW5wdXQpIHx8IG1f
aXNTdG9wcGVkKQotICAgICAgICByZXR1cm47CiAgICAgYXV0byBmb3JtYXQgPSBjcmVhdGVBdWRp
b0Zvcm1hdERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKICAgICBpZiAoIWZvcm1hdCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChtX2lzRmlyc3RBdWRpb1NhbXBsZSkgewotICAgICAgICBpZiAo
IW1fdmlkZW9JbnB1dCkgewotICAgICAgICAgICAgLy8gYXVkaW8tb25seSByZWNvcmRpbmcuCi0g
ICAgICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7Ci0gICAgICAgICAgICAg
ICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6Q01D
bG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICAgICAgbV9o
YXNTdGFydGVkV3JpdGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgbV9pc0ZpcnN0QXVk
aW9TYW1wbGUgPSBmYWxzZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fYXVkaW9JbnB1dCByZXF1ZXN0
TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX2F1ZGlvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV9hdWRpb0lucHV0IGlzUmVhZHlGb3JNb3Jl
TWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7Ci0gICAgICAgICAgICAgICAgaWYg
KG1fYXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyUG9vbC50YWtlRmly
c3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAgICAgICAg
ICAgICBbbV9hdWRpb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwotICAg
ICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYg
bV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgW21fYXVkaW9J
bnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nQXVk
aW9TZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9
IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRo
UGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxM
LCBOVUxMLCBmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50LCB0b0NNVGltZSh0aW1lKSwgTlVMTCwg
JnNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgY3JlYXRlQXVkaW9T
YW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CisgICAgYXV0byBidWZmZXIgPSBhZG9w
dENGKHNhbXBsZUJ1ZmZlcik7CiAKLSAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlv
U2FtcGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhmb3JtYXQuZ2V0KCksIHNhbXBsZUNv
dW50KTsKLSAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8g
ZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0KHNh
bXBsZUJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVs
dCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkpOwotICAgIGlm
IChlcnJvcikKLSAgICAgICAgcmV0dXJuOworICAgIGVycm9yID0gQ01TYW1wbGVCdWZmZXJTZXRE
YXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdChidWZmZXIuZ2V0KCksIGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlz
dD4oZGF0YSkubGlzdCgpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTVNhbXBsZUJ1
ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0IGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsK
K30KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb0xvY2spOwotICAgIG1fYXVk
aW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKHNhbXBsZUJ1ZmZlcikpOwordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYgdGltZSwgc2l6ZV90IHNhbXBsZUNvdW50KQorewor
ICAgIGlmIChhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGRhdGEs
IGRlc2NyaXB0aW9uLCB0aW1lLCBzYW1wbGVDb3VudCkpCisgICAgICAgIG1fYXVkaW9Db21wcmVz
c29yLT5hZGRTYW1wbGVCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKTsKIH0KIAogdm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCkBAIC0zNTAsMzUgKzQyNyw0
MCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworCisgICAgaWYgKG1fdmlk
ZW9Db21wcmVzc29yKQorICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+ZmluaXNoKCk7CisgICAg
aWYgKG1fYXVkaW9Db21wcmVzc29yKQorICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nvci0+ZmluaXNo
KCk7CisKICAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCiAgICAgICAgIHJldHVybjsKICAg
ICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZBc3NldFdyaXRlclN0YXR1c1dyaXRpbmcp
OwotICAgIGlmIChtX3ZpZGVvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2Vt
YXBob3JlLndhaXQoKTsKLQotICAgIGlmIChtX2F1ZGlvSW5wdXQpCi0gICAgICAgIG1fZmluaXNo
V3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKIAogICAgIG1faXNTdG9wcGluZyA9IHRydWU7
Ci0gICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6W3RoaXMs
IHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3ZlKHdlYWtQdHIpLCBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQotICAgICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAobV9mZXRj
aERhdGFDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgICAgICBtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgIGZsdXNoQ29tcHJlc3NlZFNh
bXBsZUJ1ZmZlcnMoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0
aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IHRydWU7Ci0g
ICAgICAgICAgICBjbGVhcigpOwotICAgICAgICB9KTsKLSAgICAgICAgbV9maW5pc2hXcml0aW5n
U2VtYXBob3JlLnNpZ25hbCgpOwotICAgIH1dOwotICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9y
ZS53YWl0KCk7CisgICAgICAgIFttX3dyaXRlciBmbHVzaF07CisgICAgICAgIFttX3dyaXRlciBm
aW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAo
bV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IFdURk1vdmUobV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgbV9mZXRjaERh
dGFDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
bV9oYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNsZWFyKCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfV07CisgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMzkyLDYgKzQ3NCwy
NCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoYnVmZmVyKSk7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVu
ZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKCFtX2RhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9
CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAgICAgICAgbV9kYXRh
ID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZGF0YS0+
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41ZTQyODkzNTIzNjBjYjE3ODAwZGQwNmU2YjViMTUzODc5NjJjNzllCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRB
VElPTikKKworI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbmNsdWRlIDxWaWRl
b1Rvb2xib3gvVlRFcnJvcnMuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZm
ZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRDb21wcmVzc2lv
blNlc3Npb24gKlZUQ29tcHJlc3Npb25TZXNzaW9uUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I+IGNyZWF0ZShDTVZpZGVvQ29kZWNUeXBlLCBDTUJ1ZmZlclF1
ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7CisgICAgflZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvcigpOworCisgICAgdm9pZCBmaW5pc2goKTsKKyAgICB2b2lkIGFk
ZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CisgICAgQ01TYW1wbGVCdWZmZXJSZWYg
Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCk7CisgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVm
PiB0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKENNVmlkZW9Db2RlY1R5cGUpOworCisgICAgYm9vbCBp
bml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2Jq
ZWN0KTsKKworICAgIHZvaWQgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7
CisgICAgYm9vbCBpbml0Q29tcHJlc3Npb25TZXNzaW9uKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlv
blJlZik7CisKKyAgICBzdGF0aWMgdm9pZCB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAq
cmVmQ29uLCB2b2lkKiwgT1NTdGF0dXMsIFZURW5jb2RlSW5mb0ZsYWdzLCBDTVNhbXBsZUJ1ZmZl
clJlZik7CisKKyAgICBkaXNwYXRjaF9xdWV1ZV90IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKKyAg
ICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBS
ZXRhaW5QdHI8VlRDb21wcmVzc2lvblNlc3Npb25SZWY+IG1fdnRTZXNzaW9uOworCisgICAgYm9v
bCBtX2lzRW5jb2RpbmcgeyBmYWxzZSB9OworCisgICAgQ01WaWRlb0NvZGVjVHlwZSBtX291dHB1
dENvZGVjVHlwZTsKKyAgICBmbG9hdCBtX21heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiB7IDIu
MCB9OworICAgIHVuc2lnbmVkIG1fZXhwZWN0ZWRGcmFtZVJhdGUgeyAzMCB9OworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjA4ZmU0MzI5NWVmNTJhNjc5MGZmMWRlY2FjYTZmMzBkOWJiYmFmYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0wLDAgKzEsMTY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1l
ZGlhLmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFZpZGVv
VG9vbGJveC9WVENvbXByZXNzaW9uU2Vzc2lvbi5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5n
Lmg+CisKKyNpbXBvcnQgPHBhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5oPgorCit1c2luZyBu
YW1lc3BhY2UgUEFMOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6dW5pcXVlX3B0cjxW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
Y3JlYXRlKENNVmlkZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlLCBDTUJ1ZmZlclF1ZXVlVHJp
Z2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBhdXRv
IGNvbXByZXNzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
PihuZXcgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKG91dHB1dENvZGVjVHlwZSkpOworICAg
IGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29tcHJlc3NvcjsKK30KKworVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01W
aWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUpCisgICAgOiBtX3NlcmlhbERpc3BhdGNoUXVl
dWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICAsIG1fb3V0cHV0Q29kZWNU
eXBlIHsgb3V0cHV0Q29kZWNUeXBlIH0KK3sKK30KKworVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKK3sKKyAgICBpZiAobV9zZXJpYWxE
aXNwYXRjaFF1ZXVlKQorICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VyaWFsRGlzcGF0Y2hR
dWV1ZSk7Cit9CisKK2Jvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXpl
KENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2Jq
ZWN0KQoreworICAgIENNQnVmZmVyUXVldWVSZWYgb3V0cHV0QnVmZmVyUXVldWU7CisgICAgaWYg
KGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAs
IENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJm91
dHB1dEJ1ZmZlclF1ZXVlKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB1bmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBx
dWV1ZSAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX291
dHB1dEJ1ZmZlclF1ZXVlID0gb3V0cHV0QnVmZmVyUXVldWU7CisgICAgQ01CdWZmZXJRdWV1ZUlu
c3RhbGxUcmlnZ2VyKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGNhbGxiYWNrLCBjYWxsYmFj
a09iamVjdCwga0NNQnVmZmVyUXVldWVUcmlnZ2VyX1doZW5EYXRhQmVjb21lc1JlYWR5LCBrQ01U
aW1lWmVybywgTlVMTCk7CisKKyAgICBtX2lzRW5jb2RpbmcgPSB0cnVlOworICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKK3sK
KyAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgYXV0
byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMobV92dFNlc3Npb24u
Z2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJy
b3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Np
b25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICAg
ICAgZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVl
LmdldCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFt
LCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRh
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgICAgIG1faXNFbmNvZGluZyA9IGZhbHNl
OworICAgIH0pOworfQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dmlkZW9D
b21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9TU3RhdHVzIHN0YXR1cywg
VlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRihzdGF0dXMsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayBzdGF0dXMgaXMgJWQiLCBzdGF0dXMp
OworICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCisgICAgICAgIHJldHVybjsKKworICAgIFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciAqY29tcHJlc3NvciA9IHN0YXRpY19jYXN0PFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcio+KHJlZkNvbik7CisKKyAgICBhdXRvIGVycm9yID0gQ01CdWZm
ZXJRdWV1ZUVucXVldWUoY29tcHJlc3Nvci0+bV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgYnVm
ZmVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7Cit9CisKK2Jvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0
Q29tcHJlc3Npb25TZXNzaW9uKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNj
cmlwdGlvbikKK3sKKyAgICBDTVZpZGVvRGltZW5zaW9ucyBkaW1lbnNpb25zID0gQ01WaWRlb0Zv
cm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlvbik7CisjaWYgUExB
VEZPUk0oSU9TKQorICAgIE5TRGljdGlvbmFyeSAqZW5jb2RlclNwZWNpZmljYXRpb25zID0gbmls
OworI2Vsc2UKKyAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJTcGVjaWZpY2F0aW9ucyA9IEB7KF9f
YnJpZGdlIE5TU3RyaW5nICopa1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVIYXJk
d2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyOkBZRVN9OworI2VuZGlmCisKKyAgICBWVENvbXBy
ZXNzaW9uU2Vzc2lvblJlZiB2dFNlc3Npb247CisgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Np
b25TZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRpbWVuc2lvbnMud2lkdGgsIGRp
bWVuc2lvbnMuaGVpZ2h0LCBtX291dHB1dENvZGVjVHlwZSwgKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZillbmNvZGVyU3BlY2lmaWNhdGlvbnMsIE5VTEwsIE5VTEwsIHZpZGVvQ29tcHJlc3Npb25D
YWxsYmFjaywgdGhpcywgJnZ0U2Vzc2lvbik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICByZXR1cm4gTk87CisgICAgfQorICAgIG1fdnRTZXNzaW9uID0gYWRvcHRDRih2dFNlc3Np
b24pOworCisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQo
KSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwga0NGQm9vbGVhblRydWUpOwor
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3Bl
cnR5S2V5X1JlYWxUaW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgIGVycm9yID0gVlRT
ZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVy
dHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKUAo
bV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24pKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
RihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNz
aW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVy
dmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgZXJyb3IgPSBWVFNlc3Np
b25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1fZXhwZWN0ZWRGcmFt
ZVJhdGUpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJl
c3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKworICAgIC8vIEZJWE1FOiBTZXQgdmlkZW8gY29tcHJlc3Npb24gcmF0ZS4KKyAgICBlcnJv
ciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzKG1fdnRTZXNzaW9u
LmdldCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9F
bmNvZGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICByZXR1cm4gWUVTOwor
fQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZl
cihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgaWYgKCFtX3Z0U2Vzc2lvbikgewor
ICAgICAgICBpZiAoIWluaXRDb21wcmVzc2lvblNlc3Npb24oQ01TYW1wbGVCdWZmZXJHZXRGb3Jt
YXREZXNjcmlwdGlvbihidWZmZXIpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBhdXRvIGltYWdlQnVmZmVyID0gQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihidWZmZXIp
OworICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVz
ZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKKyAgICBhdXRvIGR1cmF0aW9uID0gQ01TYW1wbGVC
dWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgIGF1dG8gZXJyb3IgPSBWVENvbXByZXNzaW9u
U2Vzc2lvbkVuY29kZUZyYW1lKG1fdnRTZXNzaW9uLmdldCgpLCBpbWFnZUJ1ZmZlciwgcHJlc2Vu
dGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgTlVMTCwgdGhpcywgTlVMTCk7CisgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVC
dWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9z
ZXJpYWxEaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBpZiAoIW1faXNFbmNvZGluZykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyKGJ1ZmZlcik7Cisg
ICAgfSk7Cit9CisKK0NNU2FtcGxlQnVmZmVyUmVmIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gKENNU2FtcGxlQnVmZmVy
UmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0SGVhZChtX291dHB1dEJ1ZmZl
clF1ZXVlLmdldCgpKSkpOworfQorCitSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpCit7CisgICAg
cmV0dXJuIGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1
ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsK
K30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMzFmYjA5NGE2ZWMyZGQwNjViMTM5NWEw
OWRhMjQ1ZTRmNWU4OTY3Ni4uNjg1Y2JmMTE4NjI2MjUxOWM4YTA5MjMxNDE5NzUzY2FiNjZlYmI3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcApAQCAtMjI4LDYgKzIyOCw3IEBAIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyCiAgICAgcmV0dXJuICptX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiB9CiAKKyNp
ZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2Vy
JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYVJlY29yZGVyTWFuYWdlcigpCiB7CiAg
ICAgaWYgKCFtX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyKQpAQCAtMjM1LDYgKzIzNiw3IEBA
IFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpt
ZWRpYVJlY29yZGVyTWFuYWdlcigpCiAKICAgICByZXR1cm4gKm1fcmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXI7CiB9CisjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6YXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcigpCkBAIC0yNTMsNyArMjU1LDcgQEAgUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c2FtcGxlQnVmZmVyRGkKICAgICByZXR1cm4gKm1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlcjsKIH0KICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShM
SUJXRUJSVEMpCiBMaWJXZWJSVENDb2RlY3NQcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6bGliV2ViUlRDQ29kZWNzUHJveHkoKQpAQCAtMzcxLDYgKzM3Myw3IEBAIGJvb2wgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDCiAgICAgICAgIHVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoKS5kaWRS
ZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVJlY29yZGVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIG1l
ZGlhUmVjb3JkZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zNzksNiArMzgyLDcg
QEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEMKICAgICAgICAgbWVkaWFSZWNvcmRlck1hbmFnZXIo
KS5kaWRSZWNlaXZlUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyNlbmRpZiAvLyBIQVZFKEFWQVNTRVRX
UklURVJERUxFR0FURSkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBh
dWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vz
cyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKQEAgLTM5Niw4ICs0MDAsOCBAQCBib29sIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQwogICAgICAgICBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkuZGlk
UmVjZWl2ZUxheWVyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGxpYldlYlJUQ0NvZGVjc1Byb3h5KCkuZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDFkOWYzYTE2Njg5Nzk3ODk3MmQ5YzYxMThkZTI5ODVhZGU2MzZkNjAuLmVkNzE4YjQ4
OWY3OTMyYThhNTQ3OGMwYzY1MzU4YmE1Y2I1MjU0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTE2LDcgKzEx
Niw5IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5JiB1c2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5KCk7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAg
ICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXImIG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCk7Cisj
ZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyJiBhdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyKCk7CiAgICAg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlcigpOwpAQCAtMTY4LDcgKzE3MCw5IEBAIHByaXZhdGU6CiAgICAgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHk+IG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKKyNpZiBIQVZFKEFWQVNTRVRXUklU
RVJERUxFR0FURSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXI+IG1fcmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CisjZW5kaWYKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlcj4gbV9hdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCBjMmY1Mjg1MTlm
NTIyM2FhMGYwMDJjNDUwMDEyNTY2MjgyZTE4MTI0Li5mODhhMjM5NDRiYzAxNzkwZjVhNjc1NWI2
ZDNlZWVlODhhYTJmYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyLmgiCiAKLSNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVk
ZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1
ZmZlci5oPgpAQCAtMTM1LDQgKzEzNSw0IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6c3Rv
cFJlY29yZGluZygpCiAKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFT
U0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IGZmNWE4Mjk4NGZiMzk2NDFlZDFlNTYx
NTQ4OThmOTUyNmM5YmQ1MmEuLmE4M2RhMzA1NTJlYjQxZWY5NTk0NGRiM2FhNTA0ZmZjYTNmNjgz
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1
ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCkBAIC04Miw0ICs4Miw0IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVz
c2FnZXMuaW4KaW5kZXggNTRiYTY0ZDU2ZmJlYTMwZmNiYjM5NmRhZDVlYTNmYzMwYzk5NWRlZS4u
Y2UzMmI3MDRlN2VjOGM0NzdiZTA1MWUyMGQ3ZDI3YWYwYzRmODIxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
SEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUmVj
b3JkZXIgTm90UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAppbmRleCAwYjg0Yjg1MTliYTZmNTA2ZTE4NzY1ZmY2
ZDJlNGQwY2MyNmI2MzZjLi43ZjRjNjZkNmEyMzYyZTUyZTZhMDc2NGU3ODlmNmQyMGU5MTY3MmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgiCiAK
LSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXIuaAppbmRleCA1NDcxYmJkNDg0ZGQ5YjNkMGM4ZWUzZGQ2MTFjMDVlOTBkMDM2
YzdjLi5hYjgwMWJjMTE0YzQ5MjNlYTlkNzkwZjkyM2M1MmRmNDlhYTExZTdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyTWFuYWdlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1
ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAzODdh
NDEzNjFjZGJkOWI3ZWFlMmMzMzczNjUyYTk4ZjQ5MzRlMTc0Li5jNTE4NDEwY2I0OWZhZGE2ODhk
Mzc3ZDFkN2EwNmNkZTNiYWM3OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIu
bWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUo
QVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAgICBDcmVhdGVSZWNvcmRlcihXZWJLaXQ6Ok1lZGlh
UmVjb3JkZXJJZGVudGlmaWVyIGlkLCBib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWln
aHQpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBjcmVhdGlvbkVycm9yKSBB
c3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAppbmRleCBh
Y2U2ZDVhM2ZmNjlhYmVhYmRhMWQ4MjZlYTQ5OTQ1MDE3MTRjOTc4Li4zMGJiYzc5YjM1NjM1OGJi
Y2Y4ODg2OTJmM2ZlZDQxMzEzNzc3NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJN
ZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXgg
MzExYzE2MWU0OGMwYzg2ZGY2YWFkNDcwM2EzODU2OTQ1ZmExMzMyNS4uZjVhYzMxODFmNTM5MGJl
ZWQyZjQwYzFmMWMyODBhZDQ0NDJjZDkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAt
MjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRF
UkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVBy
b2Nlc3NDb25uZWN0aW9uLmgiCkBAIC0xMzUsNCArMTM1LDQgQEAgdm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZTo6c3RvcFJlY29yZGluZygpCiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYg
Ly8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUu
aAppbmRleCA2ZmYyOTQwNzk5NDdiNmFjOTY2YmU5MGFlNmE4M2M0MDExNDgwNTU3Li4zZDdiZWUy
OTY0M2M5OWI1MTBlN2I4YTRlMDU0MGI3ZWUyMDdhNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgpAQCAt
NzYsNSArNzYsNSBAQCBwcml2YXRlOgogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2VuZGlmIC8v
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3Zp
ZGVyLmNwcAppbmRleCA2Y2IzMjFlZDI1ODk0ODllOWRiMGNiYmQ1YjU1OWIxZTU2YTAzNDlkLi41
ZjUwNzVmMTYzN2I0NTlkZjU1YTdkMjUzNGQ1YjdiZjNiNTk0MDBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cm92aWRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZT4gTWVkaWFSZWNv
cmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZh
dGUmIHN0cmVhbSkKIHsKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBpZiAobV91c2VHUFVQ
cm9jZXNzKQogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZT4o
c3RyZWFtKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM5MTdjMmI2NTFmY2VkMjYxMjM1ZGUxNTg1MzIyNWY5
MDRhZmEzYzkuLmE5YzdjZjY0Y2FlMTcwOWU5ZWRlMjBhZDZmN2E2NDJlYjQ4ZWE1NGUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNi0wNSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGlt
cGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDY1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24u
CisKKyAgICAgICAgRGlzYWJsZSB0ZXN0cyBvbiBhbGwgcGxhdGZvcm1zIGV4Y2VwdCB0aGUgb25l
cyBzdXBwb3J0aW5nIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZS4KKworICAgICAgICAqIFRlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
LUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sOgorICAgICAgICBS
ZW1vdmUgd2ViIGF1ZGlvIGdlbmVyYXRpb24gc2luY2UgdGhlcmUgc2VlbXMgdG8gYmUgc29tZSB1
bnN0YWJpbGl0eSBpbiB3ZWIgYXVkaW8gLT4gc3RyZWFtIC0+IG1lZGlhIHJlY29yZGVyLgorICAg
ICAgICB3aGljaCBzaG91bGQgYmUgZml4ZWQgYXMgZm9sbG93LXVwIHNwZWNpZmljIHBhdGNoZXMu
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIEVuYWJs
ZSBydW5uaW5nIHRlc3RzLgorCiAyMDIwLTA2LTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbWVkaWEtc291cmNlIHN0YXRzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCAxYjMxOTYwOWQzNTI0Njg4NDhlNmJhMzhjOGVmNjQ2YzljYTAz
ODQzLi45NDdiZmFmOGMxZjQ2MGJiNzdiMzE4NTQ1ZTIxOGQyZjkzMTEwNGY3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTMzMDMsNyArMzMwMywxMCBAQCB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90
ZXh0dXJlcy90ZXh0dXJlLW5wb3QtdmlkZW8uaHRtbCBbIFNraXAgXQogd2ViZ2wvMS4wLjMvY29u
Zm9ybWFuY2UvY2FudmFzL3JhcGlkLXJlc2l6aW5nLmh0bWwgWyBTa2lwIF0KIHdlYmdsLzEuMC4z
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZHJhdy1idWZmZXJzLmh0bWwgWyBTa2lwIF0K
IAotd2Via2l0Lm9yZy9iLzE5NzY3MyBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVv
dXQgXQorIyBOb3Qgc3VwcG9ydGVkIGJ5IGRlZmF1bHQKK2h0dHAvd3B0L21lZGlhcmVjb3JkZXIg
WyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJl
Y29yZCBbIFNraXAgXQorZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRt
bCBbIFNraXAgXQogCiAjIFdlYkdMIDIgQ29uZm9ybWFuY2UgU3VpdGUgcnVsZXMgZm9yIHJlZ3Vs
YXIgYm90cyBwb3N0IEFOR0xFIGJhY2tlbmQgYWRvcHRpb24uCiAjIERFUVAgaXMgc2tpcHBlZCBv
biB0aGUgbWFpbiBmbGVldCBvZiBib3RzIGJlY2F1c2Ugb2YgdGhlIGxvbmcgcnVuIHRpbWUuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8t
ZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwKaW5kZXggMzMzMDZkZTc5NDdiYmI5MjU3Mzk0
YzNiYTE5NjIwMWIwNTg0Nzg4Yi4uODgwMTQ4NjU3ZTI1ZGRlMzNjYjEwOTM0NmQ2Y2JlYWFiN2Y5
Y2VmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1h
dWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbApAQCAtNTYsMTcgKzU2LDcg
QEAKICAgICB9CiAKICAgICBhc3luY190ZXN0KHQgPT4gewotICAgICAgICBjb25zdCBhYyA9IG5l
dyBBdWRpb0NvbnRleHQoKTsKLSAgICAgICAgY29uc3Qgb3NjID0gYWMuY3JlYXRlT3NjaWxsYXRv
cigpOwotICAgICAgICBjb25zdCBkZXN0ID0gYWMuY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlv
bigpOwotICAgICAgICBjb25zdCBhdWRpbyA9IGRlc3Quc3RyZWFtOwotICAgICAgICBvc2MuY29u
bmVjdChkZXN0KTsKLQogICAgICAgICBjb25zdCB2aWRlbyA9IGNyZWF0ZVZpZGVvU3RyZWFtKCk7
Ci0gICAgICAgIGFzc2VydF9lcXVhbHModmlkZW8uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgsIDAs
ICJ2aWRlbyBtZWRpYXN0cmVhbSBzdGFydHMgd2l0aCBubyBhdWRpbyB0cmFjayIpOwotICAgICAg
ICBhc3NlcnRfZXF1YWxzKGF1ZGlvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAxLCAiYXVkaW8g
bWVkaWFzdHJlYW0gc3RhcnRzIHdpdGggb25lIGF1ZGlvIHRyYWNrIik7Ci0gICAgICAgIHZpZGVv
LmFkZFRyYWNrKGF1ZGlvLmdldEF1ZGlvVHJhY2tzKClbMF0pOwotICAgICAgICBhc3NlcnRfZXF1
YWxzKHZpZGVvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAxLCAidmlkZW8gbWVkaWFzdHJlYW0g
c3RhcnRzIHdpdGggb25lIGF1ZGlvIHRyYWNrIik7CiAgICAgICAgIGNvbnN0IHJlY29yZGVyID0g
bmV3IE1lZGlhUmVjb3JkZXIodmlkZW8pOwogICAgICAgICBsZXQgbW9kZSA9IDA7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYjQ0ZDgzMjQwMDRmZDE5
NDJjYzA2MDQyYTFmOTlkNWRjYzBhNDJjNi4uNTE2YjUzNjM2NDI4MWJmZjkwZjY5MTU5NGY3M2M2
Y2FhMDY4YWZhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTE3MTEsNiArMTcxMSwxMCBAQCB3ZWJraXQub3JnL2IvMjEyMTcyIFsgQ2F0YWxpbmEgXSBm
YXN0L3RleHQvZm9udC1jb2xsZWN0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdQogWyBDYXRhbGlu
YSsgXSBmYXN0L3RleHQvZGVzaWduLXN5c3RlbS11aS0xNS5odG1sIFsgUGFzcyBdCiBbIENhdGFs
aW5hKyBdIGZhc3QvdGV4dC9kZXNpZ24tc3lzdGVtLXVpLTE2Lmh0bWwgWyBQYXNzIF0KIAorWyBD
YXRhbGluYSsgXSBodHRwL3dwdC9tZWRpYXJlY29yZGVyIFsgUGFzcyBGYWlsdXJlIF0gCitbIENh
dGFsaW5hKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJl
Y29yZCBbIFBhc3MgRmFpbHVyZSBdCitbIENhdGFsaW5hKyBdIGZhc3QvaGlzdG9yeS9wYWdlLWNh
Y2hlLW1lZGlhLXJlY29yZGVyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQorCiB3ZWJraXQub3JnL2Iv
MjAwMTI4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC90aGUtdmlkZW8tZWxlbWVudC92aWRlb190aW1ldXBkYXRlX29uX3NlZWsu
aHRtbCBbIFRpbWVvdXQgUGFzcyBdCiAKICMgcmRhcjovLzU1NDA1ODUxIChbIG1hY09TIF0gTGF5
b3V0IHRlc3RzIHdlYmdwdS8qLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYXJlIGZsYWt5IGZhaWx1cmVz
LiAoMjAxODI3KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401159</attachid>
            <date>2020-06-05 09:14:09 -0700</date>
            <delta_ts>2020-06-07 23:21:59 -0700</delta_ts>
            <desc>Build fix</desc>
            <filename>bug-206582-20200605181407.patch</filename>
            <type>text/plain</type>
            <size>1739</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjcxMTlhMjZmZjA5NDFi
OGI1Y2RmNTBiNmY5NWIxMWEzYTJjMzI0Ny4uMWY4NzU2NzE4OTNhNTQwMjkzNTA5OTU2YzE0MjMx
OWM4OWE3MzM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA2LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTg5ODUzNjg+CisKKyAgICAgICAgVW5yZXZpZXdlZC4KKworICAgICAgICAq
IHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpp
bml0aWFsaXplKToKKyAgICAgICAgQWxsb3cgZGVwcmVjYXRpb24gd2FybmluZ3MuCisKIDIwMjAt
MDYtMDUgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2Nv
YV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1t
CmluZGV4IGRhMTExOTIwMzQ3OGIxOTk2NmJkNWNiNGQyNzg0Yzg3ZTQ5MTNkMjQuLmQ1MGNmOTc4
YzExOTE2OWEwMjNiZjljMTA2YThkMDVjY2FjYjM5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTE1OSw3ICsxNTksOSBA
QCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
KCkKIGJvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmluaXRpYWxpemUoKQogewogICAg
IE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiAgICAgbV93cml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklu
c3RhbmNlKCkgaW5pdFdpdGhGaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7
CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgaWYgKGVycm9yKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRX
cml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAobG9uZyllcnJvci5j
b2RlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401178</attachid>
            <date>2020-06-05 11:50:27 -0700</date>
            <delta_ts>2020-06-05 13:44:43 -0700</delta_ts>
            <desc>A follow-up patch to fix a build failure</desc>
            <filename>bug-206582-20200605115026.patch</filename>
            <type>text/plain</type>
            <size>1744</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGViNDViM2NlNDRhZjMz
OGU1N2ViODljYmM1YzI3MGUxYTM0ZmFhOC4uYzdmNjAxZGNiOGM5YzJlZmZmNWExMDFiMGQ4ZmU4
ZWQ2NGY5YzI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA2LTA1ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3Nl
dFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGZvbGxvdy11cCBwYXRjaCB0byBm
aXggYSBidWlsZCBmYWlsdXJlLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcpOgorCiAyMDIwLTA2
LTA1ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBB
Y2Nlc3NpYmlsaXR5IGlzb2xhdGVkIHRyZWUgbW9kZTogY3Jhc2hlcyB3aGVuIG5hdmlnYXRpbmcg
d2Vic2l0ZXMsIGNvbS5hcHBsZS5BcHBLaXQ6IENvbnZlcnRPdXRnb2luZ1ZhbHVlRm9yQXR0cmli
dXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCmluZGV4IGQ1MGNmOTc4YzExOTE2OWEwMjNiZjljMTA2YThkMDVjY2FjYjM5ZWIuLjc0
YWQ0MzhjYzVhNGRlMTE1MzYxZTVjYjg0ZmEzMmZkMjI0NGYyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTQ0NSw3ICs0
NDUsOSBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbbV93cml0ZXIgZmx1
c2hdOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAg
W21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtU
aGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCg==
</data>
<flag name="review"
          id="416579"
          type_id="1"
          status="+"
          setter="youennf"
    />
    <flag name="commit-queue"
          id="416580"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401312</attachid>
            <date>2020-06-07 23:22:04 -0700</date>
            <delta_ts>2020-06-08 02:41:27 -0700</delta_ts>
            <desc>One more reserveCapacity</desc>
            <filename>bug-206582-20200608082202.patch</filename>
            <type>text/plain</type>
            <size>145293</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYzOTQ3NjVmZTY3ODQ1MWRkMzBkYzQ0
N2U1MmY1ZWY2YTk3ODlmYmIuLjBmOGUwYTY5NDU0ZDQ1NDgzY2ZjM2FiZGY2ZWFjZGFmNjg4MDlj
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDYtMDUgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTA2LTAxICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBFTkFC
TEUoV0hFRUxfRVZFTlRfUkVHSU9OUyksIGVuYWJsZWQgb24gbWFjT1Mgd2hpY2ggaXMgdGhlIG9u
bHkgcGxhdGZvcm0gdGhhdCBuZWVkcyB3aGVlbCBldmVudCByZWdpb25zIGZvciBzY3JvbGxpbmcg
dGhyZWFkIGhpdC10ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBhNjYyZGVmNjYxMWRiOTBhNzQ0M2Ni
MWQyNTY0YTU1YWFhYWIzYS4uMjcxMTlhMjZmZjA5NDFiOGI1Y2RmNTBiNmY5NWIxMWEzYTJjMzI0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIwLTA2LTA1ICB5b3Vlbm4gZmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVy
RGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTg5ODUzNjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAg
ICAgIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBhbGxvd3MgdG8gZ3JhYiByZWNvcmRlZCBkYXRhIHdo
ZW5ldmVyIHdhbnRlZC4KKyAgICAgICAgVGhpcyBkZWxlZ2F0ZSByZXF1aXJlcyBwYXNzaW5nIGNv
bXByZXNzZWQgc2FtcGxlcyB0byBBVkFzc2V0V3JpdGVyLgorICAgICAgICBJbXBsZW1lbnQgdmlk
ZW8gZW5jb2RpbmcgYW5kIGF1ZGlvIGVuY29kaW5nIGluIGRlZGljYXRlZCBjbGFzc2VzIGFuZCB1
c2UgdGhlc2UgY2xhc3NlcyBiZWZvcmUgYWRkaW5nIGJ1ZmZlcnMgdG8gQVZBc3NldFdyaXRlci4K
KyAgICAgICAgVGhlc2UgY2xhc3NlcyBhcmUgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGFu
ZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuCisgICAgICAgIFRoZXkgc3VwcG9ydCBBQUMg
YW5kIEgyNjQgc28gZmFyIGFuZCBzaG91bGQgYmUgZnVydGhlciBpbXByb3ZlZCB0byBzdXBwb3J0
IG1vcmUgZW5jb2Rpbmcgb3B0aW9ucy4KKworICAgICAgICBJbnN0YW50aWF0ZSByZWFsIHdyaXRl
ciBvbmx5IGZvciBwbGF0Zm9ybXMgc3VwcG9ydGluZyBBVkFzc2V0V3JpdGVyRGVsZWdhdGUsIHNp
bmNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgZXZlcnl3aGVyZS4KKyAgICAgICAgVGhlIHdyaXRlciwg
ZG9pbmcgdGhlIHBhY2FrZ2luZywgaXMgcmVjZWl2aW5nIGNvbXByZXNzZWQgYnVmZmVyIGZyb20g
dGhlIGF1ZGlvL3ZpZGVvIGNvbXByZXNzb3JzLgorICAgICAgICBJdCB0aGVuIHNlbmRzIGRhdGEg
d2hlbiBiZWluZyByZXF1ZXN0IHRvIGZsdXNoIHRvIGl0cyBkZWxlZ2F0ZSwgd2hpY2ggd2lsbCBz
ZW5kIGRhdGEgdG8gdGhlIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLgorICAgICAgICBUaGUg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgc3RvcmVzIHRoZSBkYXRhIGluIGEgU2hhcmVkQnVm
ZmVyIHVudGlsIE1lZGlhUmVjb3JkZXIgYXNrcyBmb3IgZGF0YS4KKworICAgICAgICBOb3RlIHRo
YXQsIHdoZW5ldmVyIHdlIHJlcXVlc3QgZGF0YSwgd2UgZmx1c2ggdGhlIHdyaXRlciBhbmQgaW5z
ZXJ0IGFuIGVuZCBvZiB2aWRlbyBzYW1wbGUgdG8gbWFrZSBzdXJlIHZpZGVvIGRhdGEgZ2V0cyBm
bHVzaGVkLgorICAgICAgICBUaGVyZWZvcmUgZGF0YSBzaG91bGQgbm90IGJlIHJlcXVlc3RlZCB0
b28gZmFzdCB0byBnZXQgYWRlcXVhdGUgdmlkZW8gY29tcHJlc3Npb24uCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6fkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNv
bXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVy
UmVmcmVzaENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6c2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphdWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQ
cm9jKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJv
dmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVy
VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnBy
b2Nlc3NTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkFW
QXNzZXRXcml0ZXJEZWxlZ2F0ZSBpbml0V2l0aFdyaXRlcjpdKToKKyAgICAgICAgKC1bV2ViQVZB
c3NldFdyaXRlckRlbGVnYXRlIGFzc2V0V3JpdGVyOmRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVy
RGF0YTpdKToKKyAgICAgICAgKC1bV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFzc2V0V3JpdGVy
OmRpZFByb2R1Y2VGcmFnbWVudGVkTWVkaWFEYXRhOmZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQ6
XSk6CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBjbG9zZV0pOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0
cHV0QnVmZmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVm
ZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJv
Y2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRp
b1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVm
ZmVycyk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlv
bk1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
YXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFy
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFt
cCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
VmlkZW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVk
aW9TYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnN0b3BSZWNvcmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsLmguCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OnZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
YWRkU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcik6CisKIDIwMjAt
MDYtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpbGUg
VVJMcyB3aXRoIGhvc3RuYW1lcyBhcmUgbWlzbGVhZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXgg
NjY4ODZhZmVhMzk3ZWQ1MGJjMTQwMmUyYmExMTk0YTY2MzI5OTc4NS4uNDUyNTgzYmI1MDk4ZjFk
NGVhODU3OGMxMWFlMjZmZmY5NjViNzAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMjAtMDYtMDUgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVk
aWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA2NTgyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODk4NTM2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIHNvZnQgbGluayBtYWNyb3Mg
Zm9yIFZpZGVvVG9vbGJveCBhbmQgQXVkaW9Ub29sYm94LgorCisgICAgICAgICogUEFMLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRM
aW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmg6
IEFkZGVkLgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHA6CisgICAgICAg
ICogcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg6CisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9v
bGJveFNvZnRMaW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL1ZpZGVvVG9vbGJveFNv
ZnRMaW5rLmg6IEFkZGVkLgorCiAyMDIwLTA2LTAyICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgRkVBVFVSRVNfREVGSU5FUyByZWxhdGVkIGNoYW5n
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNGJmOWJmNmY3YjQzNjZlOGQwMTkwMjNhZDAwMjc3OGE1OThiNzYzZi4u
YmJkZWU3MDdhYWZjNmRkN2NjNzNlNTFiYjRlNDE4OWEyMWE1YWM2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wNi0wNSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVu
dCBNZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDY1ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4OTg1MzY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBFbmFibGUgUmVtb3RlTWVk
aWFSZWNvcmRlciBvbmx5IGZvciBzeXN0ZW1zIHN1cHBvcnRpbmcgQVZBc3NldFdyaXRlckRlbGVn
YXRlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2
ZU1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
OgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJN
YW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKToKKwogMjAy
MC0wNi0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IG1vcmUgbG9nZ2luZyByZWxhdGVkIHRvIHNlcnZpY2Ugd29ya2VyIGZldGNoIGV2ZW50IGhhbmRs
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IDU1OGZiMDQxZTc2MTQ3YmY3Y2E0OWU5Yjg4Nzkz
MzBkODBlMTUzODQuLmJiNWQxZjY5YTg0NDllNDNkYzkxMTFlMTFmNDA0NTY0MWFhY2MxMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC01NDMsNiArNTQzLDEwIEBACiAjZGVmaW5lIEhBVkVfT1Nf
U0lHTlBPU1QgMQogI2VuZGlmCiAKKyNpZiAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElPUykpICYmIChkZWZp
bmVkIF9faGFzX2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8QVZGb3VuZGF0aW9uL0FWQXNzZXRX
cml0ZXJfUHJpdmF0ZS5oPikpCisjZGVmaW5lIEhBVkVfQVZBU1NFVFdSSVRFUkRFTEVHQVRFIDEK
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKFdBVENIT1Mp
ICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxFX1RJ
VExFXzAgMQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxFX1RJVExFXzQgMQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCA0NGM5ZDA3YTliOTc1MGQ2NjI2ZWI3NTg3ZWFiYzUx
M2Y0MzZiOGIzLi44ODRhNDA3OTBhNDZhODMyNjI2ZTBmYTBlZWJiOWM5ZDlmNDRjYWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzQsNyArMzQsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IE1lZGlhUmVj
b3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2
YXRlJiBzdHJlYW0pCiB7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgcmV0
dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlKHN0cmVhbSk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOworICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA0Zjk4OTc3MzdkODgyZDhlNGEyNzAwMTBkMmVhNTBhMDIxMTkyNGEwLi41YjAy
YjUxMzAwYTRkMGNkNWQ5ZDgyZTgyYjRmMGNiNzdiZGI2NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTksNiArMTE5LDkg
QEAKIAkJMkUxMzQyQ0MyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNBMjE1QUExMEEw
MDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggKi87IH07CiAJCTJFMTM0MkNEMjE1QUExMEEwMDcx
OTlEMiAvKiBVSUtpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkUxMzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsu
bW0gKi87IH07CiAJCTMxMzA4QjE0MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMwOEIx
MzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovOyB9OworCQk0MTZFOTk1
MzIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTEyM0RBRTZCRDAwRTg3
MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCAqLzsgfTsKKwkJNDE2RTk5NTQyM0RBRTZC
RTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVk
aW9Ub29sYm94U29mdExpbmsuaCAqLzsgfTsKKwkJNDFFMUYzNDQyNDhBNkEwMDAwMjJENURFIC8q
IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU1MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hT
b2Z0TGluay5jcHAgKi87IH07CiAJCTQ0Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Mjk1
NkNDMjE4QTcyREUwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCAqLzsgfTsKIAkJNDQ1MEZDOUYyMUY1
RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1
aWNrTG9va1NvZnRMaW5rLm1tICovOyB9OwogCQk0NDUwRkNBMDIxRjVGNjAyMDA0REZBNTYgLyog
UXVpY2tMb29rU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5o
ICovOyB9OwpAQCAtMzAwLDYgKzMwMywxMCBAQAogCQkyRTEzNDJDQjIxNUFBMTBBMDA3MTk5RDIg
LyogVUlLaXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFVJS2l0U29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzA4
QjEzMjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN5c3RlbVByZXZpZXdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxMTlB
NzgyMENDQjVGRjAwMkM2REM5IC8qIFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNj
b25maWc7IHBhdGggPSBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rv
b2xib3hTb2Z0TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
dWRpb1Rvb2xib3hTb2Z0TGluay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
NkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGluay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9U
b29sYm94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VmlkZW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTZFOTk1NjIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExpbmsuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0IC8qIFJldmVh
bFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXZlYWxTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1
aWNrTG9va1NvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUXVpY2tMb29rU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0xvb2tTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTQxLDggKzU0OCwxMiBAQAogCQkwQ0Y5OUNBNTFGNzM4NDFDMDA3
RUU3OTMgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAg
Ki8sCisJCQkJNDE2RTk5NTIyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5r
LmggKi8sCiAJCQkJMENGOTlDQTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5r
LmNwcCAqLywKIAkJCQkwQ0Y5OUNBNzFGNzM4NDM3MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExp
bmsuaCAqLywKKwkJCQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29m
dExpbmsuY3BwICovLAorCQkJCTQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xi
b3hTb2Z0TGluay5oICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC03MzUsNiArNzQ2LDcgQEAKIAkJCQkyOTNFRTRBOTI0MTU0RjhGMDA0NzQ5
M0QgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdGRDMxOEIyMkIzNTk4OTAwOEQwRThCIC8qIEFwcFNTT1NvZnRMaW5rLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzZDQTlENjIyQjg1NEFCMDAzMDE0M0MgLyogQXBwU1NPU1BJLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MTZFOTk1NDIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExp
bmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDJFOTNDMjA1NkZBQTcwMEExMzc5NyAvKiBBdWRp
b1Rvb2xib3hTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MkExMDc4MjJCNDU2RjUwMEY0MTBD
OCAvKiBBdXRoS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzdFODdCMjIyNkE0NjAzMDBB
MkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovLApAQCAtOTUzLDYg
Kzk2NSw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQkyOTNFRTRBODI0MTU0RjhGMDA0NzQ5M0QgLyog
QWNjZXNzaWJpbGl0eVN1cHBvcnRTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1N0ZE
MzE4QTIyQjM1OTNFMDA4RDBFOEIgLyogQXBwU1NPU29mdExpbmsubW0gaW4gU291cmNlcyAqLywK
KwkJCQk0MTZFOTk1MzIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDc3RTg3QjEyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRh
dGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEM1RkZGMEYxRjc4RDlEQTAwOUVG
RjFBIC8qIENsb2NrQ00ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwQ0Y5OUNBODFGNzM4NDM3MDA3
RUU3OTMgLyogQ29yZU1lZGlhU29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NjcsNiAr
OTgwLDcgQEAKIAkJCQk0NEUxQThCMDIxRkE1NEVCMDBDMzA0OEUgLyogTG9va3VwU29mdExpbmsu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzdDNzg3NDIzQUMzRTc3MDA2NUY0N0UgLyogTWFuYWdl
ZENvbmZpZ3VyYXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBDRjk5Q0E0MUY3
MzYzNzUwMDdFRTc5MyAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNDFFMUYzNDQyNDhBNkEwMDAwMjJENURFIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNEQUNCMzYwMjM4NzQyNUIwMDE4RDdDRSAvKiBNZWRpYVRv
b2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUY2M0NBMDIxQTREQkY3MDA2
RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTExNzVCNEYx
RjZCMzM3MzAwQzRCOUYwIC8qIFBvcHVwTWVudS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xY2Y1NTA1NmFjZGE2ZjU2NTNhZGM3ZTE3ZWMwMmEyZDgyNmU0NDdmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5j
cHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29u
dmVydGVyLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+CisKKyNpbmNs
dWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNF
KFBBTCwgQXVkaW9Ub29sYm94KQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUws
IEF1ZGlvVG9vbGJveCwgQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0Zv
cm1hdFByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5TcGVjaWZpZXJTaXplLCBjb25z
dCB2b2lkKiBpblNwZWNpZmllciwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91
dFByb3BlcnR5RGF0YSksIChpblByb3BlcnR5SUQsIGluU3BlY2lmaWVyU2l6ZSwgaW5TcGVjaWZp
ZXIsIGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NT
dGF0dXMsIChjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0
LCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQs
IEF1ZGlvQ29udmVydGVyUmVmKiBvdXRBdWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwg
aW5EZXN0aW5hdGlvbkZvcm1hdCwgb3V0QXVkaW9Db252ZXJ0ZXIpKQorU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyU2V0UHJvcGVy
dHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9D
b252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGluUHJvcGVydHlEYXRhU2l6
ZSwgY29uc3Qgdm9pZCogaW5Qcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9w
ZXJ0eUlELCBpblByb3BlcnR5RGF0YVNpemUsIGluUHJvcGVydHlEYXRhKSkKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlckdldFBy
b3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1
ZGlvQ29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiogaW9Qcm9wZXJ0eURh
dGFTaXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9w
ZXJ0eUlELCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkpCisKKyNlbmRpZiAv
LyBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
Zi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRp
b1Rvb2xib3hTb2Z0TGluay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MzExODcxNzRhYzE1NTQ0MzcxZGVlMDNi
MTQzMmUzZTY1NjMyZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlIDx3dGYv
U29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBBTCwgQXVk
aW9Ub29sYm94KQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9v
bGJveCwgQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRl
clJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0
eUlELCBVSW50MzIqIGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRhKSwg
KGluQXVkaW9Db252ZXJ0ZXIsIGluUHJvcGVydHlJRCwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQ
cm9wZXJ0eURhdGEpKQorI2RlZmluZSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5IHNvZnRMaW5r
X0F1ZGlvVG9vbGJveF9BdWRpb0NvbnZlcnRlckdldFByb3BlcnR5CitTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJOZXcsIE9TU3Rh
dHVzLCAoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpblNvdXJjZUZvcm1hdCwg
Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpbkRlc3RpbmF0aW9uRm9ybWF0LCBB
dWRpb0NvbnZlcnRlclJlZiogb3V0QXVkaW9Db252ZXJ0ZXIpLCAoaW5Tb3VyY2VGb3JtYXQsIGlu
RGVzdGluYXRpb25Gb3JtYXQsIG91dEF1ZGlvQ29udmVydGVyKSkKKyNkZWZpbmUgQXVkaW9Db252
ZXJ0ZXJOZXcgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29udmVydGVyTmV3CitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJT
ZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVy
LCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5Qcm9wZXJ0
eURhdGFTaXplLCBjb25zdCB2b2lkKiBpblByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVy
LCBpblByb3BlcnR5SUQsIGluUHJvcGVydHlEYXRhU2l6ZSwgaW5Qcm9wZXJ0eURhdGEpKQorI2Rl
ZmluZSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRp
b0NvbnZlcnRlclNldFByb3BlcnR5CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUws
IEF1ZGlvVG9vbGJveCwgQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0Zv
cm1hdFByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5TcGVjaWZpZXJTaXplLCBjb25z
dCB2b2lkKiBpblNwZWNpZmllciwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91
dFByb3BlcnR5RGF0YSksIChpblByb3BlcnR5SUQsIGluU3BlY2lmaWVyU2l6ZSwgaW5TcGVjaWZp
ZXIsIGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKyNkZWZpbmUgQXVkaW9G
b3JtYXRHZXRQcm9wZXJ0eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Gb3JtYXRHZXRQcm9w
ZXJ0eQorCisKKyNlbmRpZiAvLyBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAppbmRleCAxOTY5MjkxYTgxZTI0NThk
YmE3ODAzNWNlOThlZDE0ZmM3NzU1OWYxLi45MmVhNzY4ZmZkZTE4ZWViZjE0ODY0Yzk3ZjE0OTky
NzJiMDRmOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRp
YVNvZnRMaW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmNwcApAQCAtNDYsNiArNDYsNyBAQCBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIFBBTF9FWFBPUlQpCiAKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVm
ZmVyQ29weURhdGFCeXRlcywgT1NTdGF0dXMsIChDTUJsb2NrQnVmZmVyUmVmIHRoZVNvdXJjZUJ1
ZmZlciwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIHZvaWQqIGRlc3Rp
bmF0aW9uKSwgKHRoZVNvdXJjZUJ1ZmZlciwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBkZXN0
aW5hdGlvbiksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgsIHNpemVf
dCwgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZlciksIFBBTF9FWFBPUlQp
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRp
YSwgQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMsIE9TU3RhdHVzLCAoY29uc3Qgdm9pZCog
c291cmNlQnl0ZXMsIENNQmxvY2tCdWZmZXJSZWYgZGVzdGluYXRpb25CdWZmZXIsIHNpemVfdCBv
ZmZzZXRJbnRvRGVzdGluYXRpb24sIHNpemVfdCBkYXRhTGVuZ3RoKSwgKHNvdXJjZUJ5dGVzLCBk
ZXN0aW5hdGlvbkJ1ZmZlciwgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBkYXRhTGVuZ3RoKSwgUEFM
X0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
Q29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9uYXJ5
UmVmLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpLCBQQUxfRVhQT1JUKQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEs
IENNU2FtcGxlQnVmZmVyR2V0VHlwZUlELCBDRlR5cGVJRCwgKHZvaWQpLCAoKSwgUEFMX0VYUE9S
VCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1l
ZGlhLCBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIsIENNQmxvY2tCdWZmZXJSZWYsIChDTVNh
bXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpLCBQQUxfRVhQT1JUKQpAQCAtMTMzLDkgKzEzNCwx
MSBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVN
ZWRpYSwgQ01CdWZmZXJRdWV1ZURlcXVldWVBbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVFbnF1ZXVlLCBPU1N0
YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUsIENNQnVmZmVyUmVmIGJ1ZmZlciksIChxdWV1
ZSwgYnVmZmVyKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlSXNFbXB0eSwgQm9vbGVhbiwg
KENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpLCBQQUxfRVhQT1JUKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVy
UXVldWVHZXRCdWZmZXJDb3VudCwgQ01JdGVtQ291bnQsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVl
KSwgKHF1ZXVlKSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5z
b3J0ZWRTYW1wbGVCdWZmZXJzLCBjb25zdCBDTUJ1ZmZlckNhbGxiYWNrcyAqLCAoKSwgKCksIFBB
TF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0YW1wLCBD
TVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSwgUEFMX0VYUE9SVCkKIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBD
TUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTUJ1ZmZl
clF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlSW5z
dGFsbFRyaWdnZXJXaXRoSW50ZWdlclRocmVzaG9sZCwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVl
UmVmIHF1ZXVlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIHRyaWdnZXJDYWxsYmFjaywg
dm9pZCogdHJpZ2dlclJlZmNvbiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDb25kaXRpb24gdHJpZ2dl
ckNvbmRpdGlvbiwgQ01JdGVtQ291bnQgdHJpZ2dlclRocmVzaG9sZCwgQ01CdWZmZXJRdWV1ZVRy
aWdnZXJUb2tlbiogdHJpZ2dlclRva2VuT3V0KSwgKHF1ZXVlLCB0cmlnZ2VyQ2FsbGJhY2ssIHRy
aWdnZXJSZWZjb24sIHRyaWdnZXJDb25kaXRpb24sIHRyaWdnZXJUaHJlc2hvbGQsIHRyaWdnZXJU
b2tlbk91dCksIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3Rh
dHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSksIFBBTF9FWFBPUlQpCiAKIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBr
Q01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxheSwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBP
UlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVN
ZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Ob3RTeW5jLCBDRlN0cmluZ1JlZiwgUEFMX0VY
UE9SVCkKQEAgLTE0OSw2ICsxNTIsOSBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobQogU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTVNh
bXBsZUF0dGFjaG1lbnRLZXlfRGlzcGxheUltbWVkaWF0ZWx5LCBDRlN0cmluZ1JlZiwgUEFMX0VY
UE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29y
ZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0lzRGVwZW5kZWRPbkJ5T3RoZXJzLCBDRlN0
cmluZ1JlZiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlv
bl9CdWZmZXJDb25zdW1lZCwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVm
ZmVyQXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYs
IFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9HcmFkdWFsRGVjb2Rl
clJlZnJlc2gsIENGU3RyaW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGdldF9Db3JlTWVkaWFfa0NNU2Ft
cGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCBDRlN0cmluZ1JlZiwg
UEFMX0VYUE9SVCkKIAogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBDb3JlTWVkaWEsIGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX0VmZmVjdGl2ZVJhdGVDaGFu
Z2VkLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9U
aW1lSnVtcGVkLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKQEAgLTE2Myw2ICsxNjksOCBAQCBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwg
Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21B
dWRpb0J1ZmZlckxpc3QsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZBbGxv
Y2F0b3JSZWYgYmJ1ZlN0cnVjdEFsbG9jYXRvciwgQ0ZBbGxvY2F0b3JSZWYgYmJ1Zk1lbW9yeUFs
bG9jYXRvciwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCAqYnVmZmVyTGlz
dCksIChzYnVmLCBiYnVmU3RydWN0QWxsb2NhdG9yLCBiYnVmTWVtb3J5QWxsb2NhdG9yLCBmbGFn
cywgYnVmZmVyTGlzdCksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhUmVhZHks
IE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSwgUEFMX0VYUE9SVCkK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlh
LCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGFzYmQsIHNp
emVfdCBsYXlvdXRTaXplLCBjb25zdCBBdWRpb0NoYW5uZWxMYXlvdXQqIGxheW91dCwgc2l6ZV90
IG1hZ2ljQ29va2llU2l6ZSwgY29uc3Qgdm9pZCogbWFnaWNDb29raWUsIENGRGljdGlvbmFyeVJl
ZiBleHRlbnNpb25zLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYqIG91dERlc2MpLCAoYWxs
b2NhdG9yLCBhc2JkLCBsYXlvdXRTaXplLCBsYXlvdXQsIG1hZ2ljQ29va2llU2l6ZSwgbWFnaWND
b29raWUsIGV4dGVuc2lvbnMsIG91dERlc2MpLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llLCBjb25zdCB2b2lkKiwgKENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvblJlZiBkZXNjLCBzaXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCksIFBBTF9F
WFBPUlQpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENv
cmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1h
dCwgY29uc3QgQXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9u
UmVmIGRlc2MpLCAoZGVzYyksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2ss
IENNQ2xvY2tSZWYsICh2b2lkKSwgKCksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldFRpbWUsIENN
VGltZSwgKENNQ2xvY2tSZWYgY2xvY2spLCAoY2xvY2spLCBQQUxfRVhQT1JUKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxl
QnVmZmVyQ2FsbEZvckVhY2hTYW1wbGUsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1
ZiwgT1NTdGF0dXMgKCogQ01TQU1QTEVCVUZGRVJDQUxMX05PRVNDQVBFIGNhbGxiYWNrKSggQ01T
YW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBDTUl0ZW1Db3VudCBpbmRleCwgdm9pZCAqcmVm
Y29uKSwgdm9pZCAqcmVmY29uKSwgKHNidWYsIGNhbGxiYWNrLCByZWZjb24pLCBQQUxfRVhQT1JU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCmluZGV4
IDI3MWRmNjJkYzhmYWY2ODBjZWQxYzk4NTMyZTBjOTMwNzliNzZkZGYuLjg0MjkzMzI5MjMxNGQ4
MDNiMmRmMTYzOTRlMmJiZGI4NmFkNTc4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKQEAgLTQ5LDYgKzQ5LDggQEAgU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVz
LCBPU1N0YXQKICNkZWZpbmUgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc29mdExpbmtfQ29y
ZU1lZGlhX0NNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgsIHNpemVf
dCwgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZlcikpCiAjZGVmaW5lIENN
QmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVy
R2V0RGF0YUxlbmd0aAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzLCBPU1N0YXR1cywgKGNvbnN0IHZvaWQq
IHNvdXJjZUJ5dGVzLCBDTUJsb2NrQnVmZmVyUmVmIGRlc3RpbmF0aW9uQnVmZmVyLCBzaXplX3Qg
b2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUxlbmd0aCksIChzb3VyY2VCeXRlcywg
ZGVzdGluYXRpb25CdWZmZXIsIG9mZnNldEludG9EZXN0aW5hdGlvbiwgZGF0YUxlbmd0aCkpCisj
ZGVmaW5lIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9D
TUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRp
Y3Rpb25hcnlSZWYsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVm
aW5lIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zIHNvZnRMaW5rX0NvcmVNZWRpYV9D
TUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0VHlwZUlELCBDRlR5cGVJRCwg
KHZvaWQpLCAoKSkKQEAgLTIyNSwxMCArMjI3LDE0IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0QnVmZmVyQ291bnQsIENNSXRl
CiAjZGVmaW5lIENNQnVmZmVyUXVldWVHZXRCdWZmZXJDb3VudCBzb2Z0TGlua19Db3JlTWVkaWFf
Q01CdWZmZXJRdWV1ZUdldEJ1ZmZlckNvdW50CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0
YW1wLCBDTVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKICNkZWZpbmUg
Q01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0YW1wIHNvZnRMaW5rX0NvcmVN
ZWRpYV9DTUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25UaW1lU3RhbXAKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Q2Fs
bGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzLCBjb25zdCBDTUJ1ZmZlckNhbGxiYWNrcyAq
LCAoKSwgKCkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNh
bXBsZUJ1ZmZlcnMgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NG
b3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGltZVN0YW1wLCBD
TVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKICNkZWZpbmUgQ01CdWZm
ZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3JlTWVkaWFfQ01C
dWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcAogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldp
dGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUsIENN
QnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNrLCB2b2lkKiB0cmlnZ2Vy
UmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmlnZ2VyQ29uZGl0aW9uLCBD
TUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKiB0
cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywgdHJpZ2dlclJlZmNvbiwg
dHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dlclRva2VuT3V0KSkKICNk
ZWZpbmUgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQgc29m
dExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhy
ZXNob2xkCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01C
dWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1
ZSksIChxdWV1ZSkpCisjZGVmaW5lIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YQogCiBTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05v
dERpc3BsYXksIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0Rv
Tm90RGlzcGxheSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNw
bGF5KCkKQEAgLTI1OCw2ICsyNjQsMTUgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIo
UEFMLCBDb3JlTWVkaWEsIGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQKICNkZWZp
bmUga0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCBnZXRfQ29yZU1lZGlhX2tDTVRp
bWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9I
RUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9u
X0J1ZmZlckNvbnN1bWVkLCBDRlN0cmluZ1JlZikKICNkZWZpbmUga0NNU2FtcGxlQnVmZmVyQ29u
c3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQgZ2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVC
dWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCgpCitTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVu
dEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtD
TVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb24gZ2V0
X0NvcmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0VuZHNQcmV2aW91c1NhbXBs
ZUR1cmF0aW9uKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlh
LCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0dyYWR1YWxEZWNvZGVyUmVmcmVzaCwgQ0ZT
dHJpbmdSZWYpCisjZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERl
Y29kZXJSZWZyZXNoIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9H
cmFkdWFsRGVjb2RlclJlZnJlc2goKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9U
cmltRHVyYXRpb25BdFN0YXJ0LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUgZ2V0X0NvcmVNZWRpYV9r
Q01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3RhcnQgZ2V0X0NvcmVN
ZWRpYV9rQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3RhcnQoKQor
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUsIGNvbnN0IHZvaWQqLCAoQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uUmVmIGRlc2MsIHNpemVfdCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkK
KyNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUgc29mdExpbmtf
Q29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkK
ICNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlv
biBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFz
aWNEZXNjcmlwdGlvbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2ssIE9TU3RhdHVzLCAoQ0ZBbGxv
Y2F0b3JSZWYgc3RydWN0dXJlQWxsb2NhdG9yLCB2b2lkKiBtZW1vcnlCbG9jaywgc2l6ZV90IGJs
b2NrTGVuZ3RoLCBDRkFsbG9jYXRvclJlZiBibG9ja0FsbG9jYXRvciwgY29uc3QgQ01CbG9ja0J1
ZmZlckN1c3RvbUJsb2NrU291cmNlKiBjdXN0b21CbG9ja1NvdXJjZSwgc2l6ZV90IG9mZnNldFRv
RGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIENNQmxvY2tCdWZmZXJGbGFncyBmbGFncywgQ01CbG9j
a0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJlQWxsb2NhdG9yLCBtZW1vcnlC
bG9jaywgYmxvY2tMZW5ndGgsIGJsb2NrQWxsb2NhdG9yLCBjdXN0b21CbG9ja1NvdXJjZSwgb2Zm
c2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncywgYmxvY2tCdWZmZXJPdXQpKQpAQCAtMjY2LDYg
KzI4MSw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBD
TVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVy
R2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIgc29mdExpbmtfQ29yZU1l
ZGlhX0NNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZm
ZXIKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBs
ZUJ1ZmZlckdldE51bVNhbXBsZXMsIENNSXRlbUNvdW50LCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1
ZiksIChzYnVmKSkKICNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRS
aWNoZXN0RGVjb2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICosIChDTUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKKyNkZWZpbmUgQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdCBzb2Z0TGlua19Db3JlTWVk
aWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdAogU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVy
Q29weVNhbXBsZUJ1ZmZlckZvclJhbmdlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9j
YXRvciwgQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZSYW5nZSBzYW1wbGVSYW5nZSwgQ01TYW1w
bGVCdWZmZXJSZWYqIHNCdWZPdXQpLCAoYWxsb2NhdG9yLCBzYnVmLCBzYW1wbGVSYW5nZSwgc0J1
Zk91dCkpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlIHNv
ZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVm
ZmVyR2V0U2FtcGxlU2l6ZUFycmF5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYs
IENNSXRlbUNvdW50IHNpemVBcnJheUVudHJpZXMsIHNpemVfdCogc2l6ZUFycmF5T3V0LCBDTUl0
ZW1Db3VudCogc2l6ZUFycmF5RW50cmllc05lZWRlZE91dCksIChzYnVmLCBzaXplQXJyYXlFbnRy
aWVzLCBzaXplQXJyYXlPdXQsIHNpemVBcnJheUVudHJpZXNOZWVkZWRPdXQpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZGJhMzc2MTc3YTBmZTc4MGUyMWUzNzczYjA4NmFjMmE1YjE5MTMzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5j
cHAKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW1wb3J0IDxWaWRlb1Rvb2xib3gvVlRDb21wcmVz
c2lvblNlc3Npb24uaD4KKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJ
TktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gpCisKK1NPRlRfTElOS19D
T05TVEFOVF9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRDb21wcmVzc2lvblByb3Bl
cnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFO
VF9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5
X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0
eUtleV9SZWFsVGltZSwgQ0ZTdHJpbmdSZWYpCisKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJs
ZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXIsIENGU3RyaW5nUmVmKQorCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNl
c3Npb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgQ01WaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUsIENGRGlj
dGlvbmFyeVJlZiBlbmNvZGVyU3BlY2lmaWNhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUlt
YWdlQnVmZmVyQXR0cmlidXRlcywgQ0ZBbGxvY2F0b3JSZWYgY29tcHJlc3NlZERhdGFBbGxvY2F0
b3IsIFZUQ29tcHJlc3Npb25PdXRwdXRDYWxsYmFjayBvdXRwdXRDYWxsYmFjaywgdm9pZCogb3V0
cHV0Q2FsbGJhY2tSZWZDb24sIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmKiBjb21wcmVzc2lvblNl
c3Npb25PdXQpLCAoYWxsb2NhdG9yLCB3aWR0aCwgaGVpZ2h0LCBjb2RlY1R5cGUsIGVuY29kZXJT
cGVjaWZpY2F0aW9uLCBzb3VyY2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMsIGNvbXByZXNzZWREYXRh
QWxsb2NhdG9yLCBvdXRwdXRDYWxsYmFjaywgb3V0cHV0Q2FsbGJhY2tSZWZDb24sIGNvbXByZXNz
aW9uU2Vzc2lvbk91dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVv
VG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChW
VENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNl
bnRhdGlvblRpbWVTdGFtcCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGlt
ZVN0YW1wKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94
LCBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Np
b25TZXNzaW9uUmVmIHNlc3Npb24sIENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGlt
ZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBkdXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVm
IGZyYW1lUHJvcGVydGllcywgdm9pZCogc291cmNlRnJhbWVSZWZjb24sIFZURW5jb2RlSW5mb0Zs
YWdzKiBpbmZvRmxhZ3NPdXQpLCAoc2Vzc2lvbiwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRp
bWVTdGFtcCwgZHVyYXRpb24sIGZyYW1lUHJvcGVydGllcywgc291cmNlRnJhbWVSZWZjb24sIGlu
Zm9GbGFnc091dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9v
bGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVz
LCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKworI2VuZGlm
IC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1Zp
ZGVvVG9vbGJveFNvZnRMaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE5ZmU1MWUwZmYxNWNmMjNkYWQ5ODA4
OWMyNTk2YWRmMTkwYWQ0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0
Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBW
aWRlb1Rvb2xib3gpCisKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVmlkZW9U
b29sYm94LCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCBDRlN0
cmluZ1JlZikKKyNkZWZpbmUga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1l
UmF0ZSBnZXRfVmlkZW9Ub29sYm94X2tWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0ZWRG
cmFtZVJhdGUoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xi
b3gsIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9u
LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlG
cmFtZUludGVydmFsRHVyYXRpb24gZ2V0X1ZpZGVvVG9vbGJveF9rVlRDb21wcmVzc2lvblByb3Bl
cnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbigpCitTT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9S
ZWFsVGltZSwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlf
UmVhbFRpbWUgZ2V0X1ZpZGVvVG9vbGJveF9rVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxU
aW1lKCkKKworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gs
IGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZp
ZGVvRW5jb2RlciwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtWVFZpZGVvRW5jb2RlclNwZWNpZmlj
YXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRW5jb2RlciBnZXRfVmlkZW9Ub29s
Ym94X2tWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRl
ZFZpZGVvRW5jb2RlcigpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlk
ZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVv
Q29kZWNUeXBlIGNvZGVjVHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9u
LCBDRkRpY3Rpb25hcnlSZWYgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRv
clJlZiBjb21wcmVzc2VkRGF0YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNr
IG91dHB1dENhbGxiYWNrLCB2b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lv
blNlc3Npb25SZWYqIGNvbXByZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBo
ZWlnaHQsIGNvZGVjVHlwZSwgZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVy
QXR0cmlidXRlcywgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRw
dXRDYWxsYmFja1JlZkNvbiwgY29tcHJlc3Npb25TZXNzaW9uT3V0KSkKKyNkZWZpbmUgVlRDb21w
cmVzc2lvblNlc3Npb25DcmVhdGUgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25T
ZXNzaW9uQ3JlYXRlCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9v
bGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENv
bXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRh
dGlvblRpbWVTdGFtcCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0
YW1wKSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBzb2Z0TGlu
a19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcworU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25T
ZXNzaW9uRW5jb2RlRnJhbWUsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vz
c2lvbiwgQ1ZJbWFnZUJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRp
bWVTdGFtcCwgQ01UaW1lIGR1cmF0aW9uLCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVz
LCB2b2lkKiBzb3VyY2VGcmFtZVJlZmNvbiwgVlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091
dCksIChzZXNzaW9uLCBpbWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlv
biwgZnJhbWVQcm9wZXJ0aWVzLCBzb3VyY2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKKyNk
ZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSBzb2Z0TGlua19WaWRlb1Rvb2xi
b3hfVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRv
RW5jb2RlRnJhbWVzLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24p
LCAoc2Vzc2lvbikpCisjZGVmaW5lIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2Rl
RnJhbWVzIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVU
b0VuY29kZUZyYW1lcworCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDZjZDE3NDIzZmMwMjFhYmM2MjRlNzVjZjJhM2Q4Y2IyOWQzZmFkNzMu
LjEwODRiOWI4MTAwN2UwNWE2ODQ4MWM2MDUzYjQzZDVjZTgzN2VkODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dApAQCAtNDkyLDcgKzQ5Miw5IEBAIHBsYXRmb3JtL21hYy9XZWJQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlci5tbQogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQogCiBwbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKK3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIEBuby11bmlm
eQogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCitwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5tbSBAbm8tdW5pZnkKIAogcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODdjZTQxNmIxNzk1OWYw
ZDY4ZWJjN2Q5MjNiZDA1M2UwYThiNDc4Yi4uZThiMmU2NDI2ZWQ4NmY4YTYyZmM5NDc4M2JmOTNj
YmE4OWZlMDk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTE0MSw2ICsxMTQxLDggQEAKIAkJNDFERTdDN0MyMjJEQTE0MzAw
NTMyQjY1IC8qIFN0b3JhZ2VRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREU3QzdCMjIyREExM0UwMDUzMkI2NSAvKiBTdG9yYWdl
UXVvdGFNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDFERUZDQjYxRTU2QzFCRDAwMEQ5RTVGIC8qIEpTRE9NTWFwTGlrZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFERUZDQjQxRTU2QzFC
OTAwMEQ5RTVGIC8qIEpTRE9NTWFwTGlrZS5oICovOyB9OwogCQk0MUUxQjFEMTBGRjU5ODY5MDA1
NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtl
ci5oICovOyB9OworCQk0MUUxRjM0MjI0OEE2OUQwMDAyMkQ1REUgLyogVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbSAqLzsgfTsKKwkJNDFFMUYzNDMyNDhBNjlENDAwMjJENURFIC8qIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRTFGMzNEMjQ4QTYyQjYwMDIyRDVERSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW0gKi87IH07CiAJCTQxRTlEQ0U3MjMxOTc0QkYwMEYzNTk0OSAvKiBCbG9iTG9h
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5
RENFNDIzMTk3M0ZFMDBGMzU5NDkgLyogQmxvYkxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRTlEQ0U5MjMxOUNBNzYwMEYzNTk0OSAv
KiBOZXR3b3JrU2VuZFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUU5RENFODIzMTlDQTc1MDBGMzU5NDkgLyogTmV0d29ya1NlbmRRdWV1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRjA2
MjE0MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMjBGNUYxOTI2
MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oICovOyB9OwpAQCAtNzU4Myw2
ICs3NTg1LDggQEAKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdF
MTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNENkY4OTIzRDZFODFDMDBCMTY0MjEg
LyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUNGOEJFNTFENDYyMjIwMDA3MDdEQzkg
LyogRmV0Y2hCb2R5Q29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmV0Y2hCb2R5Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1
QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03NjExLDYgKzc2MTUsOCBAQAogCQk0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJh
Y3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJh
Y3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFDQjBGRjU5
ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWJzdHJhY3RXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFFMUIxQ0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBBYnN0cmFjdFdvcmtlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRTFGMzNEMjQ4QTYyQjYwMDIyRDVERSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
RTFGMzNGMjQ4QTYyQjYwMDIyRDVERSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTQwODM4MURDQjc0NzkwMEVG
Q0UxOSAvKiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFFNTkzRkQyMTQ4NjVBOTAwRDNDQjYxIC8qIFJUQ1ByaW9yaXR5VHlw
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUlRDUHJpb3JpdHlUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFFNTkzRkYyMTQ4NjVBQTAwRDNDQjYxIC8qIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVy
cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5MzI4LDggKzE5MzM0LDEyIEBACiAJCTREM0MwNUQ0MjFBRjQ4MDkw
MEYyODkwQSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJNDFFMUYzM0YyNDhBNjJCNjAwMjJENURFIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5oICovLAorCQkJCTQxRTFGMzNEMjQ4QTYyQjYwMDIyRDVERSAvKiBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8sCiAJCQkJNEQ3M0Y5NEMyMThDNEE4NzAwM0EzRUQ2IC8q
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCAqLywKIAkJCQk0RDczRjk0RDIxOEM0
QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSAqLywKKwkJ
CQk0MUNENkY4OTIzRDZFODFDMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
LmggKi8sCisJCQkJNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvci5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMzQzNzIsNiArMzQzODIsNyBAQAogCQkJCUM5MEY2NTU1MUIyMjUz
QjEwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RDOEI1QTYxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MUUxRjM0MzI0OEE2OUQ0MDAy
MkQ1REUgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2Nv
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREYyQjAxMDE4MjA1NDA2MDBGMkI0MjQgLyogTW9j
a0JveC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTA1OEFERjFENjdDMjI5MDA5QTUzOEMgLyog
TW9ja0dhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNDc1Miw2ICszNDc2Myw3IEBACiAJ
CQkJREVDQTgwNEYxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNzAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJREVDQTgwNTAxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2Uy
NzEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTgwNTExRjlGRUQ2QTAwRTNCNjYxIC8qIFVu
aWZpZWRTb3VyY2UyNzIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFFMUYzNDIyNDhBNjlEMDAw
MjJENURFIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCURFQ0E4MDUyMUY5RkVENkEwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjczLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCURFQ0E4MDUzMUY5RkVENkEwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNl
Mjc0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFQ0E4MDU0MUY5RkVENkEwMEUzQjY2MSAvKiBV
bmlmaWVkU291cmNlMjc1LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDJjOWU5YzhlZmE0ZjNiNDI0MGFmZWJmZWEwYWUyMDZl
ODZjZWQzZGQuLmMxMjg0YjAwYzZjYzY5OTRhOWU1NTI3NWMwMTRmMjgyOWQzOTA4OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKQEAgLTI2LDkgKzI2LDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsLmgiCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtMTEyLDQgKzExMyw0IEBAIGNv
bnN0IFN0cmluZyYgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjptaW1lVHlwZSgpCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdB
VEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAppbmRleCBiZDZmNzU4ODI4
ZDIyMDM2NGI1ZGEwOWU3MTg2OGIxNzU4ZjJhMTFhLi43MjZlZWI1MDk1ZjM3YTk5NTIyMmYwYWVm
MWFhODg0MmE5Y2RkNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgK
QEAgLTI0LDcgKzI0LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVH
QVRFKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCkBAIC02MCw0ICs2MCw0IEBAIHByaXZhdGU6
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNDdiZjgxZTFkNDU2YzcwYzJkOTQ0ZjcwNDVhOGUxNmUwNTliY2Y5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMCwwICsxLDkxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNF
KEFWRk9VTkRBVElPTikKKworI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgorCit0eXBl
ZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBl
ZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252ZXJ0ZXJSZWY7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKENNQnVmZmVyUXVl
dWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKyAgICB+QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAgICB2b2lkIGZpbmlzaCgpOworICAgIHZvaWQgYWRk
U2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBn
ZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+
IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IoKTsKKyAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdn
ZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworCisgICAgc3RhdGljIE9TU3RhdHVz
IGF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJSZWYsIFVJ
bnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKiwg
dm9pZCopOworCisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVm
KTsKKyAgICBib29sIGluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2NyaXB0aW9u
KENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIEF1ZGlvRm9ybWF0SUQpOworICAgIHNpemVfdCBjb21w
dXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwg
VUludDMyLCBGbG9hdDMyKTsKKyAgICB2b2lkIGF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENN
U2FtcGxlQnVmZmVyUmVmKTsKKyAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IGdyYWR1YWxEZWNvZGVy
UmVmcmVzaENvdW50KCk7CisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyV2l0aE51
bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCk7CisgICAgdm9pZCBw
cm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKENNVGltZSk7CisgICAgT1NTdGF0
dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKFVJbnQzMiosIEF1ZGlvQnVmZmVy
TGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKik7CisKKyAgICBSZXRhaW5QdHI8
Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBSZXRhaW5QdHI8Q01C
dWZmZXJRdWV1ZVJlZj4gbV9pbnB1dEJ1ZmZlclF1ZXVlOworICAgIGRpc3BhdGNoX3F1ZXVlX3Qg
bV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIENNVGltZSBtX2xvd1dhdGVyVGltZTsKKyAgICBi
b29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07CisKKyAgICBSZXRhaW5QdHI8QXVkaW9Db252ZXJ0
ZXJSZWY+IG1fY29udmVydGVyOworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX3Nv
dXJjZUZvcm1hdDsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbV9kZXN0aW5hdGlv
bkZvcm1hdDsKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9kZXN0aW5h
dGlvbkZvcm1hdERlc2NyaXB0aW9uOworICAgIFJldGFpblB0cjxOU051bWJlcj4gbV9nZHJDb3Vu
dE51bTsKKyAgICBVSW50MzIgbV9tYXhPdXRwdXRQYWNrZXRTaXplOworICAgIFZlY3RvcjxBdWRp
b1N0cmVhbVBhY2tldERlc2NyaXB0aW9uPiBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25z
OworCisgICAgQ01UaW1lIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcDsKKyAg
ICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wOworICAgIENNVGlt
ZSBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb247CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9zb3VyY2VC
dWZmZXI7CisgICAgVmVjdG9yPGNoYXI+IG1fZGVzdGluYXRpb25CdWZmZXI7CisKKyAgICBSZXRh
aW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsKKyAgICBzaXplX3Qg
bV9zYW1wbGVCbG9ja0J1ZmZlclNpemU7CisgICAgc2l6ZV90IG1fY3VycmVudE9mZnNldEluU2Ft
cGxlQmxvY2tCdWZmZXI7CisgICAgQXVkaW9Gb3JtYXRJRCBtX291dHB1dENvZGVjVHlwZTsKK307
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJ
T04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY3YWE4NjM4YWZmMDNkNzg4MDVkYzZmYWVkNmU4MjJmNzEzMGY4ODAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtMCwwICsxLDUwMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRp
b0NvZGVjLmg+CisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+CisjaW5j
bHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CisKKyNpbXBvcnQgPHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oPgor
CisjZGVmaW5lIExPV19XQVRFUl9USU1FX0lOX1NFQ09ORFMgMC4xCisKK3VzaW5nIG5hbWVzcGFj
ZSBQQUw7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUo
Q01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmpl
Y3QpCit7CisgICAgYXV0byBjb21wcmVzc29yID0gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcj4obmV3IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpKTsKKyAg
ICBpZiAoIWNvbXByZXNzb3ItPmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0KSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbXByZXNzb3I7Cit9CisKK0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkK
KyAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29t
LmFwcGxlLkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklB
TCkgfQorICAgICwgbV9sb3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNlY29uZHMoTE9XX1dB
VEVSX1RJTUVfSU5fU0VDT05EUywgMTAwMCkgfQorICAgICwgbV9vdXRwdXRDb2RlY1R5cGUgeyBr
QXVkaW9Gb3JtYXRNUEVHNEFBQyB9Cit7Cit9CisKK0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpCit7CisgICAgaWYgKG1fc2VyaWFsRGlz
cGF0Y2hRdWV1ZSkKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVl
dWUpOworfQorCitib29sIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShD
TUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVj
dCkKK3sKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIGlucHV0QnVmZmVyUXVldWU7CisgICAgaWYgKGF1
dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENN
QnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJmlucHV0
QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVDcmVhdGUgZm9yIG1faW5w
dXRCdWZmZXJRdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICBtX2lucHV0QnVmZmVyUXVldWUgPSBhZG9wdENGKGlucHV0QnVmZmVy
UXVldWUpOworCisgICAgQ01CdWZmZXJRdWV1ZVJlZiBvdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBp
ZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycygpLCAm
b3V0cHV0QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3Ry
ZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVDcmVhdGUgZm9y
IG1fb3V0cHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9vdXRwdXRCdWZmZXJRdWV1ZSA9IGFkb3B0Q0Yob3V0
cHV0QnVmZmVyUXVldWUpOworICAgIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcihtX291dHB1
dEJ1ZmZlclF1ZXVlLmdldCgpLCBjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QsIGtDTUJ1ZmZlclF1
ZXVlVHJpZ2dlcl9XaGVuRGF0YUJlY29tZXNSZWFkeSwga0NNVGltZVplcm8sIE5VTEwpOworCisg
ICAgbV9pc0VuY29kaW5nID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCit7CisgICAgZGlzcGF0Y2hfc3luYyht
X3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50
aWxMb3dXYXRlclRpbWUoa0NNVGltZUludmFsaWQpOworICAgICAgICBhdXRvIGVycm9yID0gQ01C
dWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBmYWlsZWQgJWQiLCBl
cnJvcik7CisgICAgICAgIG1faXNFbmNvZGluZyA9IGZhbHNlOworICAgIH0pOworfQorCitib29s
IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNl
Rm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlv
biwgQXVkaW9Gb3JtYXRJRCBvdXRwdXRGb3JtYXRJRCkKK3sKKyAgICBjb25zdCBhdXRvICphdWRp
b0Zvcm1hdExpc3RJdGVtID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29k
YWJsZUZvcm1hdChmb3JtYXREZXNjcmlwdGlvbik7CisgICAgbV9zb3VyY2VGb3JtYXQgPSBhdWRp
b0Zvcm1hdExpc3RJdGVtLT5tQVNCRDsKKworICAgIG1lbXNldCgmbV9kZXN0aW5hdGlvbkZvcm1h
dCwgMCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOworICAgIG1fZGVzdGlu
YXRpb25Gb3JtYXQubUZvcm1hdElEID0gb3V0cHV0Rm9ybWF0SUQ7CisgICAgbV9kZXN0aW5hdGlv
bkZvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fc291cmNlRm9ybWF0Lm1TYW1wbGVSYXRlOworICAgIG1f
ZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgPSBtX3NvdXJjZUZvcm1hdC5tQ2hh
bm5lbHNQZXJGcmFtZTsKKworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKG1fZGVzdGluYXRpb25G
b3JtYXQpOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eShrQXVk
aW9Gb3JtYXRQcm9wZXJ0eV9Gb3JtYXRJbmZvLCAwLCBOVUxMLCAmc2l6ZSwgJm1fZGVzdGluYXRp
b25Gb3JtYXQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBBdWRp
b0NvbnZlcnRlclJlZiBjb252ZXJ0ZXI7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZl
cnRlck5ldygmbV9zb3VyY2VGb3JtYXQsICZtX2Rlc3RpbmF0aW9uRm9ybWF0LCAmY29udmVydGVy
KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciBBdWRpb0NvbnZlcnRlck5ldyBmYWlsZWQgd2l0aCAlZCIsIGVycm9y
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX2NvbnZlcnRlciA9IGFkb3B0
Q0YoY29udmVydGVyKTsKKworICAgIHNpemVfdCBjb29raWVTaXplID0gMDsKKyAgICBjb25zdCB2
b2lkICpjb29raWUgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZShmb3Jt
YXREZXNjcmlwdGlvbiwgJmNvb2tpZVNpemUpOworICAgIGlmIChjb29raWVTaXplKSB7CisgICAg
ICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRl
ci5nZXQoKSwga0F1ZGlvQ29udmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29va2llLCAoVUludDMy
KWNvb2tpZVNpemUsIGNvb2tpZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29u
dmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29va2llIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgc2l6ZSA9
IHNpemVvZihtX3NvdXJjZUZvcm1hdCk7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZl
cnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50
SW5wdXRTdHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX3NvdXJjZUZvcm1hdCkpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50SW5wdXRTdHJlYW1EZXNjcmlwdGlv
biBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmICghbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAibUJ5dGVzUGVyUGFja2V0IHNob3VsZCBub3Qg
YmUgemVybyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc2l6ZSA9IHNp
emVvZihtX2Rlc3RpbmF0aW9uRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29u
dmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckN1cnJl
bnRPdXRwdXRTdHJlYW1EZXNjcmlwdGlvbiwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRPdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9PSBrQXVk
aW9Gb3JtYXRNUEVHNEFBQykgeworICAgICAgICAvLyBGSVhNRTogU2V0IG91dHB1dEJpdFJhdGUg
YWNjb3JkaW5nIE1lZGlhUmVjb3JkZXJPcHRpb25zLmF1ZGlvQml0c1BlclNlY29uZC4KKyAgICAg
ICAgVUludDMyIG91dHB1dEJpdFJhdGUgPSA2NDAwMDsKKyAgICAgICAgaWYgKG1fZGVzdGluYXRp
b25Gb3JtYXQubVNhbXBsZVJhdGUgPj0gNDQxMDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRl
ID0gMTkyMDAwOworICAgICAgICBlbHNlIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVS
YXRlIDwgMjIwMDApCisgICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMzIwMDA7CisKKyAgICAg
ICAgc2l6ZSA9IHNpemVvZihvdXRwdXRCaXRSYXRlKTsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3Ig
PSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252
ZXJ0ZXJFbmNvZGVCaXRSYXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIHNldHRpbmcga0F1ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmICghbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpIHsKKyAgICAgICAg
Ly8gSWYgdGhlIGRlc3RpbmF0aW9uIGZvcm1hdCBpcyBWQlIsIHdlIG5lZWQgdG8gZ2V0IG1heCBz
aXplIHBlciBwYWNrZXQgZnJvbSB0aGUgY29udmVydGVyLgorICAgICAgICBzaXplID0gc2l6ZW9m
KG1fbWF4T3V0cHV0UGFja2V0U2l6ZSk7CisKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRp
b0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQ
cm9wZXJ0eU1heGltdW1PdXRwdXRQYWNrZXRTaXplLCAmc2l6ZSwgJm1fbWF4T3V0cHV0UGFja2V0
U2l6ZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyUHJvcGVydHlN
YXhpbXVtT3V0cHV0UGFja2V0U2l6ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gZGVzdGluYXRp
b25CdWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemVGb3JBdWRpb0Zvcm1hdChtX2Rlc3RpbmF0
aW9uRm9ybWF0LCBtX21heE91dHB1dFBhY2tldFNpemUsIExPV19XQVRFUl9USU1FX0lOX1NFQ09O
RFMpOworICAgIGlmIChtX2Rlc3RpbmF0aW9uQnVmZmVyLnNpemUoKSA8IGRlc3RpbmF0aW9uQnVm
ZmVyU2l6ZSkKKyAgICAgICAgbV9kZXN0aW5hdGlvbkJ1ZmZlci5yZXNpemUoZGVzdGluYXRpb25C
dWZmZXJTaXplKTsKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0
KQorICAgICAgICBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLnJlc2l6ZShtX2Rlc3Rp
bmF0aW9uQnVmZmVyLmNhcGFjaXR5KCkgLyBtX21heE91dHB1dFBhY2tldFNpemUpOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNv
bXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
IGZvcm1hdCwgVUludDMyIG1heE91dHB1dFBhY2tldFNpemUsIEZsb2F0MzIgZHVyYXRpb24pCit7
CisgICAgVUludDMyIG51bVBhY2tldHMgPSAoZm9ybWF0Lm1TYW1wbGVSYXRlICogZHVyYXRpb24p
IC8gZm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQ7CisgICAgVUludDMyIG91dHB1dFBhY2tldFNpemUg
PSBmb3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gZm9ybWF0Lm1CeXRlc1BlclBhY2tldCA6IG1heE91
dHB1dFBhY2tldFNpemU7CisgICAgVUludDMyIGJ1ZmZlclNpemUgPSBudW1QYWNrZXRzICogb3V0
cHV0UGFja2V0U2l6ZTsKKworICAgIHJldHVybiBidWZmZXJTaXplOworfQorCit2b2lkIEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoQ01TYW1w
bGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGlmIChDTVRJTUVfSVNfSU5WQUxJRChtX3JlbWFp
bmluZ1ByaW1lRHVyYXRpb24pKSB7CisgICAgICAgIEF1ZGlvQ29udmVydGVyUHJpbWVJbmZvIHBy
aW1lSW5mbyB7IDAsIDAgfTsKKyAgICAgICAgVUludDMyIHNpemUgPSBzaXplb2YocHJpbWVJbmZv
KTsKKworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHko
bV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlclByaW1lSW5mbywgJnNpemUsICZwcmlt
ZUluZm8pKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlclByaW1lSW5m
byBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiA9IENNVGltZU1ha2UocHJpbWVJ
bmZvLmxlYWRpbmdGcmFtZXMsIG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJhdGUpOworICAg
IH0KKworICAgIGlmIChDTVRJTUVfQ09NUEFSRV9JTkxJTkUoa0NNVGltZVplcm8sIDwsIG1fcmVt
YWluaW5nUHJpbWVEdXJhdGlvbikpIHsKKyAgICAgICAgQ01UaW1lIHNhbXBsZUR1cmF0aW9uID0g
Q01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgICAgICBDTVRpbWUgdHJpbUR1
cmF0aW9uID0gQ01UaW1lTWluaW11bShzYW1wbGVEdXJhdGlvbiwgbV9yZW1haW5pbmdQcmltZUR1
cmF0aW9uKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHRyaW1BdFN0YXJ0RGljdCA9IENNVGlt
ZUNvcHlBc0RpY3Rpb25hcnkodHJpbUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKKyAg
ICAgICAgQ01TZXRBdHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtl
eV9UcmltRHVyYXRpb25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QsIGtDTUF0dGFjaG1lbnRNb2Rl
X1Nob3VsZFByb3BhZ2F0ZSk7CisgICAgICAgIENGUmVsZWFzZSh0cmltQXRTdGFydERpY3QpOwor
ICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVTdWJ0cmFjdChtX3JlbWFp
bmluZ1ByaW1lRHVyYXRpb24sIHRyaW1EdXJhdGlvbik7CisgICAgfQorfQorCitSZXRhaW5QdHI8
TlNOdW1iZXI+IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z3JhZHVhbERlY29kZXJSZWZy
ZXNoQ291bnQoKQoreworICAgIFVJbnQzMiBkZWxheVNpemUgPSBzaXplb2YodWludDMyX3QpOwor
ICAgIHVpbnQzMl90IG9yaWdpbmFsRGVsYXlNb2RlID0gMDsKKyAgICBpZiAoYXV0byBlcnJvciA9
IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVj
UHJvcGVydHlEZWxheU1vZGUsICZkZWxheVNpemUsICZvcmlnaW5hbERlbGF5TW9kZSkpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIHVpbnQzMl90
IG9wdGltYWxEZWxheU1vZGUgPSBrQXVkaW9Db2RlY0RlbGF5TW9kZV9PcHRpbWFsOworICAgIGlm
IChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQo
KSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSwgZGVsYXlTaXplLCAmb3B0aW1hbERlbGF5
TW9kZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2Rl
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKwor
ICAgIFVJbnQzMiBwcmltZVNpemUgPSBzaXplb2YoQXVkaW9Db2RlY1ByaW1lSW5mbyk7CisgICAg
QXVkaW9Db2RlY1ByaW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07CisgICAgaWYgKGF1dG8gZXJy
b3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9D
b2RlY1Byb3BlcnR5UHJpbWVJbmZvLCAmcHJpbWVTaXplLCAmcHJpbWVJbmZvKSkgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBnZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlQcmltZUluZm8gZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgaWYgKGF1dG8gZXJy
b3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9D
b2RlY1Byb3BlcnR5RGVsYXlNb2RlLCBkZWxheVNpemUsICZvcmlnaW5hbERlbGF5TW9kZSkpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4g
YWRvcHROUyhbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoocHJpbWVJbmZvLmxlYWRpbmdGcmFtZXMg
LyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQpXSk7Cit9CisKK0NNU2FtcGxl
QnVmZmVyUmVmIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0aE51
bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCBmaWxsQnVmZmVyTGlz
dCkKK3sKKyAgICBWZWN0b3I8Y2hhcj4gY29va2llOworICAgIGlmICghbV9kZXN0aW5hdGlvbkZv
cm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIFVJbnQzMiBjb29raWVTaXplID0gMDsKKworICAg
ICAgICBhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eUluZm8obV9jb252ZXJ0
ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29raWUsICZjb29raWVT
aXplLCBOVUxMKTsKKyAgICAgICAgaWYgKChlcnJvciA9PSBub0VycikgJiYgISFjb29raWVTaXpl
KSB7CisgICAgICAgICAgICBjb29raWUucmVzaXplKGNvb2tpZVNpemUpOworCisgICAgICAgICAg
ICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIu
Z2V0KCksIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29raWUsICZjb29raWVTaXpl
LCBjb29raWUuZGF0YSgpKSkgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29u
dmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tpZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9u
OworICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmbV9kZXN0aW5hdGlvbkZvcm1hdCwgMCwgTlVMTCwgY29v
a2llU2l6ZSwgY29va2llLmRhdGEoKSwgTlVMTCwgJmRlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRp
b24pKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUgZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICB9
CisgICAgICAgIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbiA9IGFkb3B0Q0YoZGVzdGlu
YXRpb25Gb3JtYXREZXNjcmlwdGlvbik7CisgICAgICAgIG1fZ2RyQ291bnROdW0gPSBncmFkdWFs
RGVjb2RlclJlZnJlc2hDb3VudCgpOworICAgIH0KKworICAgIGNoYXIgKmRhdGEgPSBzdGF0aWNf
Y2FzdDxjaGFyKj4oZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEpOworICAgIHNpemVf
dCBkYXRhU2l6ZSA9IGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemU7CisK
KyAgICBDTUJsb2NrQnVmZmVyUmVmIGJsb2NrQnVmZmVyOworICAgIGlmIChhdXRvIGVycm9yID0g
Q01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBO
VUxMLCBkYXRhU2l6ZSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgMCwgZGF0YVNpemUsIGtD
TUJsb2NrQnVmZmVyQXNzdXJlTWVtb3J5Tm93RmxhZywgJmJsb2NrQnVmZmVyKSkgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICBhdXRvIGJ1ZmZlciA9IGFk
b3B0Q0YoYmxvY2tCdWZmZXIpOworCisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVy
UmVwbGFjZURhdGFCeXRlcyhkYXRhLCBidWZmZXIuZ2V0KCksIDAsIGRhdGFTaXplKSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBDTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcyBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBDTVNhbXBsZUJ1ZmZlclJl
ZiBzYW1wbGVCdWZmZXI7CisgICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVh
dGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1ZmZlci5nZXQo
KSwgdHJ1ZSwgTlVMTCwgTlVMTCwgbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uLmdldCgp
LCBudW1QYWNrZXRzLCBtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAsIG1fZGVz
dGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnMuZGF0YSgpLCAmc2FtcGxlQnVmZmVyKTsKKyAgICBp
ZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNr
ZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBu
aWw7CisgICAgfQorCisgICAgaWYgKFttX2dkckNvdW50TnVtIGludFZhbHVlXSkKKyAgICAgICAg
Q01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtl
eV9HcmFkdWFsRGVjb2RlclJlZnJlc2gsIChfX2JyaWRnZSBDRlR5cGVSZWYpbV9nZHJDb3VudE51
bS5nZXQoKSwga0NNQXR0YWNobWVudE1vZGVfU2hvdWxkUHJvcGFnYXRlKTsKKworICAgIHJldHVy
biBzYW1wbGVCdWZmZXI7Cit9CisKK09TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6YXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYyhBdWRpb0NvbnZlcnRlclJlZiwg
VUludDMyICpudW1PdXRwdXRQYWNrZXRzUHRyLCBBdWRpb0J1ZmZlckxpc3QgKmJ1ZmZlckxpc3Qs
IEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24gKipwYWNrZXREZXNjcmlwdGlvbk91dCwgdm9p
ZCAqYXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKQoreworICAgIGF1dG8gKmNvbXByZXNzb3Ig
PSBzdGF0aWNfY2FzdDxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IqPihhdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IpOworICAgIHJldHVybiBjb21wcmVzc29yLT5wcm92aWRlU291cmNlRGF0
YU51bU91dHB1dFBhY2tldHMobnVtT3V0cHV0UGFja2V0c1B0ciwgYnVmZmVyTGlzdCwgcGFja2V0
RGVzY3JpcHRpb25PdXQpOworfQorCitPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIqIG51bU91dHB1dFBh
Y2tldHNQdHIsIEF1ZGlvQnVmZmVyTGlzdCogYXVkaW9CdWZmZXJMaXN0LCBBdWRpb1N0cmVhbVBh
Y2tldERlc2NyaXB0aW9uKiogcGFja2V0RGVzY3JpcHRpb25PdXQpCit7CisgICAgaWYgKHBhY2tl
dERlc2NyaXB0aW9uT3V0KQorICAgICAgICAqcGFja2V0RGVzY3JpcHRpb25PdXQgPSBOVUxMOwor
CisgICAgY29uc3QgVUludDMyIG51bVBhY2tldHNUb0NvcHkgPSAqbnVtT3V0cHV0UGFja2V0c1B0
cjsKKyAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHkgPSAobnVtUGFja2V0c1RvQ29weSAqIG1fc291
cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7CisKKyAgICBpZiAoYXVkaW9CdWZmZXJMaXN0LT5t
TnVtYmVyQnVmZmVycyA9PSAxKSB7CisgICAgICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0SW5Tb3Vy
Y2VCdWZmZXIgPSAwOworCisgICAgICAgIGlmIChtX3NvdXJjZUJ1ZmZlci5zaXplKCkgPCBudW1C
eXRlc1RvQ29weSkKKyAgICAgICAgICAgIG1fc291cmNlQnVmZmVyLnJlc2l6ZShudW1CeXRlc1Rv
Q29weSk7CisKKyAgICAgICAgd2hpbGUgKG51bUJ5dGVzVG9Db3B5KSB7CisgICAgICAgICAgICBp
ZiAobV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPD0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9j
a0J1ZmZlcikgeworICAgICAgICAgICAgICAgIGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBudWxscHRyOworICAgICAg
ICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5KG1faW5wdXRC
dWZmZXJRdWV1ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZiko
Y29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1
ZmZlclF1ZXVlLmdldCgpKSkpKTsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVy
ID0gYWRvcHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4o
Q01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAg
ICAgICAgICAgICAgIGlmICghbV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIgZmFpbGVkIik7CisgICAgICAgICAg
ICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX3Nh
bXBsZUJsb2NrQnVmZmVyU2l6ZSA9IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fc2FtcGxl
QmxvY2tCdWZmZXIuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2Ft
cGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9z
YW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgIHNpemVfdCBudW1CeXRlc1RvQ29w
eUZyb21TYW1wbGVCYnVmID0gc3RkOjptaW4obnVtQnl0ZXNUb0NvcHksIChtX3NhbXBsZUJsb2Nr
QnVmZmVyU2l6ZSAtIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKG1f
c2FtcGxlQmxvY2tCdWZmZXIuZ2V0KCksIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZm
ZXIsIG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYsIChtX3NvdXJjZUJ1ZmZlci5kYXRhKCkg
KyBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIpKSkgeworICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBudW1CeXRlc1RvQ29weSAtPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVm
OworICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciArPSBudW1CeXRl
c1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldElu
U2FtcGxlQmxvY2tCdWZmZXIgKz0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBd
Lm1EYXRhID0gbV9zb3VyY2VCdWZmZXIuZGF0YSgpOworICAgICAgICBhdWRpb0J1ZmZlckxpc3Qt
Pm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7
CisgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0g
bV9zb3VyY2VGb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7CisKKyAgICAgICAgKm51bU91dHB1dFBh
Y2tldHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplIC8g
bV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKKyAgICAgICAgcmV0dXJuIG5vRXJyOwor
ICAgIH0KKworICAgIEFTU0VSVChhdWRpb0J1ZmZlckxpc3QtPm1OdW1iZXJCdWZmZXJzID09IDIp
OworCisgICAgLy8gRklYTUU6IFN1cHBvcnQgaW50ZXJsZWF2ZWQgZGF0YSBieSB1bmludGVybGVh
dmluZyBtX3NvdXJjZUJ1ZmZlciBpZiBuZWVkZWQuCisgICAgQVNTRVJUKG1fc291cmNlRm9ybWF0
Lm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkKTsKKworICAg
IGlmIChtX3NvdXJjZUJ1ZmZlci5zaXplKCkgPCAyICogbnVtQnl0ZXNUb0NvcHkpCisgICAgICAg
IG1fc291cmNlQnVmZmVyLnJlc2l6ZSgyICogbnVtQnl0ZXNUb0NvcHkpOworICAgIGF1dG8qIGZp
cnN0Q2hhbm5lbCA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKKyAgICBhdXRvKiBzZWNvbmRDaGFu
bmVsID0gbV9zb3VyY2VCdWZmZXIuZGF0YSgpICsgbnVtQnl0ZXNUb0NvcHk7CisKKyAgICBzaXpl
X3QgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyID0gMDsKKyAgICB3aGlsZSAobnVtQnl0ZXNU
b0NvcHkpIHsKKyAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9IG1fY3VycmVu
dE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgIGlmIChtX3NhbXBsZUJs
b2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IG51bGxw
dHI7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoQ01CdWZmZXJRdWV1ZUlzRW1wdHkobV9pbnB1dEJ1
ZmZlclF1ZXVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
YXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2Fz
dDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1ZXVl
LmdldCgpKSkpKTsKKyAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBhZG9wdENGKChD
TUJsb2NrQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDRlJldGFpbihDTVNhbXBsZUJ1ZmZl
ckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKSkpKSk7CisgICAgICAgICAgICBpZiAo
IW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNhbXBsZUJ1ZmZl
ckdldERhdGFCdWZmZXIgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1
ZmZlclNpemUgPSAwOworICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxv
Y2tCdWZmZXIgPSAwOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0
YUxlbmd0aChtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpKSAvIDI7CisgICAgICAgICAgICBtX2N1
cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICBzaXplX3QgbnVtQnl0ZXNU
b0NvcHlGcm9tU2FtcGxlQmJ1ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVC
bG9ja0J1ZmZlclNpemUgLSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSk7Cisg
ICAgICAgICAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKG1f
c2FtcGxlQmxvY2tCdWZmZXIuZ2V0KCksIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZm
ZXIsIG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYsIChmaXJzdENoYW5uZWwgKyBjdXJyZW50
T2Zmc2V0SW5Tb3VyY2VCdWZmZXIpKSkgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQmxvY2tCdWZm
ZXJDb3B5RGF0YUJ5dGVzIGZpcnN0IGNoYW5uZWwgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2Nr
QnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyICsgbV9zYW1w
bGVCbG9ja0J1ZmZlclNpemUsIG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYsIChzZWNvbmRD
aGFubmVsICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBzZWNvbmQgY2hhbm5lbCBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBudW1CeXRlc1RvQ29weSAtPSBudW1CeXRlc1RvQ29weUZyb21TYW1w
bGVCYnVmOworICAgICAgICAgICAgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyICs9IG51bUJ5
dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNh
bXBsZUJsb2NrQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhID0gZmly
c3RDaGFubmVsOworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6
ZSA9IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcjsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1C
dWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IDE7CisKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1C
dWZmZXJzWzFdLm1EYXRhID0gc2Vjb25kQ2hhbm5lbDsKKyAgICBhdWRpb0J1ZmZlckxpc3QtPm1C
dWZmZXJzWzFdLm1EYXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7Cisg
ICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisg
ICAgKm51bU91dHB1dFBhY2tldHNQdHIgPSAoYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5t
RGF0YUJ5dGVTaXplIC8gbV9zb3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKKyAgICByZXR1
cm4gbm9FcnI7Cit9CisKK3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNz
U2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKENNVGltZSBsb3dXYXRlclRpbWUpCit7Cisg
ICAgaWYgKCFtX2NvbnZlcnRlcikgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IChDTVNhbXBsZUJ1
ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZUdldEhlYWQobV9pbnB1dEJ1
ZmZlclF1ZXVlLmdldCgpKSkpOworICAgICAgICBBU1NFUlQoYnVmZmVyKTsKKworICAgICAgICBt
X2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldFBy
ZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIpOworICAgICAgICBtX2N1cnJlbnRPdXRwdXRQcmVz
ZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFByZXNlbnRhdGlvblRp
bWVTdGFtcChidWZmZXIpOworCisgICAgICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRpb24gPSBDTVNh
bXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKGJ1ZmZlcik7CisgICAgICAgIGlmICghaW5p
dEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRp
b24sIG1fb3V0cHV0Q29kZWNUeXBlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB3aGlsZSAoQ01USU1FX0lTX0lOVkFMSUQobG93V2F0ZXJUaW1lKSB8fCBDTVRJTUVfQ09NUEFS
RV9JTkxJTkUobG93V2F0ZXJUaW1lLCA8LCBDTUJ1ZmZlclF1ZXVlR2V0RHVyYXRpb24obV9pbnB1
dEJ1ZmZlclF1ZXVlLmdldCgpKSkpIHsKKyAgICAgICAgQXVkaW9CdWZmZXJMaXN0IGZpbGxCdWZm
ZXJMaXN0OworCisgICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJzID0gMTsKKyAg
ICAgICAgZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9kZXN0
aW5hdGlvbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKyAgICAgICAgZmlsbEJ1ZmZlckxpc3Qu
bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IChVSW50MzIpbV9kZXN0aW5hdGlvbkJ1ZmZlci5j
YXBhY2l0eSgpOworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSA9IG1f
ZGVzdGluYXRpb25CdWZmZXIuZGF0YSgpOworCisgICAgICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRT
aXplID0gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPyBtX2Rlc3RpbmF0aW9u
Rm9ybWF0Lm1CeXRlc1BlclBhY2tldCA6IG1fbWF4T3V0cHV0UGFja2V0U2l6ZTsKKyAgICAgICAg
VUludDMyIG51bU91dHB1dFBhY2tldHMgPSAoVUludDMyKW1fZGVzdGluYXRpb25CdWZmZXIuY2Fw
YWNpdHkoKSAvIG91dHB1dFBhY2tldFNpemU7CisKKyAgICAgICAgYXV0byBlcnJvciA9IEF1ZGlv
Q29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIobV9jb252ZXJ0ZXIuZ2V0KCksIGF1ZGlvQ29udmVy
dGVyQ29tcGxleElucHV0RGF0YVByb2MsIHRoaXMsICZudW1PdXRwdXRQYWNrZXRzLCAmZmlsbEJ1
ZmZlckxpc3QsIG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnMuZGF0YSgpKTsKKyAgICAg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4
QnVmZmVyIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFudW1PdXRwdXRQYWNrZXRzKQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgYXV0byBidWZmZXIgPSBzYW1wbGVCdWZmZXJXaXRoTnVtUGFja2V0cyhu
dW1PdXRwdXRQYWNrZXRzLCBmaWxsQnVmZmVyTGlzdCk7CisKKyAgICAgICAgYXR0YWNoUHJpbWlu
Z1RyaW1zSWZOZWVkZWQoYnVmZmVyKTsKKworICAgICAgICBlcnJvciA9IENNU2FtcGxlQnVmZmVy
U2V0T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlciwgbV9jdXJyZW50T3V0cHV0UHJl
c2VudGF0aW9uVGltZVN0YW1wKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBDTVNhbXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IENNVGltZSBuYXRpdmVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVy
KTsKKyAgICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01UaW1l
QWRkKG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCwgbmF0aXZlRHVyYXRpb24p
OworCisgICAgICAgIENNVGltZSBvdXRwdXREdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0T3V0
cHV0RHVyYXRpb24oYnVmZmVyKTsKKyAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9u
VGltZVN0YW1wID0gQ01UaW1lQWRkKG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFt
cCwgb3V0cHV0RHVyYXRpb24pOworCisgICAgICAgIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVl
dWUobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgYnVmZmVyKTsKKyAgICAgICAgaWYgKGVycm9y
KSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1w
bGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlRW5x
dWV1ZShtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgUkVMRUFTRV9MT0df
RVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IENNQnVmZmVyUXVldWVFbnF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworCisgICAgcHJv
Y2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShtX2xvd1dhdGVyVGltZSk7Cit9CisK
K3ZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1w
bGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRj
aFF1ZXVlLCBeeworICAgICAgICBpZiAobV9pc0VuY29kaW5nKQorICAgICAgICAgICAgcHJvY2Vz
c1NhbXBsZUJ1ZmZlcihidWZmZXIpOworICAgIH0pOworfQorCitDTVNhbXBsZUJ1ZmZlclJlZiBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpCit7Cisg
ICAgcmV0dXJuIChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJR
dWV1ZUdldEhlYWQobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKK30KKworUmV0YWluUHRy
PENNU2FtcGxlQnVmZmVyUmVmPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRw
dXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVybiBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJl
ZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9vdXRw
dXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IGIxNDdjYTI4ODI5YjBmMTAzMGJk
YTc0YTA4NDI2YzQ1NjVlOTg3MWUuLjQ4ZTkwZGNlMjFiMWNjZjc5M2IxMmFhZDIxOGQ2MDhlMmUx
M2M1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5oCkBAIC0yNCw3ICsyNCw5IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRX
UklURVJERUxFR0FURSkKKworI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKIAog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgpAQCAtMzUsMTAgKzM3LDE2IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAorI2luY2x1ZGUgPENvcmVBdWRp
by9Db3JlQXVkaW9UeXBlcy5oPgorI2luY2x1ZGUgPENvcmVNZWRpYS9DTVRpbWUuaD4KKwogdHlw
ZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiogQ01Gb3JtYXREZXNj
cmlwdGlvblJlZjsKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNQnVmZmVyUXVldWVUcmlnZ2VyVG9r
ZW4gKkNNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW47CiAKIE9CSkNfQ0xBU1MgQVZBc3NldFdyaXRl
cjsKIE9CSkNfQ0xBU1MgQVZBc3NldFdyaXRlcklucHV0OworT0JKQ19DTEFTUyBXZWJBVkFzc2V0
V3JpdGVyRGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWVkaWFUaW1lOwpAQCAt
NDYsNTEgKzU0LDczIEBAIGNsYXNzIE1lZGlhVGltZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I7CiBjbGFzcyBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CiBjbGFzcyBQbGF0Zm9y
bUF1ZGlvRGF0YTsKK2NsYXNzIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcjsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdURjo6RGVzdHJ1Y3Rp
b25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI+IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9u
OjpFYWdlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogYXVkaW9UcmFj
aywgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHZpZGVvVHJhY2spOwogICAgIHN0YXRp
YyBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IGNyZWF0ZShib29sIGhhc0F1ZGlv
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAgIH5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cigpOwotICAgIAotICAgIGJvb2wgc2V0dXBXcml0ZXIoKTsKLSAgICBib29sIHNldFZpZGVvSW5w
dXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICBib29sIHNldEF1ZGlvSW5wdXQoKTsKKwog
ICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOwogICAg
IHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBj
b25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBzaXpl
X3QpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwogICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+JiYpOwogCisgICAgdm9p
ZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmKTsKKwogcHJpdmF0ZToKLSAgICBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcihSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4mJiwgU3RyaW5nJiYgcGF0aCk7CisgICAg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbyk7
CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3Jp
dGVyOwotICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9JbnB1dDsKLSAg
ICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX2F1ZGlvSW5wdXQ7Ci0KLSAgICBTdHJp
bmcgbV9wYXRoOwotICAgIExvY2sgbV92aWRlb0xvY2s7Ci0gICAgTG9jayBtX2F1ZGlvTG9jazsK
LSAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nU2VtYXBob3JlOwotICAgIEJpbmFy
eVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZTsKLSAgICBCaW5hcnlTZW1h
cGhvcmUgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmU7CisgICAgYm9vbCBpbml0aWFsaXpl
KCk7CisKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFj
ayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CisgICAgc3RhdGljIHZvaWQgY29t
cHJlc3NlZEF1ZGlvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmln
Z2VyVG9rZW4pOworCisgICAgdm9pZCBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAgdm9pZCBhcHBl
bmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworCisgICAgYm9vbCBhcHBlbmRDb21wcmVzc2Vk
QXVkaW9TYW1wbGVCdWZmZXIoKTsKKyAgICBib29sIGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBs
ZUJ1ZmZlcigpOworCisgICAgdm9pZCBwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVm
ZmVycygpOworICAgIHZvaWQgcHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMo
KTsKKworICAgIHZvaWQgZmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9u
SWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogICAgIGJvb2wgbV9oYXNT
dGFydGVkV3JpdGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU3RvcHBlZCB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2lzRmlyc3RBdWRpb1NhbXBsZSB7IHRydWUgfTsKLSAgICBkaXNwYXRjaF9x
dWV1ZV90IG1fYXVkaW9QdWxsUXVldWU7Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX3ZpZGVvUHVs
bFF1ZXVlOwotICAgIERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4+IG1fdmlkZW9C
dWZmZXJQb29sOwotICAgIERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4+IG1fYXVk
aW9CdWZmZXJQb29sOworCisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwog
CiAgICAgYm9vbCBtX2lzU3RvcHBpbmcgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOworCisgICAgYm9vbCBtX2hhc0F1
ZGlvOworICAgIGJvb2wgbV9oYXNWaWRlbzsKKworICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7CisgICAgUmV0
YWluUHRyPEFWQXNzZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQ7CisKKyAg
ICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV92aWRlb0Zvcm1hdERlc2NyaXB0
aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1f
dmlkZW9Db21wcmVzc29yOworICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlk
ZW9Bc3NldFdyaXRlcklucHV0OworICAgIENNVGltZSBtX2xhc3RWaWRlb1ByZXNlbnRhdGlvblRp
bWU7CisgICAgQ01UaW1lIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lOworICAgIGJvb2wgbV9oYXNF
bmNvZGVkVmlkZW9TYW1wbGVzIHsgZmFsc2UgfTsKKworICAgIFJldGFpblB0cjxXZWJBVkFzc2V0
V3JpdGVyRGVsZWdhdGU+IG1fd3JpdGVyRGVsZWdhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IGRl
MTA3MmEwMGEzN2NjZDhhMzYxYjc4MDdkYjYxYzIxNzAwYWJmZmIuLjc0YWQ0MzhjYzVhNGRlMTE1
MzYxZTVjYjg0ZmEzMmZkMjI0NGYyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTIzLDcwICsyMywxMDMgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKLQotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCi0KLSNpbXBvcnQgIkF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24uaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIk1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlLmgiCi0jaW1wb3J0ICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKLSNpbXBv
cnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyLmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZBc3NldFdyaXRlcklucHV0Lmg+Ci0jaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
LSNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0KLSNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+Ci0K
LSN1bmRlZiBBVkVuY29kZXJCaXRSYXRlS2V5Ci0jZGVmaW5lIEFWRW5jb2RlckJpdFJhdGVLZXkg
Z2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZGb3JtYXRJREtl
eQotI2RlZmluZSBBVkZvcm1hdElES2V5IGdldEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQot
I3VuZGVmIEFWTnVtYmVyT2ZDaGFubmVsc0tleQotI2RlZmluZSBBVk51bWJlck9mQ2hhbm5lbHNL
ZXkgZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBBVlNhbXBs
ZVJhdGVLZXkKLSNkZWZpbmUgQVZTYW1wbGVSYXRlS2V5IGdldEFWU2FtcGxlUmF0ZUtleVdpdGhG
YWxsYmFjaygpCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShB
VkFTU0VUV1JJVEVSREVMRUdBVEUpCisKKyNpbmNsdWRlICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IuaCIKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5jbHVk
ZSAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZm
ZXJMaXN0LmgiCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXIuaD4KKyNpbmNs
dWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcklucHV0Lmg+CisjaW5jbHVkZSA8QVZGb3Vu
ZGF0aW9uL0FWQXNzZXRXcml0ZXJfUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRp
b24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KKworI2luY2x1ZGUgPHBhbC9j
Zi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25T
b2Z0TGluay5oPgorCitAaW50ZXJmYWNlIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSA6IE5TT2Jq
ZWN0IDxBVkFzc2V0V3JpdGVyRGVsZWdhdGU+IHsKKyAgICBXZWFrUHRyPFdlYkNvcmU6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyPiBtX3dyaXRlcjsKK30KIAotbmFtZXNwYWNlIFdlYkNvcmUg
eworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlciopd3JpdGVyOworLSAodm9pZCljbG9zZTsKIAotdXNpbmcgbmFtZXNwYWNl
IFBBTDsKK0BlbmQKIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxi
YWNrKCkKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgeworfTsKKwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV3JpdGVyOihXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlciopd3JpdGVyCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25f
QVZGb3JtYXRJREtleSgpKQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FW
Rm9ybWF0SURLZXkoKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07CisgICAgaWYgKHNlbGYpCisgICAgICAgIHNlbGYtPm1fd3JpdGVyID0gbWFr
ZVdlYWtQdHIod3JpdGVyKTsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVk
IHRvIGxvYWQgQVZGb3JtYXRJREtleSIpOwotICAgIHJldHVybiBAIkFWRm9ybWF0SURLZXkiOwor
ICAgIHJldHVybiBzZWxmOwogfQogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFWTnVtYmVyT2ZDaGFu
bmVsc0tleVdpdGhGYWxsYmFjaygpCistICh2b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVy
ICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRIZWFkZXJEYXRhOihOU0RhdGEgKilm
cmFnbWVudGVkSGVhZGVyRGF0YQogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9u
X0FWTnVtYmVyT2ZDaGFubmVsc0tleSgpKQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3Vu
ZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgpOworICAgIFVOVVNFRF9QQVJBTShhc3NldFdy
aXRlcik7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBpZiAoYXV0byBzaXpl
ID0gW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pIHsKKyAgICAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRlbGVn
YXRlPihzZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRlc10pLCBzaXplKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+bV93cml0ZXIp
CisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyLT5hcHBlbmREYXRh
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm47CisgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8g
bG9hZCBBVk51bWJlck9mQ2hhbm5lbHNLZXkiKTsKLSAgICByZXR1cm4gQCJBVk51bWJlck9mQ2hh
bm5lbHNLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAgICAgICAgbV93cml0ZXItPmFwcGVuZERh
dGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRlc10p
LCBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3RoXSk7CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAq
Z2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQpYXNzZXRXcml0ZXI6KEFW
QXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQcm9kdWNlRnJhZ21lbnRlZE1lZGlhRGF0YToo
TlNEYXRhICopZnJhZ21lbnRlZE1lZGlhRGF0YSBmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0OihB
VkZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQgKilmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0CiB7
Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCi0g
ICAgICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKKyAgICBVTlVTRURfUEFSQU0oZnJhZ21lbnRl
ZE1lZGlhRGF0YVJlcG9ydCk7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBp
ZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSkgeworICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVkFzc2V0
V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNd
KSwgc2l6ZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYt
Pm1fd3JpdGVyKQorICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlci0+
YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAi
RmFpbGVkIHRvIGxvYWQgQVZTYW1wbGVSYXRlS2V5Iik7Ci0gICAgcmV0dXJuIEAiQVZTYW1wbGVS
YXRlS2V5IjsKKyAgICBpZiAobV93cml0ZXIpCisgICAgICAgIG1fd3JpdGVyLT5hcHBlbmREYXRh
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBb
ZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5ndGhdKTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpnZXRB
VkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQpY2xvc2UKIHsKLSAgICBp
ZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCkpCi0gICAg
ICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgpOwor
ICAgIG1fd3JpdGVyID0gbnVsbHB0cjsKK30KKworQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3VzaW5nIG5hbWVzcGFjZSBQQUw7CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwg
IkZhaWxlZCB0byBsb2FkIEFWRW5jb2RlckJpdFJhdGVLZXkiKTsKLSAgICByZXR1cm4gQCJBVkVu
Y29kZXJCaXRSYXRlS2V5IjsKK1JlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpCit7CisgICAgYXV0byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKGhhc0F1ZGlvLCB3aWR0aCAmJiBoZWlnaHQpKTsKKyAgICBpZiAo
IXdyaXRlci0+aW5pdGlhbGl6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gd3JpdGVyOwogfQogCiBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUqIGF1ZGlvVHJhY2ssIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNr
KQpAQCAtMTAwLDE3OSArMTMzLDI1NCBAQCBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoY29uc3QgTWVkaQogICAgIHJl
dHVybiBjcmVhdGUoISFhdWRpb1RyYWNrLCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotUmVmUHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3Jl
YXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3ZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZv
aWQgKm1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2Vu
KQogewotICAgIE5TU3RyaW5nICpkaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3Jh
cnlEaXJlY3RvcnkoQCJ2aWRlb3MiKTsKLSAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIi8lbGxkLm1wNCIsIENNQ2xvY2tHZXRUaW1lKENNQ2xvY2tH
ZXRIb3N0VGltZUNsb2NrKCkpLnZhbHVlXTsKLSAgICBOU1N0cmluZyAqcGF0aCA9IFtkaXJlY3Rv
cnkgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6ZmlsZW5hbWVdOworICAgIGF1dG8gKndyaXRlciA9
IHN0YXRpY19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKj4obWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIpOworICAgIHdyaXRlci0+cHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBs
ZUJ1ZmZlcnMoKTsKK30KIAotICAgIE5TVVJMICpvdXRwdXRVUkwgPSBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOnBhdGhdOwotICAgIFN0cmluZyBmaWxlUGF0aCA9IFtwYXRoIFVURjhTdHJpbmddOwor
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZEF1ZGlvT3V0cHV0QnVm
ZmVyQ2FsbGJhY2sodm9pZCAqbWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVl
dWVUcmlnZ2VyVG9rZW4pCit7CisgICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7CisgICAg
d3JpdGVyLT5wcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOworfQorCitN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9v
bCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbykKKyAgICA6IG1faGFzQXVkaW8oaGFzQXVkaW8pCisg
ICAgLCBtX2hhc1ZpZGVvKGhhc1ZpZGVvKQoreworfQorCitNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKK3sKKyAgICBjbGVhcigpOworfQor
Citib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKCkKK3sKICAgICBO
U0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBhdXRvIGF2QXNzZXRXcml0ZXIgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhVUkw6b3V0cHV0VVJMIGZp
bGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKKyAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIG1fd3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxv
Y0FWQXNzZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRXaXRoRmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0
IGVycm9yOiZlcnJvcl0pOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
ImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxk
IiwgKGxvbmcpZXJyb3IuY29kZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0byB3cml0ZXIgPSBhZG9wdFJlZigqbmV3IE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFdURk1vdmUoYXZBc3NldFdyaXRlciksIFdURk1vdmUo
ZmlsZVBhdGgpKSk7CisgICAgbV93cml0ZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJBVkFzc2V0
V3JpdGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoV3JpdGVyOiB0aGlzXSk7CisgICAgW21fd3Jp
dGVyLmdldCgpIHNldERlbGVnYXRlOm1fd3JpdGVyRGVsZWdhdGUuZ2V0KCldOwogCi0gICAgaWYg
KGhhc0F1ZGlvICYmICF3cml0ZXItPnNldEF1ZGlvSW5wdXQoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBpZiAod2lkdGggJiYgaGVpZ2h0KSB7Ci0gICAgICAgIGlmICghd3JpdGVy
LT5zZXRWaWRlb0lucHV0KHdpZHRoLCBoZWlnaHQpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgaWYgKG1faGFzQXVkaW8pIHsKKyAgICAgICAgbV9hdWRpb0NvbXByZXNzb3IgPSBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShjb21wcmVzc2VkQXVkaW9PdXRwdXRC
dWZmZXJDYWxsYmFjaywgdGhpcyk7CisgICAgICAgIGlmICghbV9hdWRpb0NvbXByZXNzb3IpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCi0gICAgcmV0dXJuIFdURk1vdmUod3Jp
dGVyKTsKKyAgICBpZiAobV9oYXNWaWRlbykgeworICAgICAgICBtX3ZpZGVvQ29tcHJlc3NvciA9
IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKGtDTVZpZGVvQ29kZWNUeXBlX0gy
NjQsIGNvbXByZXNzZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAg
aWYgKCFtX3ZpZGVvQ29tcHJlc3NvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLU1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4mJiBhdkFzc2V0
V3JpdGVyLCBTdHJpbmcmJiBmaWxlUGF0aCkKLSAgICA6IG1fd3JpdGVyKFdURk1vdmUoYXZBc3Nl
dFdyaXRlcikpCi0gICAgLCBtX3BhdGgoV1RGTW92ZShmaWxlUGF0aCkpCit2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVy
cygpCiB7CisgICAgQVNTRVJUKG1faGFzVmlkZW8pOworICAgIGlmICghbV92aWRlb0Zvcm1hdERl
c2NyaXB0aW9uKSB7CisgICAgICAgIG1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxl
QnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24obV92aWRlb0NvbXByZXNzb3ItPmdldE91dHB1dFNh
bXBsZUJ1ZmZlcigpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgdGhpc10geworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChtX2hhc0F1ZGlvICYmICFtX2F1
ZGlvRm9ybWF0RGVzY3JpcHRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBpZiAoIW1f
aGFzU3RhcnRlZFdyaXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBhcHBlbmRDb21wcmVzc2Vk
U2FtcGxlQnVmZmVycygpOwogfQogCi1NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCkKIHsKLSAgICBjbGVhcigp
OworICAgIEFTU0VSVChtX2hhc0F1ZGlvKTsKKyAgICBpZiAoIW1fYXVkaW9Gb3JtYXREZXNjcmlw
dGlvbikgeworICAgICAgICBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24gPSBDTVNhbXBsZUJ1ZmZl
ckdldEZvcm1hdERlc2NyaXB0aW9uKG1fYXVkaW9Db21wcmVzc29yLT5nZXRPdXRwdXRTYW1wbGVC
dWZmZXIoKSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyksIHRoaXNdIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAobV9oYXNWaWRlbyAmJiAhbV92aWRlb0Zv
cm1hdERlc2NyaXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
c3RhcnRBc3NldFdyaXRlcigpOworICAgICAgICB9KTsKKyAgICB9CisgICAgaWYgKCFtX2hhc1N0
YXJ0ZWRXcml0aW5nKQorICAgICAgICByZXR1cm47CisgICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBs
ZUJ1ZmZlcnMoKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIo
KQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlcigpCiB7
Ci0gICAgaWYgKG1fdmlkZW9JbnB1dCkgewotICAgICAgICBtX3ZpZGVvSW5wdXQuY2xlYXIoKTsK
LSAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3ZpZGVvUHVsbFF1ZXVlKTsKKyAgICBpZiAobV9o
YXNWaWRlbykgeworICAgICAgICBtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0TlMoW1BB
TDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFW
TWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6bV92aWRl
b0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7CisgICAgICAgIFttX3ZpZGVvQXNzZXRXcml0ZXJJ
bnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICAgICAgaWYgKCFb
bV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCld
KSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBm
b3IgdmlkZW8iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBbbV93
cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOwogICAg
IH0KLSAgICBpZiAobV9hdWRpb0lucHV0KSB7Ci0gICAgICAgIG1fYXVkaW9JbnB1dC5jbGVhcigp
OwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fYXVkaW9QdWxsUXVldWUpOworCisgICAgaWYg
KG1faGFzQXVkaW8pIHsKKyAgICAgICAgbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgPSBhZG9wdE5T
KFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlw
ZTpBVk1lZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdzOm5pbCBzb3VyY2VGb3JtYXRIaW50Om1f
YXVkaW9Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKV0pOworICAgICAgICBbbV9hdWRpb0Fzc2V0V3Jp
dGVySW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07CisgICAgICAgIGlm
ICghW21fd3JpdGVyLmdldCgpIGNhbkFkZElucHV0Om1fYXVkaW9Bc3NldFdyaXRlcklucHV0Lmdl
dCgpXSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlciBmYWlsZWQgY2FuQWRkSW5w
dXQgZm9yIGF1ZGlvIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
W21fd3JpdGVyLmdldCgpIGFkZElucHV0Om1fYXVkaW9Bc3NldFdyaXRlcklucHV0LmdldCgpXTsK
ICAgICB9Ci0gICAgaWYgKG1fd3JpdGVyKQotICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogCi0g
ICAgbV9kYXRhID0gbnVsbHB0cjsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG51bGxwdHIpOworICAgIGlmICghW21fd3JpdGVyLmdldCgpIHN0YXJ0V3JpdGluZ10p
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlciBmYWlsZWQgc3RhcnRXcml0aW5nIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV93cml0ZXIuZ2V0KCkgc3RhcnRTZXNzaW9u
QXRTb3VyY2VUaW1lOmtDTVRpbWVaZXJvXTsKKworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVC
dWZmZXJzKCk7CisKKyAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKIH0KIAotYm9vbCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2Vk
QXVkaW9TYW1wbGVCdWZmZXIoKQogewotICAgIEFTU0VSVCghbV92aWRlb0lucHV0KTsKLSAgICAK
LSAgICBOU0RpY3Rpb25hcnkgKmNvbXByZXNzaW9uUHJvcGVydGllcyA9IEB7Ci0gICAgICAgIEFW
VmlkZW9BdmVyYWdlQml0UmF0ZUtleSA6IEAod2lkdGggKiBoZWlnaHQgKiAxMiksCi0gICAgICAg
IEFWVmlkZW9FeHBlY3RlZFNvdXJjZUZyYW1lUmF0ZUtleSA6IEAoMzApLAotICAgICAgICBBVlZp
ZGVvTWF4S2V5RnJhbWVJbnRlcnZhbEtleSA6IEAoMTIwKSwKLSAgICAgICAgQVZWaWRlb1Byb2Zp
bGVMZXZlbEtleSA6IEFWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbAotICAgIH07
Ci0KLSAgICBOU0RpY3Rpb25hcnkgKnZpZGVvU2V0dGluZ3MgPSBAewotICAgICAgICBBVlZpZGVv
Q29kZWNLZXk6IEFWVmlkZW9Db2RlY0gyNjQsCi0gICAgICAgIEFWVmlkZW9XaWR0aEtleTogQCh3
aWR0aCksCi0gICAgICAgIEFWVmlkZW9IZWlnaHRLZXk6IEAoaGVpZ2h0KSwKLSAgICAgICAgQVZW
aWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleTogY29tcHJlc3Npb25Qcm9wZXJ0aWVzCi0gICAg
fTsKLSAgICAKLSAgICBtX3ZpZGVvSW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdy
aXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91
dHB1dFNldHRpbmdzOnZpZGVvU2V0dGluZ3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsKLSAgICBb
bV92aWRlb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOwotICAgIAot
ICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElucHV0Om1fdmlkZW9JbnB1dC5nZXQoKV0pIHsKLSAg
ICAgICAgbV92aWRlb0lucHV0ID0gbnVsbHB0cjsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJ0aGUgdmlkZW8gaW5wdXQgaXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRo
ZSBBVkFzc2V0V3JpdGVyIik7CisgICAgaWYgKCFtX2F1ZGlvQ29tcHJlc3NvcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92aWRlb0lucHV0
LmdldCgpXTsKLSAgICBtX3ZpZGVvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJX
ZWJDb3JlVmlkZW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJ
QUwpOworCisgICAgaWYgKCFbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVN
ZWRpYURhdGFdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGJ1ZmZlciA9IG1f
YXVkaW9Db21wcmVzc29yLT50YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7CisgICAgaWYgKCFidWZm
ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1
dC5nZXQoKSBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0QXVkaW9JbnB1dCgp
Citib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9T
YW1wbGVCdWZmZXIoKQogewotICAgIEFTU0VSVCghbV9hdWRpb0lucHV0KTsKLQotICAgIE5TRGlj
dGlvbmFyeSAqYXVkaW9TZXR0aW5ncyA9IEB7Ci0gICAgICAgIEFWRW5jb2RlckJpdFJhdGVLZXkg
OiBAKDI4MDAwKSwKLSAgICAgICAgQVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRB
QUMpLAotICAgICAgICBBVk51bWJlck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAotICAgICAgICBBVlNh
bXBsZVJhdGVLZXkgOiBAKDIyMDUwKQotICAgIH07Ci0KLSAgICBtX2F1ZGlvSW5wdXQgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlh
VHlwZTpBVk1lZGlhVHlwZUF1ZGlvIG91dHB1dFNldHRpbmdzOmF1ZGlvU2V0dGluZ3Mgc291cmNl
Rm9ybWF0SGludDpuaWxdKTsKLSAgICBbbV9hdWRpb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJ
blJlYWxUaW1lOnRydWVdOwotICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElucHV0Om1f
YXVkaW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV9hdWRpb0lucHV0ID0gbnVsbHB0cjsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgYXVkaW8gaW5wdXQgaXMg
bm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7CisgICAgaWYgKCFtX3Zp
ZGVvQ29tcHJlc3NvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBbbV93cml0
ZXIgYWRkSW5wdXQ6bV9hdWRpb0lucHV0LmdldCgpXTsKLSAgICBtX2F1ZGlvUHVsbFF1ZXVlID0g
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3JlQXVkaW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVl
dWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworCisgICAgaWYgKCFbbV92aWRlb0Fzc2V0V3Jp
dGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIGJ1ZmZlciA9IG1fdmlkZW9Db21wcmVzc29yLT50YWtlT3V0cHV0U2FtcGxl
QnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IG1fbGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0
aW9uVGltZVN0YW1wKGJ1ZmZlci5nZXQoKSk7CisgICAgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUg
PSBDTVNhbXBsZUJ1ZmZlckdldERlY29kZVRpbWVTdGFtcChidWZmZXIuZ2V0KCkpOworICAgIG1f
aGFzRW5jb2RlZFZpZGVvU2FtcGxlcyA9IHRydWU7CisKKyAgICBbbV92aWRlb0Fzc2V0V3JpdGVy
SW5wdXQuZ2V0KCkgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5nZXQoKV07CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXBy
ZXNzZWRTYW1wbGVCdWZmZXJzKCkKK3sKKyAgICB3aGlsZSAoYXBwZW5kQ29tcHJlc3NlZFZpZGVv
U2FtcGxlQnVmZmVyKCkgfHwgYXBwZW5kQ29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKCkpIHsg
fTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0
aW9uTWFya2VyKEFWQXNzZXRXcml0ZXJJbnB1dCAqYXNzZXRXcml0ZXJJbnB1dCwgQ01UaW1lIHBy
ZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lIGRlY29kaW5nVGltZVN0YW1wKQoreworICAgIENN
U2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvID0geyBrQ01UaW1lSW52YWxpZCwgcHJlc2VudGF0
aW9uVGltZVN0YW1wLCBkZWNvZGluZ1RpbWVTdGFtcH07CisKKyAgICBDTVNhbXBsZUJ1ZmZlclJl
ZiBidWZmZXIgPSBOVUxMOworICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCB0cnVlLCBOVUxMLCBOVUxMLCBOVUxMLCAwLCAxLCAm
dGltaW5nSW5mbywgMCwgTlVMTCwgJmJ1ZmZlcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXIgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIgZmFpbGVkIENNU2FtcGxl
QnVmZmVyQ3JlYXRlIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKGJ1ZmZlcik7CisKKyAgICBDTVNldEF0dGFj
aG1lbnQoc2FtcGxlQnVmZmVyLmdldCgpLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0Vu
ZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uLCBrQ0ZCb29sZWFuVHJ1ZSwga0NNQXR0YWNobWVudE1v
ZGVfU2hvdWxkUHJvcGFnYXRlKTsKKyAgICBpZiAoIVthc3NldFdyaXRlcklucHV0IGFwcGVuZFNh
bXBsZUJ1ZmZlcjpzYW1wbGVCdWZmZXIuZ2V0KCldKQorICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZFNhbXBsZUJ1
ZmZlciB0byB3cml0ZXIgaW5wdXQgZmFpbGVkIik7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmFwcGVuZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVkKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1f
aGFzRW5jb2RlZFZpZGVvU2FtcGxlcykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQg
aXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgIGFwcGVuZEVuZHNQcmV2aW91c1Nh
bXBsZUR1cmF0aW9uTWFya2VyKG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpLCBtX2xhc3RW
aWRlb1ByZXNlbnRhdGlvblRpbWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
YmxvY2sgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykgeworICAgICAgICAgICAgYXBwZW5kRW5kc1ByZXZp
b3VzU2FtcGxlRHVyYXRpb25NYXJrZXIobV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCksIG1f
bGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZSwgbV9sYXN0VmlkZW9EZWNvZGluZ1RpbWUpOworICAg
ICAgICAgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IG1hcmtBc0ZpbmlzaGVkXTsKKyAgICAg
ICAgfQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworICAgIFttX3ZpZGVv
QXNzZXRXcml0ZXJJbnB1dCByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6YmxvY2suZ2V0KCldOworfQorCit2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhcHBl
bmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOworICAgIGFwcGVuZEVuZE9mVmlkZW9TYW1wbGVE
dXJhdGlvbklmTmVlZGVkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIoKQoreworICAgIGlmIChtX3dyaXRlcikK
KyAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKKworICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
aWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlv
bkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKK30KKworCiBz
dGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZl
cldpdGhDdXJyZW50VGltZVN0YW1wKENNU2FtcGxlQnVmZmVyUmVmIG9yaWdpbmFsQnVmZmVyKQog
ewogICAgIENNVGltZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRp
bWVDbG9jaygpKTsKICAgICBDTUl0ZW1Db3VudCBjb3VudCA9IDA7CiAgICAgQ01TYW1wbGVCdWZm
ZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIDAsIG5pbCwgJmNvdW50
KTsKLSAgICAKKwogICAgIFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWVJbmZvKGNvdW50
KTsKICAgICBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmlnaW5hbEJ1
ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJmNvdW50KTsKLSAgICAKLSAgICBmb3IgKENN
SXRlbUNvdW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworCisgICAgZm9yIChhdXRvIGkgPSAw
OyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICB0aW1lSW5mb1tpXS5kZWNvZGVUaW1lU3RhbXAg
PSBrQ01UaW1lSW52YWxpZDsKICAgICAgICAgdGltZUluZm9baV0ucHJlc2VudGF0aW9uVGltZVN0
YW1wID0gc3RhcnRUaW1lOwogICAgIH0KLSAgICAKKwogICAgIENNU2FtcGxlQnVmZmVyUmVmIG5l
d0J1ZmZlciA9IG51bGxwdHI7Ci0gICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRl
Q29weVdpdGhOZXdUaW1pbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3JpZ2luYWxCdWZmZXIsIGNv
dW50LCB0aW1lSW5mby5kYXRhKCksICZuZXdCdWZmZXIpOwotICAgIGlmIChlcnJvcikKKyAgICBp
ZiAoYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgb3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5mby5kYXRhKCks
ICZuZXdCdWZmZXIpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5l
d1RpbWluZyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQogICAgIHJldHVybiBhZG9wdENGKG5ld0J1ZmZlcik7CiB9CiAKIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVm
ZmVyUmVmIHNhbXBsZUJ1ZmZlcikKIHsKLSAgICBBU1NFUlQobV92aWRlb0lucHV0KTsKLSAgICBp
ZiAobV9pc1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9oYXNTdGFydGVk
V3JpdGluZykgewotICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7Ci0gICAg
ICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRo
IGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpW21fd3JpdGVyIGVycm9yXSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgW21fd3JpdGVyIHN0YXJ0U2Vzc2lvbkF0U291cmNl
VGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKV07Ci0gICAgICAg
IG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOwotICAgICAgICBSZWZQdHI8TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwotICAgICAgICBbbV92aWRlb0lu
cHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fdmlkZW9QdWxsUXVldWUgdXNp
bmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsK
LSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgaXNS
ZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2NrKTsKLSAgICAgICAg
ICAgICAgICBpZiAobV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fdmlkZW9CdWZmZXJQ
b29sLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwot
ICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6YnVm
ZmVyLmdldCgpXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IHdo
aWxlICh0cnVlKTsKLSAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX3ZpZGVvQnVmZmVy
UG9vbC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBbbV92aWRlb0lucHV0IG1hcmtBc0Zp
bmlzaGVkXTsKLSAgICAgICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZS5z
aWduYWwoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfV07Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgYXV0byBidWZmZXJXaXRoQ3VycmVudFRpbWUgPSBjb3B5U2FtcGxlQnVmZmVyV2l0
aEN1cnJlbnRUaW1lU3RhbXAoc2FtcGxlQnVmZmVyKTsKLSAgICBpZiAoIWJ1ZmZlcldpdGhDdXJy
ZW50VGltZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3ZpZGVvTG9jayk7Ci0gICAgbV92aWRlb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUoYnVmZmVy
V2l0aEN1cnJlbnRUaW1lKSk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3Qgc2V0IHRoZSB0
aW1lc3RhbXBzIGlmIHRoZXkgYXJlIGFscmVhZHkgc2V0LgorICAgIGlmIChhdXRvIGJ1ZmZlcldp
dGhDdXJyZW50VGltZSA9IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFtcChzYW1w
bGVCdWZmZXIpKQorICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+YWRkU2FtcGxlQnVmZmVyKGJ1
ZmZlcldpdGhDdXJyZW50VGltZS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRy
PENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29u
c3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCkBAIC0yODAsNjggKzM4OCwz
OSBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVh
dGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbgogICAgIGF1dG8gYmFzaWNEZXNjcmlwdGlvbiA9
IFdURjo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRlc2NyaXB0aW9u
LnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CiAgICAgQ01Gb3JtYXREZXNjcmlw
dGlvblJlZiBmb3JtYXQgPSBudWxscHRyOwogICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzaWNEZXNjcmlwdGlvbiwg
MCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdCk7Ci0gICAgaWYgKGVycm9yKQorICAgIGlm
IChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAg
IHJldHVybiBhZG9wdENGKGZvcm1hdCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENN
U2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlw
dGlvbnMoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXQsIHNpemVfdCBzYW1wbGVDb3VudCkK
K3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVBdWRpb1Nh
bXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0aW1lLCBz
aXplX3Qgc2FtcGxlQ291bnQpCiB7Ci0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNQ2xvY2tHZXRU
aW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOwotICAgIENNU2FtcGxlQnVmZmVyUmVmIHNh
bXBsZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVCdWZm
ZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEws
IGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQsIHNhbXBsZUNvdW50LCBzdGFydFRpbWUsIE5VTEws
ICZzYW1wbGVCdWZmZXIpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKLX0KLQotdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1B
dWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBBU1NF
UlQobV9hdWRpb0lucHV0KTsKLSAgICBpZiAoKCFtX2hhc1N0YXJ0ZWRXcml0aW5nICYmIG1fdmlk
ZW9JbnB1dCkgfHwgbV9pc1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKICAgICBhdXRvIGZvcm1h
dCA9IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOwogICAgIGlmICgh
Zm9ybWF0KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1faXNGaXJzdEF1ZGlvU2FtcGxlKSB7
Ci0gICAgICAgIGlmICghbV92aWRlb0lucHV0KSB7Ci0gICAgICAgICAgICAvLyBhdWRpby1vbmx5
IHJlY29yZGluZy4KLSAgICAgICAgICAgIGlmICghW21fd3JpdGVyIHN0YXJ0V3JpdGluZ10pIHsK
LSAgICAgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgW21fd3JpdGVyIHN0YXJ0U2Vzc2lvbkF0
U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKV07Ci0g
ICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IGZhbHNlOwotICAgICAgICBSZWZQdHI8TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwotICAgICAgICBbbV9hdWRp
b0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fYXVkaW9QdWxsUXVldWUg
dXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyld
IHsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAoIVttX2F1ZGlvSW5wdXQg
aXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2NrKTsKLSAgICAg
ICAgICAgICAgICBpZiAobV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fYXVkaW9CdWZm
ZXJQb29sLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgp
OwotICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZl
ci5nZXQoKV07Ci0gICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsKLSAgICAgICAgICAgIGlmICht
X2lzU3RvcHBlZCAmJiBtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
ICAgICBbbV9hdWRpb0lucHV0IG1hcmtBc0ZpbmlzaGVkXTsKLSAgICAgICAgICAgICAgICBtX2Zp
bmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfV07CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1
ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVM
TCwgZmFsc2UsIE5VTEwsIE5VTEwsIGZvcm1hdC5nZXQoKSwgc2FtcGxlQ291bnQsIHRvQ01UaW1l
KHRpbWUpLCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ciBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KKyAgICBhdXRv
IGJ1ZmZlciA9IGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKIAotICAgIGF1dG8gc2FtcGxlQnVmZmVy
ID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKGZvcm1hdC5n
ZXQoKSwgc2FtcGxlQ291bnQpOwotICAgIGlmICghc2FtcGxlQnVmZmVyKQotICAgICAgICByZXR1
cm47Ci0gICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRp
b0J1ZmZlckxpc3Qoc2FtcGxlQnVmZmVyLmdldCgpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwLCBkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxpc3Q+KGRhdGEpLmxp
c3QoKSk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm47CisgICAgZXJyb3IgPSBDTVNh
bXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0KGJ1ZmZlci5nZXQoKSwg
a0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2Vi
QXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkpOworICAgIGlmIChlcnJvcikgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyIENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3QgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBy
ZXR1cm4gYnVmZmVyOworfQogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9j
ayk7Ci0gICAgbV9hdWRpb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUoc2FtcGxlQnVmZmVyKSk7
Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRBdWRpb1NhbXBsZUJ1ZmZl
cihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0aW1lLCBzaXplX3Qgc2Ft
cGxlQ291bnQpCit7CisgICAgaWYgKGF1dG8gc2FtcGxlQnVmZmVyID0gY3JlYXRlQXVkaW9TYW1w
bGVCdWZmZXIoZGF0YSwgZGVzY3JpcHRpb24sIHRpbWUsIHNhbXBsZUNvdW50KSkKKyAgICAgICAg
bV9hdWRpb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkpOwog
fQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKQEAg
LTM1MCwzNSArNDI5LDQyIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BS
ZWNvcmRpbmcoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzU3RvcHBlZCA9IHRydWU7CisK
KyAgICBpZiAobV92aWRlb0NvbXByZXNzb3IpCisgICAgICAgIG1fdmlkZW9Db21wcmVzc29yLT5m
aW5pc2goKTsKKyAgICBpZiAobV9hdWRpb0NvbXByZXNzb3IpCisgICAgICAgIG1fYXVkaW9Db21w
cmVzc29yLT5maW5pc2goKTsKKwogICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGluZykKICAgICAg
ICAgcmV0dXJuOwogICAgIEFTU0VSVChbbV93cml0ZXIgc3RhdHVzXSA9PSBBVkFzc2V0V3JpdGVy
U3RhdHVzV3JpdGluZyk7Ci0gICAgaWYgKG1fdmlkZW9JbnB1dCkKLSAgICAgICAgbV9maW5pc2hX
cml0aW5nVmlkZW9TZW1hcGhvcmUud2FpdCgpOwotCi0gICAgaWYgKG1fYXVkaW9JbnB1dCkKLSAg
ICAgICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1hcGhvcmUud2FpdCgpOwogCiAgICAgbV9pc1N0
b3BwaW5nID0gdHJ1ZTsKLSAgICBbbV93cml0ZXIgZmluaXNoV3JpdGluZ1dpdGhDb21wbGV0aW9u
SGFuZGxlcjpbdGhpcywgd2Vha1B0ciA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1B0ciA9IFdURk1vdmUod2Vha1B0
ciksIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0
aCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtQdHIpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKLSAgICAgICAg
ICAgIGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICAgICAgICAgIG1f
ZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgZmx1
c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG1f
aGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIG1faXNGaXJzdEF1ZGlvU2Ft
cGxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgIH0pOwotICAgICAgICBt
X2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgfV07Ci0gICAgbV9maW5pc2hX
cml0aW5nU2VtYXBob3JlLndhaXQoKTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KKyAgICAgICAgW21fd3JpdGVyIGZsdXNoXTsKKyAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIFttX3dyaXRlciBmaW5pc2hXcml0aW5n
V2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMp
XSgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAg
ICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobV9mZXRjaERhdGFD
b21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdU
Rk1vdmUobV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbV9oYXNTdGFydGVk
V3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfV07CisgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMzkyLDYgKzQ3OCwyNCBAQCB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8U2hhcmVkQgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7
CiB9CiAKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAgICAgICAg
bV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gV1RGTW92ZShi
dWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZGF0YS0+YXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTQyODkz
NTIzNjBjYjE3ODAwZGQwNmU2YjViMTUzODc5NjJjNzllCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2lu
Y2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbmNsdWRlIDxWaWRlb1Rvb2xib3gvVlRF
cnJvcnMuaD4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxl
QnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRDb21wcmVzc2lvblNlc3Npb24gKlZU
Q29tcHJlc3Npb25TZXNzaW9uUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I+IGNyZWF0ZShDTVZpZGVvQ29kZWNUeXBlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7CisgICAgflZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvcigpOworCisgICAgdm9pZCBmaW5pc2goKTsKKyAgICB2b2lkIGFkZFNhbXBsZUJ1ZmZl
cihDTVNhbXBsZUJ1ZmZlclJlZik7CisgICAgQ01TYW1wbGVCdWZmZXJSZWYgZ2V0T3V0cHV0U2Ft
cGxlQnVmZmVyKCk7CisgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiB0YWtlT3V0cHV0
U2FtcGxlQnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKENNVmlkZW9Db2RlY1R5cGUpOworCisgICAgYm9vbCBpbml0aWFsaXplKENN
QnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKKworICAg
IHZvaWQgcHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CisgICAgYm9vbCBp
bml0Q29tcHJlc3Npb25TZXNzaW9uKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZik7CisKKyAg
ICBzdGF0aWMgdm9pZCB2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lk
KiwgT1NTdGF0dXMsIFZURW5jb2RlSW5mb0ZsYWdzLCBDTVNhbXBsZUJ1ZmZlclJlZik7CisKKyAg
ICBkaXNwYXRjaF9xdWV1ZV90IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKKyAgICBSZXRhaW5QdHI8
Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBSZXRhaW5QdHI8VlRD
b21wcmVzc2lvblNlc3Npb25SZWY+IG1fdnRTZXNzaW9uOworCisgICAgYm9vbCBtX2lzRW5jb2Rp
bmcgeyBmYWxzZSB9OworCisgICAgQ01WaWRlb0NvZGVjVHlwZSBtX291dHB1dENvZGVjVHlwZTsK
KyAgICBmbG9hdCBtX21heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiB7IDIuMCB9OworICAgIHVu
c2lnbmVkIG1fZXhwZWN0ZWRGcmFtZVJhdGUgeyAzMCB9OworfTsKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjA4ZmU0MzI5NWVmNTJhNjc5MGZmMWRlY2FjYTZmMzBkOWJiYmFmYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisj
aW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFZpZGVvVG9vbGJveC9WVENv
bXByZXNzaW9uU2Vzc2lvbi5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpbXBv
cnQgPHBhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5oPgorCit1c2luZyBuYW1lc3BhY2UgUEFM
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I+IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKENNVmlk
ZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNr
IGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKK3sKKyAgICBhdXRvIGNvbXByZXNzb3Ig
PSBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPihuZXcgVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yKG91dHB1dENvZGVjVHlwZSkpOworICAgIGlmICghY29tcHJl
c3Nvci0+aW5pdGlhbGl6ZShjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29tcHJlc3NvcjsKK30KKworVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlw
ZSBvdXRwdXRDb2RlY1R5cGUpCisgICAgOiBtX3NlcmlhbERpc3BhdGNoUXVldWUgeyBkaXNwYXRj
aF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBE
SVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KKyAgICAsIG1fb3V0cHV0Q29kZWNUeXBlIHsgb3V0cHV0
Q29kZWNUeXBlIH0KK3sKK30KKworVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+VmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yKCkKK3sKKyAgICBpZiAobV9zZXJpYWxEaXNwYXRjaFF1ZXVl
KQorICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSk7Cit9CisK
K2Jvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXplKENNQnVmZmVyUXVl
dWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KQoreworICAg
IENNQnVmZmVyUXVldWVSZWYgb3V0cHV0QnVmZmVyUXVldWU7CisgICAgaWYgKGF1dG8gZXJyb3Ig
PSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVl
dWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1
ZXVlKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIlZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvciB1bmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBxdWV1ZSAlZCIsIGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX291dHB1dEJ1ZmZlclF1
ZXVlID0gb3V0cHV0QnVmZmVyUXVldWU7CisgICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2Vy
KG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwga0NN
QnVmZmVyUXVldWVUcmlnZ2VyX1doZW5EYXRhQmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywgTlVM
TCk7CisKKyAgICBtX2lzRW5jb2RpbmcgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKK3sKKyAgICBkaXNwYXRj
aF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgYXV0byBlcnJvciA9IFZU
Q29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCksIGtDTVRp
bWVJbnZhbGlkKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3Ry
ZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29t
cGxldGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICAgICAgZXJyb3IgPSBD
TUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworCisgICAgICAgIG1faXNFbmNvZGluZyA9IGZhbHNlOworICAgIH0pOwor
fQorCit2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dmlkZW9Db21wcmVzc2lvbkNh
bGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9TU3RhdHVzIHN0YXR1cywgVlRFbmNvZGVJbmZv
RmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRihzdGF0dXMsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHZp
ZGVvQ29tcHJlc3Npb25DYWxsYmFjayBzdGF0dXMgaXMgJWQiLCBzdGF0dXMpOworICAgIGlmIChz
dGF0dXMgIT0gbm9FcnIpCisgICAgICAgIHJldHVybjsKKworICAgIFZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciAqY29tcHJlc3NvciA9IHN0YXRpY19jYXN0PFZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvcio+KHJlZkNvbik7CisKKyAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVl
dWUoY29tcHJlc3Nvci0+bV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgYnVmZmVyKTsKKyAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
Cit9CisKK2Jvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0Q29tcHJlc3Npb25T
ZXNzaW9uKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKK3sK
KyAgICBDTVZpZGVvRGltZW5zaW9ucyBkaW1lbnNpb25zID0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0
aW9uR2V0RGltZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlvbik7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIE5TRGljdGlvbmFyeSAqZW5jb2RlclNwZWNpZmljYXRpb25zID0gbmlsOworI2Vsc2UKKyAg
ICBOU0RpY3Rpb25hcnkgKmVuY29kZXJTcGVjaWZpY2F0aW9ucyA9IEB7KF9fYnJpZGdlIE5TU3Ry
aW5nICopa1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVIYXJkd2FyZUFjY2VsZXJh
dGVkVmlkZW9FbmNvZGVyOkBZRVN9OworI2VuZGlmCisKKyAgICBWVENvbXByZXNzaW9uU2Vzc2lv
blJlZiB2dFNlc3Npb247CisgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVp
Z2h0LCBtX291dHB1dENvZGVjVHlwZSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZillbmNvZGVy
U3BlY2lmaWNhdGlvbnMsIE5VTEwsIE5VTEwsIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjaywgdGhp
cywgJnZ0U2Vzc2lvbik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Np
b25TZXNzaW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4g
Tk87CisgICAgfQorICAgIG1fdnRTZXNzaW9uID0gYWRvcHRDRih2dFNlc3Npb24pOworCisgICAg
ZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJl
c3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwga0NGQm9vbGVhblRydWUpOworICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxU
aW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJv
cGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5
RnJhbWVJbnRlcnZhbER1cmF0aW9uLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKUAobV9tYXhLZXlGcmFt
ZUludGVydmFsRHVyYXRpb24pKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVk
aWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVy
dHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24g
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0
eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZy
YW1lUmF0ZSwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1fZXhwZWN0ZWRGcmFtZVJhdGUpKTsKKyAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0
eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAgIC8v
IEZJWE1FOiBTZXQgdmlkZW8gY29tcHJlc3Npb24gcmF0ZS4KKyAgICBlcnJvciA9IFZUQ29tcHJl
c3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzKG1fdnRTZXNzaW9uLmdldCgpKTsKKyAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICByZXR1cm4gWUVTOworfQorCit2b2lkIFZp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1
ZmZlclJlZiBidWZmZXIpCit7CisgICAgaWYgKCFtX3Z0U2Vzc2lvbikgeworICAgICAgICBpZiAo
IWluaXRDb21wcmVzc2lvblNlc3Npb24oQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlv
bihidWZmZXIpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGltYWdl
QnVmZmVyID0gQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihidWZmZXIpOworICAgIGF1dG8g
cHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1l
U3RhbXAoYnVmZmVyKTsKKyAgICBhdXRvIGR1cmF0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXREdXJh
dGlvbihidWZmZXIpOworICAgIGF1dG8gZXJyb3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29k
ZUZyYW1lKG1fdnRTZXNzaW9uLmdldCgpLCBpbWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0
YW1wLCBkdXJhdGlvbiwgTlVMTCwgdGhpcywgTlVMTCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29t
cHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cit9CisK
K3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1w
bGVCdWZmZXJSZWYgYnVmZmVyKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRj
aFF1ZXVlLCBeeworICAgICAgICBpZiAoIW1faXNFbmNvZGluZykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyKGJ1ZmZlcik7CisgICAgfSk7Cit9CisK
K0NNU2FtcGxlQnVmZmVyUmVmIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z2V0T3V0cHV0
U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9j
YXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0SGVhZChtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgp
KSkpOworfQorCitSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IFZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIGFkb3B0
Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVx
dWV1ZUFuZFJldGFpbihtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsKK30KKworfQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggMzFmYjA5NGE2ZWMyZGQwNjViMTM5NWEwOWRhMjQ1ZTRmNWU4
OTY3Ni4uNjg1Y2JmMTE4NjI2MjUxOWM4YTA5MjMxNDE5NzUzY2FiNjZlYmI3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtMjI4LDYgKzIyOCw3IEBAIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkmIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyCiAgICAgcmV0
dXJuICptX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiB9CiAKKyNpZiBIQVZFKEFWQVNT
RVRXUklURVJERUxFR0FURSkKIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyJiBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjptZWRpYVJlY29yZGVyTWFuYWdlcigpCiB7CiAgICAgaWYgKCFtX3Jl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyKQpAQCAtMjM1LDYgKzIzNiw3IEBAIFJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYVJlY29yZGVy
TWFuYWdlcigpCiAKICAgICByZXR1cm4gKm1fcmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CiB9
CisjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVkaW9U
cmFja1JlbmRlcmVyTWFuYWdlcigpCkBAIC0yNTMsNyArMjU1LDcgQEAgUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2FtcGxl
QnVmZmVyRGkKICAgICByZXR1cm4gKm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsK
IH0KICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiBM
aWJXZWJSVENDb2RlY3NQcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bGliV2ViUlRD
Q29kZWNzUHJveHkoKQpAQCAtMzcxLDYgKzM3Myw3IEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
CiAgICAgICAgIHVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoKS5kaWRSZWNlaXZlTWVzc2Fn
ZUZyb21HUFVQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIG1lZGlhUmVjb3JkZXJN
YW5hZ2VyKCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zNzksNiArMzgyLDcgQEAgYm9vbCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEMKICAgICAgICAgbWVkaWFSZWNvcmRlck1hbmFnZXIoKS5kaWRSZWNlaXZl
UmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KKyNlbmRpZiAvLyBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FU
RSkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBhdWRpb1RyYWNrUmVu
ZGVyZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9u
LCBkZWNvZGVyKTsKQEAgLTM5Niw4ICs0MDAsOCBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQwog
ICAgICAgICBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZUxheWVy
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaWYgUExBVEZPUk0o
Q09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CiAgICAgICAgIGxpYldlYlJUQ0NvZGVjc1Byb3h5KCkuZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDFkOWYz
YTE2Njg5Nzk3ODk3MmQ5YzYxMThkZTI5ODVhZGU2MzZkNjAuLmVkNzE4YjQ4OWY3OTMyYThhNTQ3
OGMwYzY1MzU4YmE1Y2I1MjU0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTE2LDcgKzExNiw5IEBAIHByaXZh
dGU6CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5JiB1c2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5KCk7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgUmVtb3RlTWVk
aWFSZWNvcmRlck1hbmFnZXImIG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCk7CisjZW5kaWYKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJNYW5hZ2VyJiBhdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyKCk7CiAgICAgUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cigpOwpAQCAtMTY4LDcgKzE3MCw5IEBAIHByaXZhdGU6CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9z
ZXNzaW9uSUQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+IG1fdXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKKyNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI+IG1fcmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXI7CisjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFu
YWdlcj4gbV9hdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCBjMmY1Mjg1MTlmNTIyM2FhMGYwMDJj
NDUwMDEyNTY2MjgyZTE4MTI0Li5mODhhMjM5NDRiYzAxNzkwZjVhNjc1NWI2ZDNlZWVlODhhYTJm
YWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyLmgiCiAKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiU2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgpAQCAt
MTM1LDQgKzEzNSw0IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6c3RvcFJlY29yZGluZygp
CiAKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVM
RUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5oCmluZGV4IGZmNWE4Mjk4NGZiMzk2NDFlZDFlNTYxNTQ4OThmOTUyNmM5
YmQ1MmEuLmE4M2RhMzA1NTJlYjQxZWY5NTk0NGRiM2FhNTA0ZmZjYTNmNjgzODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUgIk1lZGlhUmVj
b3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCkBAIC04Miw0
ICs4Miw0IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFW
RShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KaW5k
ZXggNTRiYTY0ZDU2ZmJlYTMwZmNiYjM5NmRhZDVlYTNmYzMwYzk5NWRlZS4uY2UzMmI3MDRlN2Vj
OGM0NzdiZTA1MWUyMGQ3ZDI3YWYwYzRmODIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdl
cy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VU
V1JJVEVSREVMRUdBVEUpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUmVjb3JkZXIgTm90UmVm
Q291bnRlZCB7CiAgICAgQXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyLmNwcAppbmRleCAwYjg0Yjg1MTliYTZmNTA2ZTE4NzY1ZmY2ZDJlNGQwY2MyNmI2
MzZjLi43ZjRjNjZkNmEyMzYyZTUyZTZhMDc2NGU3ODlmNmQyMGU5MTY3MmM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgiCiAKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIu
aAppbmRleCA1NDcxYmJkNDg0ZGQ5YjNkMGM4ZWUzZGQ2MTFjMDVlOTBkMDM2YzdjLi5hYjgwMWJj
MTE0YzQ5MjNlYTlkNzkwZjkyM2M1MmRmNDlhYTExZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUgIk1lZGlhUmVj
b3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJN
YW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAzODdhNDEzNjFjZGJkOWI3
ZWFlMmMzMzczNjUyYTk4ZjQ5MzRlMTc0Li5jNTE4NDEwY2I0OWZhZGE2ODhkMzc3ZDFkN2EwNmNk
ZTNiYWM3OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4K
QEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRF
UkRFTEVHQVRFKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciBOb3RS
ZWZDb3VudGVkIHsKICAgICBDcmVhdGVSZWNvcmRlcihXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJZGVu
dGlmaWVyIGlkLCBib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIC0+IChPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBjcmVhdGlvbkVycm9yKSBBc3luYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAppbmRleCBhY2U2ZDVhM2ZmNjlh
YmVhYmRhMWQ4MjZlYTQ5OTQ1MDE3MTRjOTc4Li4zMGJiYzc5YjM1NjM1OGJiY2Y4ODg2OTJmM2Zl
ZDQxMzEzNzc3NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlc1JlcGxp
ZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAog
bmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMzExYzE2MWU0OGMw
Yzg2ZGY2YWFkNDcwM2EzODU2OTQ1ZmExMzMyNS4uZjVhYzMxODFmNTM5MGJlZWQyZjQwYzFmMWMy
ODBhZDQ0NDJjZDkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlLmgi
CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQog
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0
aW9uLmgiCkBAIC0xMzUsNCArMTM1LDQgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3Rv
cFJlY29yZGluZygpCiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
SEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCA2ZmYy
OTQwNzk5NDdiNmFjOTY2YmU5MGFlNmE4M2M0MDExNDgwNTU3Li4zZDdiZWUyOTY0M2M5OWI1MTBl
N2I4YTRlMDU0MGI3ZWUyMDdhNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTI1LDcgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZB
U1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgpAQCAtNzYsNSArNzYsNSBA
QCBwcml2YXRlOgogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2VuZGlmIC8vIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhB
VkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRl
eCA2Y2IzMjFlZDI1ODk0ODllOWRiMGNiYmQ1YjU1OWIxZTU2YTAzNDlkLi41ZjUwNzVmMTYzN2I0
NTlkZjU1YTdkMjUzNGQ1YjdiZjNiNTk0MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZT4gTWVkaWFSZWNvcmRlclByb3ZpZGVy
OjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkK
IHsKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBI
QVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBpZiAobV91c2VHUFVQcm9jZXNzKQogICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZT4oc3RyZWFtKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDM5MTdjMmI2NTFmY2VkMjYxMjM1ZGUxNTg1MzIyNWY5MDRhZmEzYzkuLmE5
YzdjZjY0Y2FlMTcwOWU5ZWRlMjBhZDZmN2E2NDJlYjQ4ZWE1NGUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAyMC0wNi0wNSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRp
YVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAg
RGlzYWJsZSB0ZXN0cyBvbiBhbGwgcGxhdGZvcm1zIGV4Y2VwdCB0aGUgb25lcyBzdXBwb3J0aW5n
IEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZp
ZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sOgorICAgICAgICBSZW1vdmUgd2ViIGF1
ZGlvIGdlbmVyYXRpb24gc2luY2UgdGhlcmUgc2VlbXMgdG8gYmUgc29tZSB1bnN0YWJpbGl0eSBp
biB3ZWIgYXVkaW8gLT4gc3RyZWFtIC0+IG1lZGlhIHJlY29yZGVyLgorICAgICAgICB3aGljaCBz
aG91bGQgYmUgZml4ZWQgYXMgZm9sbG93LXVwIHNwZWNpZmljIHBhdGNoZXMuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIEVuYWJsZSBydW5uaW5nIHRl
c3RzLgorCiAyMDIwLTA2LTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbWVkaWEtc291cmNlIHN0YXRzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCAxYjMxOTYwOWQzNTI0Njg4NDhlNmJhMzhjOGVmNjQ2YzljYTAzODQzLi45NDdiZmFm
OGMxZjQ2MGJiNzdiMzE4NTQ1ZTIxOGQyZjkzMTEwNGY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTMzMDMsNyArMzMwMywxMCBAQCB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0
dXJlLW5wb3QtdmlkZW8uaHRtbCBbIFNraXAgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvY2Fu
dmFzL3JhcGlkLXJlc2l6aW5nLmh0bWwgWyBTa2lwIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvd2ViZ2wtZHJhdy1idWZmZXJzLmh0bWwgWyBTa2lwIF0KIAotd2Via2l0Lm9y
Zy9iLzE5NzY3MyBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8t
dmlkZW8tZGF0YWF2YWlsYWJsZS5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQorIyBOb3Qg
c3VwcG9ydGVkIGJ5IGRlZmF1bHQKK2h0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAg
XQorZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIFNraXAgXQog
CiAjIFdlYkdMIDIgQ29uZm9ybWFuY2UgU3VpdGUgcnVsZXMgZm9yIHJlZ3VsYXIgYm90cyBwb3N0
IEFOR0xFIGJhY2tlbmQgYWRvcHRpb24uCiAjIERFUVAgaXMgc2tpcHBlZCBvbiB0aGUgbWFpbiBm
bGVldCBvZiBib3RzIGJlY2F1c2Ugb2YgdGhlIGxvbmcgcnVuIHRpbWUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8t
dmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJs
ZS1ncHVwcm9jZXNzLmh0bWwKaW5kZXggMzMzMDZkZTc5NDdiYmI5MjU3Mzk0YzNiYTE5NjIwMWIw
NTg0Nzg4Yi4uODgwMTQ4NjU3ZTI1ZGRlMzNjYjEwOTM0NmQ2Y2JlYWFiN2Y5Y2VmYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFW
LWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1k
YXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbApAQCAtNTYsMTcgKzU2LDcgQEAKICAgICB9CiAK
ICAgICBhc3luY190ZXN0KHQgPT4gewotICAgICAgICBjb25zdCBhYyA9IG5ldyBBdWRpb0NvbnRl
eHQoKTsKLSAgICAgICAgY29uc3Qgb3NjID0gYWMuY3JlYXRlT3NjaWxsYXRvcigpOwotICAgICAg
ICBjb25zdCBkZXN0ID0gYWMuY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOwotICAgICAg
ICBjb25zdCBhdWRpbyA9IGRlc3Quc3RyZWFtOwotICAgICAgICBvc2MuY29ubmVjdChkZXN0KTsK
LQogICAgICAgICBjb25zdCB2aWRlbyA9IGNyZWF0ZVZpZGVvU3RyZWFtKCk7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHModmlkZW8uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgsIDAsICJ2aWRlbyBtZWRp
YXN0cmVhbSBzdGFydHMgd2l0aCBubyBhdWRpbyB0cmFjayIpOwotICAgICAgICBhc3NlcnRfZXF1
YWxzKGF1ZGlvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAxLCAiYXVkaW8gbWVkaWFzdHJlYW0g
c3RhcnRzIHdpdGggb25lIGF1ZGlvIHRyYWNrIik7Ci0gICAgICAgIHZpZGVvLmFkZFRyYWNrKGF1
ZGlvLmdldEF1ZGlvVHJhY2tzKClbMF0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHZpZGVvLmdl
dEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAxLCAidmlkZW8gbWVkaWFzdHJlYW0gc3RhcnRzIHdpdGgg
b25lIGF1ZGlvIHRyYWNrIik7CiAgICAgICAgIGNvbnN0IHJlY29yZGVyID0gbmV3IE1lZGlhUmVj
b3JkZXIodmlkZW8pOwogICAgICAgICBsZXQgbW9kZSA9IDA7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYjQ0ZDgzMjQwMDRmZDE5NDJjYzA2MDQyYTFm
OTlkNWRjYzBhNDJjNi4uNTE2YjUzNjM2NDI4MWJmZjkwZjY5MTU5NGY3M2M2Y2FhMDY4YWZhZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3MTEsNiAr
MTcxMSwxMCBAQCB3ZWJraXQub3JnL2IvMjEyMTcyIFsgQ2F0YWxpbmEgXSBmYXN0L3RleHQvZm9u
dC1jb2xsZWN0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdQogWyBDYXRhbGluYSsgXSBmYXN0L3Rl
eHQvZGVzaWduLXN5c3RlbS11aS0xNS5odG1sIFsgUGFzcyBdCiBbIENhdGFsaW5hKyBdIGZhc3Qv
dGV4dC9kZXNpZ24tc3lzdGVtLXVpLTE2Lmh0bWwgWyBQYXNzIF0KIAorWyBDYXRhbGluYSsgXSBo
dHRwL3dwdC9tZWRpYXJlY29yZGVyIFsgUGFzcyBGYWlsdXJlIF0gCitbIENhdGFsaW5hKyBdIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFBhc3Mg
RmFpbHVyZSBdCitbIENhdGFsaW5hKyBdIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLW1lZGlhLXJl
Y29yZGVyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQorCiB3ZWJraXQub3JnL2IvMjAwMTI4IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC90aGUtdmlkZW8tZWxlbWVudC92aWRlb190aW1ldXBkYXRlX29uX3NlZWsuaHRtbCBbIFRpbWVv
dXQgUGFzcyBdCiAKICMgcmRhcjovLzU1NDA1ODUxIChbIG1hY09TIF0gTGF5b3V0IHRlc3RzIHdl
YmdwdS8qLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYXJlIGZsYWt5IGZhaWx1cmVzLiAoMjAxODI3KSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401321</attachid>
            <date>2020-06-08 02:41:32 -0700</date>
            <delta_ts>2020-06-08 04:49:20 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-206582-20200608114130.patch</filename>
            <type>text/plain</type>
            <size>145215</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAzZWZmMzc5MTZlMzliY2Y3MDY1NmQw
ZTQzY2IxNWQ2NmU3YTEyOWIuLjk3Y2ZmNGJkM2QxMjkyMTk5NzViYWUyYzYzYjJiOWVlMzVmOTAz
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDYtMDcgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTA2LTA3ICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBIQVZF
KFBBWU1FTlRfTUVUSE9EX0JJTExJTkdfQUREUkVTUykgc2hvdWxkIGJlIHRydWUgb24gaU9TCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYmQyMWEyZjdhMjNiZDdmMzQ0ZTdjMDMzYWFlOTliZjIyMGYxZjhhYy4uMmI1
NjBkMzE2OWYxNDllNDEwOWY3NjU1OGM0ZmMzN2MwYjJlZDEzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDk1IEBACisyMDIwLTA2LTA3ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50
IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNjU4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg5ODUzNjg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFWQXNzZXRXcml0ZXJEZWxl
Z2F0ZSBhbGxvd3MgdG8gZ3JhYiByZWNvcmRlZCBkYXRhIHdoZW5ldmVyIHdhbnRlZC4KKyAgICAg
ICAgVGhpcyBkZWxlZ2F0ZSByZXF1aXJlcyBwYXNzaW5nIGNvbXByZXNzZWQgc2FtcGxlcyB0byBB
VkFzc2V0V3JpdGVyLgorICAgICAgICBJbXBsZW1lbnQgdmlkZW8gZW5jb2RpbmcgYW5kIGF1ZGlv
IGVuY29kaW5nIGluIGRlZGljYXRlZCBjbGFzc2VzIGFuZCB1c2UgdGhlc2UgY2xhc3NlcyBiZWZv
cmUgYWRkaW5nIGJ1ZmZlcnMgdG8gQVZBc3NldFdyaXRlci4KKyAgICAgICAgVGhlc2UgY2xhc3Nl
cyBhcmUgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGFuZCBWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IuCisgICAgICAgIFRoZXkgc3VwcG9ydCBBQUMgYW5kIEgyNjQgc28gZmFyIGFuZCBz
aG91bGQgYmUgZnVydGhlciBpbXByb3ZlZCB0byBzdXBwb3J0IG1vcmUgZW5jb2Rpbmcgb3B0aW9u
cy4KKworICAgICAgICBJbnN0YW50aWF0ZSByZWFsIHdyaXRlciBvbmx5IGZvciBwbGF0Zm9ybXMg
c3VwcG9ydGluZyBBVkFzc2V0V3JpdGVyRGVsZWdhdGUsIHNpbmNlIGl0IGlzIG5vdCBzdXBwb3J0
ZWQgZXZlcnl3aGVyZS4KKyAgICAgICAgVGhlIHdyaXRlciwgZG9pbmcgdGhlIHBhY2FrZ2luZywg
aXMgcmVjZWl2aW5nIGNvbXByZXNzZWQgYnVmZmVyIGZyb20gdGhlIGF1ZGlvL3ZpZGVvIGNvbXBy
ZXNzb3JzLgorICAgICAgICBJdCB0aGVuIHNlbmRzIGRhdGEgd2hlbiBiZWluZyByZXF1ZXN0IHRv
IGZsdXNoIHRvIGl0cyBkZWxlZ2F0ZSwgd2hpY2ggd2lsbCBzZW5kIGRhdGEgdG8gdGhlIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyLgorICAgICAgICBUaGUgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIgc3RvcmVzIHRoZSBkYXRhIGluIGEgU2hhcmVkQnVmZmVyIHVudGlsIE1lZGlhUmVjb3Jk
ZXIgYXNrcyBmb3IgZGF0YS4KKworICAgICAgICBOb3RlIHRoYXQsIHdoZW5ldmVyIHdlIHJlcXVl
c3QgZGF0YSwgd2UgZmx1c2ggdGhlIHdyaXRlciBhbmQgaW5zZXJ0IGFuIGVuZCBvZiB2aWRlbyBz
YW1wbGUgdG8gbWFrZSBzdXJlIHZpZGVvIGRhdGEgZ2V0cyBmbHVzaGVkLgorICAgICAgICBUaGVy
ZWZvcmUgZGF0YSBzaG91bGQgbm90IGJlIHJlcXVlc3RlZCB0b28gZmFzdCB0byBnZXQgYWRlcXVh
dGUgdmlkZW8gY29tcHJlc3Npb24uCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0
cy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVN
ZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6fkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5p
c2gpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0
QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNvbXB1dGVCdWZmZXJTaXplRm9yQXVk
aW9Gb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVmZmVyV2l0
aE51bVBhY2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjphdWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRw
dXRQYWNrZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZSk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpn
ZXRPdXRwdXRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBp
bml0V2l0aFdyaXRlcjpdKToKKyAgICAgICAgKC1bV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFz
c2V0V3JpdGVyOmRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YTpdKToKKyAgICAgICAgKC1b
V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIGFzc2V0V3JpdGVyOmRpZFByb2R1Y2VGcmFnbWVudGVk
TWVkaWFEYXRhOmZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQ6XSk6CisgICAgICAgICgtW1dlYkFW
QXNzZXRXcml0ZXJEZWxlZ2F0ZSBjbG9zZV0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXByZXNzZWRB
dWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojpwcm9jZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRp
b1NhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnN0YXJ0QXNzZXRXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3Nl
ZFZpZGVvU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJD
b3JlOjphcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRW5kT2ZWaWRlb1NhbXBs
ZUR1cmF0aW9uSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFtcCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmguCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnZpZGVvQ29tcHJl
c3Npb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z2V0T3V0cHV0U2Ft
cGxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcik6CisKIDIwMjAtMDYtMDcgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtIZWlnaHQgcGVyY2VudGFnZV0gU2tp
cCBhbm9ueW1vdXMgd3JhcHBlcnMgd2hlbiBzZWFyY2hpbmcgZm9yIGZpeGVkIGhlaWdodApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggODNmZDg2MzUzZjZjNGRkMTdkMWY2MWY0NTJhZGUyZDNjNjQ2Mzg3
Mi4uNWExYzBkNjg5MzM4NzRkNGRhYTIxNjlmYTI1OTY1YWQ0YTVmMThlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDYtMDcgIHlvdWVubiBmYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0
ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODk4
NTM2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQWRk
IHNvZnQgbGluayBtYWNyb3MgZm9yIFZpZGVvVG9vbGJveCBhbmQgQXVkaW9Ub29sYm94LgorCisg
ICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFsL2Nm
L0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFsL2NmL0F1ZGlv
VG9vbGJveFNvZnRMaW5rLmg6IEFkZGVkLgorICAgICAgICAqIHBhbC9jZi9Db3JlTWVkaWFTb2Z0
TGluay5jcHA6CisgICAgICAgICogcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg6CisgICAgICAg
ICogcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDogQWRkZWQuCisgICAgICAgICogcGFs
L2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg6IEFkZGVkLgorCiAyMDIwLTA2LTA3ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxF
X1ZJREVPX1RSQUNLIGlmZGVmIGd1YXJkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkZTU3MWI1NDk3M2YzMTBmM2Nj
NGZiNmEwYWJlNjljNWFkMDkyMTQ2Li5hYmY4ZmNhY2ZlYWQ3Mzg0ZmQzNjM5MDg4ZGM4OTcyYjVm
NDMyNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA2LTA3ICB5b3Vlbm4gZmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3Jp
dGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTg5ODUzNjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgIEVuYWJsZSBSZW1vdGVNZWRpYVJlY29yZGVyIG9ubHkgZm9yIHN5c3RlbXMgc3VwcG9y
dGluZyBBVkFzc2V0V3JpdGVyRGVsZWdhdGUuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFS
ZWNvcmRlclByaXZhdGUpOgorCiAyMDIwLTA2LTA3ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtXZWJEcml2ZXJdIEFsbG93IHBsYXRmb3JtLWRlcGVuZGVudCBt
b2RpZmllciBrZXlzIGNvbnZlcnNpb24gdG8gV2ViRXZlbnQ6Ok1vZGlmaWVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oCmluZGV4IDgwZjAwZmNjMmZmMmU3OTBmY2U5OTQwYjEzZjBkZTQ0N2UwM2YwZWMuLjEy
MDRmNjRmMTg4Yjc0NGRmYWM4OTA0M2M0ZWYyMWE2YzQ4MzQwODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2
ZS5oCkBAIC01NDIsNiArNTQyLDEwIEBACiAjZGVmaW5lIEhBVkVfT1NfU0lHTlBPU1QgMQogI2Vu
ZGlmCiAKKyNpZiAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElPUykpICYmIChkZWZpbmVkIF9faGFzX2luY2x1
ZGUgJiYgX19oYXNfaW5jbHVkZSg8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXJfUHJpdmF0ZS5o
PikpCisjZGVmaW5lIEhBVkVfQVZBU1NFVFdSSVRFUkRFTEVHQVRFIDEKKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShB
UFBMRVRWKQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxFX1RJVExFXzAgMQogI2RlZmlu
ZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxFX1RJVExFXzQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVy
LmNwcAppbmRleCA0NGM5ZDA3YTliOTc1MGQ2NjI2ZWI3NTg3ZWFiYzUxM2Y0MzZiOGIzLi44ODRh
NDA3OTBhNDZhODMyNjI2ZTBmYTBlZWJiOWM5ZDlmNDRjYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclBy
b3ZpZGVyLmNwcApAQCAtMzQsNyArMzQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6
Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCiB7
CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgcmV0dXJuIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlKHN0cmVhbSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShzdHJlYW0pOworICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Zjk4
OTc3MzdkODgyZDhlNGEyNzAwMTBkMmVhNTBhMDIxMTkyNGEwLi41YjAyYjUxMzAwYTRkMGNkNWQ5
ZDgyZTgyYjRmMGNiNzdiZGI2NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFM
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTksNiArMTE5LDkgQEAKIAkJMkUxMzQyQ0My
MTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNBMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtp
dFNvZnRMaW5rLmggKi87IH07CiAJCTJFMTM0MkNEMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNv
ZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkUxMzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi87IH07CiAJCTMx
MzA4QjE0MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMwOEIxMzIwQTIxNzA1MDAzRkI5
MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovOyB9OworCQk0MTZFOTk1MzIzREFFNkJFMDBFODcx
Q0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTEyM0RBRTZCRDAwRTg3MUNCIC8qIEF1ZGlvVG9v
bGJveFNvZnRMaW5rLmNwcCAqLzsgfTsKKwkJNDE2RTk5NTQyM0RBRTZCRTAwRTg3MUNCIC8qIEF1
ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExp
bmsuaCAqLzsgfTsKKwkJNDFFMUYzNDQyNDhBNkEwMDAwMjJENURFIC8qIFZpZGVvVG9vbGJveFNv
ZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNkU5OTU1MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgKi87
IH07CiAJCTQ0Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Mjk1NkNDMjE4QTcyREUwMDgw
REI1NCAvKiBSZXZlYWxTUEkuaCAqLzsgfTsKIAkJNDQ1MEZDOUYyMUY1RjYwMjAwNERGQTU2IC8q
IFF1aWNrTG9va1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5r
Lm1tICovOyB9OwogCQk0NDUwRkNBMDIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExp
bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBG
QzlFMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovOyB9OwpAQCAtMzAw
LDYgKzMwMywxMCBAQAogCQkyRTEzNDJDQjIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGlu
ay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJS2l0U29mdExp
bmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzA4QjEzMjBBMjE3MDUwMDNG
QjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVByZXZpZXdT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxMTlBNzgyMENDQjVGRjAwMkM2
REM5IC8qIFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBX
ZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0
TGluay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkU5OTUyMjNEQUU2QkUw
MEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9Ub29sYm94U29m
dExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZFOTk1NjIzREFFRkY3
MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0IC8qIFJldmVhbFNQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXZlYWxTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5r
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVpY2tMb29rU29m
dExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlFMjFGNUY2MDIw
MDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBRdWlja0xvb2tTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTQxLDggKzU0OCwxMiBAQAogCQkwQ0Y5OUNBNTFGNzM4NDFDMDA3RUU3OTMgLyogY2YgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNkU5OTUxMjNE
QUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi8sCisJCQkJNDE2RTk5
NTIyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi8sCiAJCQkJMENG
OTlDQTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLywKIAkJCQkw
Q0Y5OUNBNzFGNzM4NDM3MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExpbmsuaCAqLywKKwkJCQk0
MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovLAor
CQkJCTQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5oICov
LAogCQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03
MzUsNiArNzQ2LDcgQEAKIAkJCQkyOTNFRTRBOTI0MTU0RjhGMDA0NzQ5M0QgLyogQWNjZXNzaWJp
bGl0eVN1cHBvcnRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxOEIyMkIzNTk4
OTAwOEQwRThCIC8qIEFwcFNTT1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzZDQTlE
NjIyQjg1NEFCMDAzMDE0M0MgLyogQXBwU1NPU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTZF
OTk1NDIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJEMDJFOTNDMjA1NkZBQTcwMEExMzc5NyAvKiBBdWRpb1Rvb2xib3hTUEkuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3MkExMDc4MjJCNDU2RjUwMEY0MTBDOCAvKiBBdXRoS2l0U1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzdFODdCMjIyNkE0NjAzMDBBMkFGRjAgLyogQVZGb3Vu
ZGF0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovLApAQCAtOTUzLDYgKzk2NSw3IEBACiAJCQlm
aWxlcyA9ICgKIAkJCQkyOTNFRTRBODI0MTU0RjhGMDA0NzQ5M0QgLyogQWNjZXNzaWJpbGl0eVN1
cHBvcnRTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1N0ZEMzE4QTIyQjM1OTNFMDA4
RDBFOEIgLyogQXBwU1NPU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTZFOTk1MzIz
REFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDc3RTg3QjEyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEM1RkZGMEYxRjc4RDlEQTAwOUVGRjFBIC8qIENsb2NrQ00u
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwQ0Y5OUNBODFGNzM4NDM3MDA3RUU3OTMgLyogQ29yZU1l
ZGlhU29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NjcsNiArOTgwLDcgQEAKIAkJCQk0
NEUxQThCMDIxRkE1NEVCMDBDMzA0OEUgLyogTG9va3VwU29mdExpbmsubW0gaW4gU291cmNlcyAq
LywKIAkJCQk1QzdDNzg3NDIzQUMzRTc3MDA2NUY0N0UgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25T
b2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBDRjk5Q0E0MUY3MzYzNzUwMDdFRTc5MyAv
KiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFFMUYzNDQy
NDhBNkEwMDAwMjJENURFIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEQUNCMzYwMjM4NzQyNUIwMDE4RDdDRSAvKiBNZWRpYVRvb2xib3hTb2Z0TGluay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUY2M0NBMDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tp
dFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTExNzVCNEYxRjZCMzM3MzAwQzRCOUYw
IC8qIFBvcHVwTWVudS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2Y1NTA1NmFj
ZGE2ZjU2NTNhZGM3ZTE3ZWMwMmEyZDgyNmU0NDdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQVZGT1VO
REFUSU9OKQorCisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+CisjaW5j
bHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+CisKKyNpbmNsdWRlIDx3dGYvU29mdExp
bmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29s
Ym94KQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9vbGJveCwg
QXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0Zvcm1hdFByb3BlcnR5SUQg
aW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5TcGVjaWZpZXJTaXplLCBjb25zdCB2b2lkKiBpblNwZWNp
ZmllciwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91dFByb3BlcnR5RGF0YSks
IChpblByb3BlcnR5SUQsIGluU3BlY2lmaWVyU2l6ZSwgaW5TcGVjaWZpZXIsIGlvUHJvcGVydHlE
YXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NTdGF0dXMsIChjb25zdCBB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0LCBjb25zdCBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQsIEF1ZGlvQ29udmVydGVy
UmVmKiBvdXRBdWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwgaW5EZXN0aW5hdGlvbkZv
cm1hdCwgb3V0QXVkaW9Db252ZXJ0ZXIpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
UEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHksIE9TU3RhdHVzLCAo
QXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0
eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGluUHJvcGVydHlEYXRhU2l6ZSwgY29uc3Qgdm9pZCog
aW5Qcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9wZXJ0eUlELCBpblByb3Bl
cnR5RGF0YVNpemUsIGluUHJvcGVydHlEYXRhKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5LCBPU1N0YXR1
cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlvQ29udmVydGVyUHJv
cGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiogaW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBv
dXRQcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9wZXJ0eUlELCBpb1Byb3Bl
cnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkpCisKKyNlbmRpZiAvLyBVU0UoQVZGT1VOREFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hT
b2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGlu
ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA3MzExODcxNzRhYzE1NTQ0MzcxZGVlMDNiMTQzMmUzZTY1NjMyZTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJv
eFNvZnRMaW5rLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4K
KworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94KQorCitT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252
ZXJ0ZXJHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29u
dmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIqIGlv
UHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0
ZXIsIGluUHJvcGVydHlJRCwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQor
I2RlZmluZSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9B
dWRpb0NvbnZlcnRlckdldFByb3BlcnR5CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQ
QUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJOZXcsIE9TU3RhdHVzLCAoY29uc3QgQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpblNvdXJjZUZvcm1hdCwgY29uc3QgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uKiBpbkRlc3RpbmF0aW9uRm9ybWF0LCBBdWRpb0NvbnZlcnRlclJl
Ziogb3V0QXVkaW9Db252ZXJ0ZXIpLCAoaW5Tb3VyY2VGb3JtYXQsIGluRGVzdGluYXRpb25Gb3Jt
YXQsIG91dEF1ZGlvQ29udmVydGVyKSkKKyNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJOZXcgc29mdExp
bmtfQXVkaW9Ub29sYm94X0F1ZGlvQ29udmVydGVyTmV3CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSwgT1NT
dGF0dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRl
clByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5Qcm9wZXJ0eURhdGFTaXplLCBjb25z
dCB2b2lkKiBpblByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQs
IGluUHJvcGVydHlEYXRhU2l6ZSwgaW5Qcm9wZXJ0eURhdGEpKQorI2RlZmluZSBBdWRpb0NvbnZl
cnRlclNldFByb3BlcnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0NvbnZlcnRlclNldFBy
b3BlcnR5CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCwg
QXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0Zvcm1hdFByb3BlcnR5SUQg
aW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5TcGVjaWZpZXJTaXplLCBjb25zdCB2b2lkKiBpblNwZWNp
ZmllciwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91dFByb3BlcnR5RGF0YSks
IChpblByb3BlcnR5SUQsIGluU3BlY2lmaWVyU2l6ZSwgaW5TcGVjaWZpZXIsIGlvUHJvcGVydHlE
YXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKKyNkZWZpbmUgQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0
eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eQorCisKKyNlbmRp
ZiAvLyBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmNwcAppbmRleCAxOTY5MjkxYTgxZTI0NThkYmE3ODAzNWNlOThlZDE0
ZmM3NzU1OWYxLi45MmVhNzY4ZmZkZTE4ZWViZjE0ODY0Yzk3ZjE0OTkyNzJiMDRmOTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcApAQCAt
NDYsNiArNDYsNyBAQCBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBDb3JlTWVkaWEsIFBBTF9FWFBPUlQpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRl
cywgT1NTdGF0dXMsIChDTUJsb2NrQnVmZmVyUmVmIHRoZVNvdXJjZUJ1ZmZlciwgc2l6ZV90IG9m
ZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIHZvaWQqIGRlc3RpbmF0aW9uKSwgKHRoZVNv
dXJjZUJ1ZmZlciwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBkZXN0aW5hdGlvbiksIFBBTF9F
WFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENv
cmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgsIHNpemVfdCwgKENNQmxvY2tCdWZm
ZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZlciksIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZl
clJlcGxhY2VEYXRhQnl0ZXMsIE9TU3RhdHVzLCAoY29uc3Qgdm9pZCogc291cmNlQnl0ZXMsIENN
QmxvY2tCdWZmZXJSZWYgZGVzdGluYXRpb25CdWZmZXIsIHNpemVfdCBvZmZzZXRJbnRvRGVzdGlu
YXRpb24sIHNpemVfdCBkYXRhTGVuZ3RoKSwgKHNvdXJjZUJ5dGVzLCBkZXN0aW5hdGlvbkJ1ZmZl
ciwgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBkYXRhTGVuZ3RoKSwgUEFMX0VYUE9SVCkKIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUZv
cm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9uYXJ5UmVmLCAoQ01Gb3JtYXRE
ZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVy
R2V0VHlwZUlELCBDRlR5cGVJRCwgKHZvaWQpLCAoKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1
ZmZlckdldERhdGFCdWZmZXIsIENNQmxvY2tCdWZmZXJSZWYsIChDTVNhbXBsZUJ1ZmZlclJlZiBz
YnVmKSwgKHNidWYpLCBQQUxfRVhQT1JUKQpAQCAtMTMzLDkgKzEzNCwxMSBAQCBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJR
dWV1ZURlcXVldWVBbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVFbnF1ZXVlLCBPU1N0YXR1cywgKENNQnVmZmVy
UXVldWVSZWYgcXVldWUsIENNQnVmZmVyUmVmIGJ1ZmZlciksIChxdWV1ZSwgYnVmZmVyKSwgUEFM
X0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
Q29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlSXNFbXB0eSwgQm9vbGVhbiwgKENNQnVmZmVyUXVldWVS
ZWYgcXVldWUpLCAocXVldWUpLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRCdWZmZXJD
b3VudCwgQ01JdGVtQ291bnQsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
Q29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZm
ZXJzLCBjb25zdCBDTUJ1ZmZlckNhbGxiYWNrcyAqLCAoKSwgKCksIFBBTF9FWFBPUlQpCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01C
dWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTUJ1ZmZl
clF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0
RW5kUHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVl
KSwgKHF1ZXVlKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXJXaXRo
SW50ZWdlclRocmVzaG9sZCwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlLCBDTUJ1
ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIHRyaWdnZXJDYWxsYmFjaywgdm9pZCogdHJpZ2dlclJl
ZmNvbiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDb25kaXRpb24gdHJpZ2dlckNvbmRpdGlvbiwgQ01J
dGVtQ291bnQgdHJpZ2dlclRocmVzaG9sZCwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiogdHJp
Z2dlclRva2VuT3V0KSwgKHF1ZXVlLCB0cmlnZ2VyQ2FsbGJhY2ssIHRyaWdnZXJSZWZjb24sIHRy
aWdnZXJDb25kaXRpb24sIHRyaWdnZXJUaHJlc2hvbGQsIHRyaWdnZXJUb2tlbk91dCksIFBBTF9F
WFBPUlQpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENv
cmVNZWRpYSwgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJR
dWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSksIFBBTF9FWFBPUlQpCiAKIFNPRlRfTElOS19DT05TVEFO
VF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2ht
ZW50S2V5X0RvTm90RGlzcGxheSwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxl
QXR0YWNobWVudEtleV9Ob3RTeW5jLCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKQEAgLTE0OSw2
ICsxNTIsOSBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobQogU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRL
ZXlfRGlzcGxheUltbWVkaWF0ZWx5LCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKIFNPRlRfTElO
S19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1w
bGVBdHRhY2htZW50S2V5X0lzRGVwZW5kZWRPbkJ5T3RoZXJzLCBDRlN0cmluZ1JlZiwgUEFMX0VY
UE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29y
ZU1lZGlhLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1l
ZCwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtl
eV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYsIFBBTF9FWFBPUlQpCitT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwg
a0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9HcmFkdWFsRGVjb2RlclJlZnJlc2gsIENGU3Ry
aW5nUmVmLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBDb3JlTWVkaWEsIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNo
bWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKIAog
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEs
IGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX0VmZmVjdGl2ZVJhdGVDaGFuZ2VkLCBDRlN0cmluZ1Jl
ZiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1lSnVtcGVkLCBDRlN0
cmluZ1JlZiwgUEFMX0VYUE9SVCkKQEAgLTE2Myw2ICsxNjksOCBAQCBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01BdWRpb1NhbXBsZUJ1
ZmZlckNyZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBD
b3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3Qs
IE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZBbGxvY2F0b3JSZWYgYmJ1ZlN0
cnVjdEFsbG9jYXRvciwgQ0ZBbGxvY2F0b3JSZWYgYmJ1Zk1lbW9yeUFsbG9jYXRvciwgdWludDMy
X3QgZmxhZ3MsIGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCAqYnVmZmVyTGlzdCksIChzYnVmLCBiYnVm
U3RydWN0QWxsb2NhdG9yLCBiYnVmTWVtb3J5QWxsb2NhdG9yLCBmbGFncywgYnVmZmVyTGlzdCks
IFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhUmVhZHksIE9TU3RhdHVzLCAoQ01T
YW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBj
b25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGFzYmQsIHNpemVfdCBsYXlvdXRTaXpl
LCBjb25zdCBBdWRpb0NoYW5uZWxMYXlvdXQqIGxheW91dCwgc2l6ZV90IG1hZ2ljQ29va2llU2l6
ZSwgY29uc3Qgdm9pZCogbWFnaWNDb29raWUsIENGRGljdGlvbmFyeVJlZiBleHRlbnNpb25zLCBD
TUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYqIG91dERlc2MpLCAoYWxsb2NhdG9yLCBhc2JkLCBs
YXlvdXRTaXplLCBsYXlvdXQsIG1hZ2ljQ29va2llU2l6ZSwgbWFnaWNDb29raWUsIGV4dGVuc2lv
bnMsIG91dERlc2MpLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1h
Z2ljQ29va2llLCBjb25zdCB2b2lkKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNj
LCBzaXplX3QqIHNpemVPdXQpLCAoZGVzYywgc2l6ZU91dCksIFBBTF9FWFBPUlQpCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01BdWRp
b0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdCwgY29uc3QgQXVkaW9G
b3JtYXRMaXN0SXRlbSAqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVz
YyksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2ssIENNQ2xvY2tSZWYsICh2
b2lkKSwgKCksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldFRpbWUsIENNVGltZSwgKENNQ2xvY2tS
ZWYgY2xvY2spLCAoY2xvY2spLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ2FsbEZvckVh
Y2hTYW1wbGUsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgT1NTdGF0dXMgKCog
Q01TQU1QTEVCVUZGRVJDQUxMX05PRVNDQVBFIGNhbGxiYWNrKSggQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyLCBDTUl0ZW1Db3VudCBpbmRleCwgdm9pZCAqcmVmY29uKSwgdm9pZCAqcmVm
Y29uKSwgKHNidWYsIGNhbGxiYWNrLCByZWZjb24pLCBQQUxfRVhQT1JUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCmluZGV4IDI3MWRmNjJkYzhmYWY2
ODBjZWQxYzk4NTMyZTBjOTMwNzliNzZkZGYuLjg0MjkzMzI5MjMxNGQ4MDNiMmRmMTYzOTRlMmJi
ZGI4NmFkNTc4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmgKQEAgLTQ5LDYgKzQ5LDggQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
UEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXQKICNkZWZp
bmUgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tC
dWZmZXJDb3B5RGF0YUJ5dGVzCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENv
cmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgsIHNpemVfdCwgKENNQmxvY2tCdWZm
ZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZlcikpCiAjZGVmaW5lIENNQmxvY2tCdWZmZXJHZXRE
YXRhTGVuZ3RoIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aAor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZm
ZXJSZXBsYWNlRGF0YUJ5dGVzLCBPU1N0YXR1cywgKGNvbnN0IHZvaWQqIHNvdXJjZUJ5dGVzLCBD
TUJsb2NrQnVmZmVyUmVmIGRlc3RpbmF0aW9uQnVmZmVyLCBzaXplX3Qgb2Zmc2V0SW50b0Rlc3Rp
bmF0aW9uLCBzaXplX3QgZGF0YUxlbmd0aCksIChzb3VyY2VCeXRlcywgZGVzdGluYXRpb25CdWZm
ZXIsIG9mZnNldEludG9EZXN0aW5hdGlvbiwgZGF0YUxlbmd0aCkpCisjZGVmaW5lIENNQmxvY2tC
dWZmZXJSZXBsYWNlRGF0YUJ5dGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyUmVw
bGFjZURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRpY3Rpb25hcnlSZWYsIChD
TUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCiAjZGVmaW5lIENNRm9ybWF0RGVz
Y3JpcHRpb25HZXRFeHRlbnNpb25zIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0
aW9uR2V0RXh0ZW5zaW9ucwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3Jl
TWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0VHlwZUlELCBDRlR5cGVJRCwgKHZvaWQpLCAoKSkKQEAg
LTIyNSwxMCArMjI3LDE0IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0QnVmZmVyQ291bnQsIENNSXRlCiAjZGVmaW5lIENNQnVm
ZmVyUXVldWVHZXRCdWZmZXJDb3VudCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CdWZmZXJRdWV1ZUdl
dEJ1ZmZlckNvdW50CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRp
YSwgQ01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChD
TUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUdl
dEZpcnN0UHJlc2VudGF0aW9uVGltZVN0YW1wIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1
ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25UaW1lU3RhbXAKK1NPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0
ZWRTYW1wbGVCdWZmZXJzLCBjb25zdCBDTUJ1ZmZlckNhbGxiYWNrcyAqLCAoKSwgKCkpCisjZGVm
aW5lIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMgc29m
dExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBs
ZUJ1ZmZlcnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBD
TUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTUJ1ZmZl
clF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUdldEVuZFBy
ZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3JlTWVkaWFfQ01CdWZmZXJRdWV1ZUdldEVu
ZFByZXNlbnRhdGlvblRpbWVTdGFtcAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNo
b2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUsIENNQnVmZmVyUXVldWVUcmln
Z2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNrLCB2b2lkKiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZl
clF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmlnZ2VyQ29uZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmln
Z2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKiB0cmlnZ2VyVG9rZW5PdXQp
LCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywgdHJpZ2dlclJlZmNvbiwgdHJpZ2dlckNvbmRpdGlv
biwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dlclRva2VuT3V0KSkKICNkZWZpbmUgQ01CdWZmZXJR
dWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQgc29mdExpbmtfQ29yZU1lZGlh
X0NNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZU1hcmtF
bmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCisj
ZGVmaW5lIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1
ZmZlclF1ZXVlTWFya0VuZE9mRGF0YQogCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQ
QUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERpc3BsYXksIENGU3Ry
aW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxheSBnZXRf
Q29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5KCkKQEAgLTI1OCw2
ICsyNjQsMTUgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEs
IGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQKICNkZWZpbmUga0NNVGltZWJhc2VO
b3RpZmljYXRpb25fVGltZUp1bXBlZCBnZXRfQ29yZU1lZGlhX2tDTVRpbWViYXNlTm90aWZpY2F0
aW9uX1RpbWVKdW1wZWQoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3Jl
TWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVk
LCBDRlN0cmluZ1JlZikKICNkZWZpbmUga0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRp
b25fQnVmZmVyQ29uc3VtZWQgZ2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJDb25zdW1lck5v
dGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRzUHJldmlv
dXNTYW1wbGVEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckF0
dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb24gZ2V0X0NvcmVNZWRpYV9rQ01T
YW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0VuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uKCkKK1NP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVCdWZm
ZXJBdHRhY2htZW50S2V5X0dyYWR1YWxEZWNvZGVyUmVmcmVzaCwgQ0ZTdHJpbmdSZWYpCisjZGVm
aW5lIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERlY29kZXJSZWZyZXNoIGdl
dF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9HcmFkdWFsRGVjb2RlclJl
ZnJlc2goKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGdl
dF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVyYXRpb25BdFN0
YXJ0LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUgZ2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJB
dHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3RhcnQgZ2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVC
dWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3RhcnQoKQorCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9u
R2V0TWFnaWNDb29raWUsIGNvbnN0IHZvaWQqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVm
IGRlc2MsIHNpemVfdCogc2l6ZU91dCksIChkZXNjLCBzaXplT3V0KSkKKyNkZWZpbmUgQ01BdWRp
b0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVk
aW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFt
QmFzaWNEZXNjcmlwdGlvbiwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uICosIChD
TUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKICNkZWZpbmUgQ01BdWRp
b0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzb2Z0TGlua19Db3Jl
TWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbgog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZm
ZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2ssIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0
dXJlQWxsb2NhdG9yLCB2b2lkKiBtZW1vcnlCbG9jaywgc2l6ZV90IGJsb2NrTGVuZ3RoLCBDRkFs
bG9jYXRvclJlZiBibG9ja0FsbG9jYXRvciwgY29uc3QgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2Nr
U291cmNlKiBjdXN0b21CbG9ja1NvdXJjZSwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRh
dGFMZW5ndGgsIENNQmxvY2tCdWZmZXJGbGFncyBmbGFncywgQ01CbG9ja0J1ZmZlclJlZiogYmxv
Y2tCdWZmZXJPdXQpLCAoc3RydWN0dXJlQWxsb2NhdG9yLCBtZW1vcnlCbG9jaywgYmxvY2tMZW5n
dGgsIGJsb2NrQWxsb2NhdG9yLCBjdXN0b21CbG9ja1NvdXJjZSwgb2Zmc2V0VG9EYXRhLCBkYXRh
TGVuZ3RoLCBmbGFncywgYmxvY2tCdWZmZXJPdXQpKQpAQCAtMjY2LDYgKzI4MSw4IEBAIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdl
dEF1ZGlvQnVmZmVyTGlzdFdpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJM
aXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVm
ZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldE51bVNh
bXBsZXMsIENNSXRlbUNvdW50LCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKICNk
ZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNh
bXBsZUJ1ZmZlckdldE51bVNhbXBsZXMKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVjb2RhYmxl
Rm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVtICosIChDTUF1ZGlvRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZGVzYyksIChkZXNjKSkKKyNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9u
R2V0UmljaGVzdERlY29kYWJsZUZvcm1hdCBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdAogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZl
ckZvclJhbmdlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01TYW1wbGVC
dWZmZXJSZWYgc2J1ZiwgQ0ZSYW5nZSBzYW1wbGVSYW5nZSwgQ01TYW1wbGVCdWZmZXJSZWYqIHNC
dWZPdXQpLCAoYWxsb2NhdG9yLCBzYnVmLCBzYW1wbGVSYW5nZSwgc0J1Zk91dCkpCiAjZGVmaW5l
IENNU2FtcGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlIHNvZnRMaW5rX0NvcmVNZWRp
YV9DTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZQogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlU2l6
ZUFycmF5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUNvdW50IHNp
emVBcnJheUVudHJpZXMsIHNpemVfdCogc2l6ZUFycmF5T3V0LCBDTUl0ZW1Db3VudCogc2l6ZUFy
cmF5RW50cmllc05lZWRlZE91dCksIChzYnVmLCBzaXplQXJyYXlFbnRyaWVzLCBzaXplQXJyYXlP
dXQsIHNpemVBcnJheUVudHJpZXNOZWVkZWRPdXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZGJhMzc2MTc3
YTBmZTc4MGUyMWUzNzczYjA4NmFjMmE1YjE5MTMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKQEAgLTAsMCArMSw0
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQVZGT1VO
REFUSU9OKQorCisjaW1wb3J0IDxWaWRlb1Rvb2xib3gvVlRDb21wcmVzc2lvblNlc3Npb24uaD4K
KworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZP
Ul9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gpCisKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVk
RnJhbWVSYXRlLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBB
TCwgVmlkZW9Ub29sYm94LCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZyYW1lSW50
ZXJ2YWxEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RShQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwg
Q0ZTdHJpbmdSZWYpCisKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgVmlkZW9U
b29sYm94LCBrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxl
cmF0ZWRWaWRlb0VuY29kZXIsIENGU3RyaW5nUmVmKQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUsIE9T
U3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90
IGhlaWdodCwgQ01WaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUsIENGRGljdGlvbmFyeVJlZiBlbmNv
ZGVyU3BlY2lmaWNhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIHNvdXJjZUltYWdlQnVmZmVyQXR0cmli
dXRlcywgQ0ZBbGxvY2F0b3JSZWYgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIFZUQ29tcHJlc3Np
b25PdXRwdXRDYWxsYmFjayBvdXRwdXRDYWxsYmFjaywgdm9pZCogb3V0cHV0Q2FsbGJhY2tSZWZD
b24sIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmKiBjb21wcmVzc2lvblNlc3Npb25PdXQpLCAoYWxs
b2NhdG9yLCB3aWR0aCwgaGVpZ2h0LCBjb2RlY1R5cGUsIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBz
b3VyY2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMsIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBvdXRw
dXRDYWxsYmFjaywgb3V0cHV0Q2FsbGJhY2tSZWZDb24sIGNvbXByZXNzaW9uU2Vzc2lvbk91dCkp
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21w
cmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vz
c2lvblJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFt
cCksIChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9u
U2Vzc2lvbkVuY29kZUZyYW1lLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNl
c3Npb24sIENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVGltZSBwcmVzZW50YXRpb25U
aW1lU3RhbXAsIENNVGltZSBkdXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmIGZyYW1lUHJvcGVydGll
cywgdm9pZCogc291cmNlRnJhbWVSZWZjb24sIFZURW5jb2RlSW5mb0ZsYWdzKiBpbmZvRmxhZ3NP
dXQpLCAoc2Vzc2lvbiwgaW1hZ2VCdWZmZXIsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZHVyYXRp
b24sIGZyYW1lUHJvcGVydGllcywgc291cmNlRnJhbWVSZWZjb24sIGluZm9GbGFnc091dCkpCitT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVz
c2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lv
blNlc3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKKworI2VuZGlmIC8vIFVTRShBVkZPVU5E
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJv
eFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRM
aW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGE5ZmU1MWUwZmYxNWNmMjNkYWQ5ODA4OWMyNTk2YWRmMTkwYWQ0
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29s
Ym94U29mdExpbmsuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5o
PgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gpCisK
K1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRDb21w
cmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCBDRlN0cmluZ1JlZikKKyNkZWZp
bmUga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBnZXRfVmlkZW9U
b29sYm94X2tWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0ZWRGcmFtZVJhdGUoKQorU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIGtWVENvbXByZXNz
aW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uLCBDRlN0cmluZ1JlZikK
KyNkZWZpbmUga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVy
YXRpb24gZ2V0X1ZpZGVvVG9vbGJveF9rVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01heEtleUZy
YW1lSW50ZXJ2YWxEdXJhdGlvbigpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUws
IFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwgQ0ZTdHJp
bmdSZWYpCisjZGVmaW5lIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgZ2V0X1Zp
ZGVvVG9vbGJveF9rVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lKCkKKworU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIGtWVFZpZGVvRW5jb2Rl
clNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRW5jb2RlciwgQ0ZT
dHJpbmdSZWYpCisjZGVmaW5lIGtWVFZpZGVvRW5jb2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFy
ZHdhcmVBY2NlbGVyYXRlZFZpZGVvRW5jb2RlciBnZXRfVmlkZW9Ub29sYm94X2tWVFZpZGVvRW5j
b2RlclNwZWNpZmljYXRpb25fRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRW5jb2Rlcigp
CisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENv
bXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0
b3IsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVvQ29kZWNUeXBlIGNvZGVj
VHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBDRkRpY3Rpb25hcnlS
ZWYgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRvclJlZiBjb21wcmVzc2Vk
RGF0YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNrIG91dHB1dENhbGxiYWNr
LCB2b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lvblNlc3Npb25SZWYqIGNv
bXByZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBoZWlnaHQsIGNvZGVjVHlw
ZSwgZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgY29t
cHJlc3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRwdXRDYWxsYmFja1JlZkNv
biwgY29tcHJlc3Npb25TZXNzaW9uT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25D
cmVhdGUgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlCitT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVz
c2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lv
blJlZiBzZXNzaW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCks
IChzZXNzaW9uLCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKKyNkZWZpbmUg
VlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBzb2Z0TGlua19WaWRlb1Rvb2xib3hf
VlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcworU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJh
bWUsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1
ZmZlclJlZiBpbWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1l
IGR1cmF0aW9uLCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lkKiBzb3VyY2VG
cmFtZVJlZmNvbiwgVlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChzZXNzaW9uLCBp
bWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJhbWVQcm9wZXJ0
aWVzLCBzb3VyY2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKKyNkZWZpbmUgVlRDb21wcmVz
c2lvblNlc3Npb25FbmNvZGVGcmFtZSBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lv
blNlc3Npb25FbmNvZGVGcmFtZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBW
aWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzLCBP
U1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikpCisj
ZGVmaW5lIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzIHNvZnRMaW5r
X1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcwor
CisjZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4
IGM0MzQ3ZTA5N2Y1YjAzNTFhYWFkYWMyNTY3YTgyZDI5NGRlZjgwYTUuLjJkODBmNDNlNDc4OWJk
N2RhZmViMzAwM2E3YTU3OTM3ODFjMmQ2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAt
NDkyLDcgKzQ5Miw5IEBAIHBsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlci5t
bQogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQogCiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKK3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KK3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCiAKIHBsYXRmb3Jt
L21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDE1OGE1MDQyMDg5NjIzMWY1MmVhNmU5ZDc0OTQ3ZTA4MzYwYjkxMzQuLjdlODE4NmMw
OWEwMzNhMDg4MjhiOTFkOWFlNjI2ZGQ4NzU2OGYyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc1ODcsNiArNzU4Nyw4IEBA
CiAJCTQxQzdFMTA1MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYW52YXNDYXB0
dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
QzdFMTA2MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW1UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwODFFNkFBMzdD
MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRDZGODkyM0Q2RTgxQzAwQjE2NDIxIC8qIFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDFDRDZGOEIyM0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhC
RTQxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhCRTUxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9k
eUNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoQm9keUNv
bnN1bWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDAxNUM4MEY0QjVDNzEw
MDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb250ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzYxNSw2ICs3
NjE3LDggQEAKIAkJNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0V29ya2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0IwRkY1OTg2OTAwNTc2QjNC
IC8qIEFic3RyYWN0V29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFi
c3RyYWN0V29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTFCMUNDMEZG
NTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gQWJzdHJhY3RXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUUx
RjMzRDI0OEE2MkI2MDAyMkQ1REUgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUUxRjMzRjI0OEE2
MkI2MDAyMkQ1REUgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU0MDgzODFEQ0I3NDc5MDBFRkNFMTkgLyogUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxRTU5M0ZEMjE0ODY1QTkwMEQzQ0I2MSAvKiBSVENQcmlvcml0eVR5cGUuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFJUQ1ByaW9yaXR5VHlwZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTU5
M0ZGMjE0ODY1QUEwMEQzQ0I2MSAvKiBSVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xOTM1Niw4ICsxOTM2MCwxMiBAQAogCQk0RDNDMDVENDIxQUY0ODA5MDBGMjg5MEEgLyog
Y29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQx
RTFGMzNGMjQ4QTYyQjYwMDIyRDVERSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAq
LywKKwkJCQk0MUUxRjMzRDI0OEE2MkI2MDAyMkQ1REUgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tICovLAogCQkJCTRENzNGOTRDMjE4QzRBODcwMDNBM0VENiAvKiBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggKi8sCiAJCQkJNEQ3M0Y5NEQyMThDNEE4NzAwM0EzRUQ2
IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gKi8sCisJCQkJNDFDRDZGODky
M0Q2RTgxQzAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovLAorCQkJ
CTQxQ0Q2RjhCMjNENkU4MUQwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTM0MzEyLDcgKzM0MzIwLDYgQEAKIAkJCQlDMUY3QjczMTI0NDhGMkFDMDAxMjQ1NTcg
LyogQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMEVFRTBFMTQ3
NDNGMzkwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNENTU5NjkxMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNDFFMUYzNDMyNDhBNjlENDAwMjJENURFIC8qIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEw
MEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JC
QjE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDREUzQTg1NzE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZh
dGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zNTAyOSw3ICszNTAzNiw2IEBACiAJCQkJ
N0M3M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZCQzRBRjMxODk4ODE1NjAwNDZFRTM4IC8qIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJENUExOEYx
QzU0NTkyMzAwREUzNEEzIC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTQxRTFGMzQyMjQ4QTY5RDAwMDIyRDVERSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2NzE3RkEwQUM2MDBERERDRDAgLyog
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEOEI1QTQy
MTgwRDE0OUEwMDhCOEU2NSAvKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTI2RjlBODM4MThBMDQ2QUMwMEFFQjg4QSAvKiBWaWV3cG9y
dENvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5jcHAKaW5kZXggMmM5ZTljOGVmYTRmM2I0MjQwYWZlYmZlYTBhZTIwNmU4
NmNlZDNkZC4uYzEyODRiMDBjNmNjNjk5NGE5ZTU1Mjc1YzAxNGYyODI5ZDM5MDg5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAtMjYsOSArMjYsMTAgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGwuaCIKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKICNpbmNsdWRlICJBdWRpb1N0cmVh
bURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2
YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC0xMTIsNCArMTEzLDQgQEAgY29u
c3QgU3RyaW5nJiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6Om1pbWVUeXBlKCkKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FU
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCmluZGV4IGJkNmY3NTg4Mjhk
MjIwMzY0YjVkYTA5ZTcxODY4YjE3NThmMmExMWEuLjcyNmVlYjUwOTVmMzdhOTk1MjIyZjBhZWYx
YWE4ODQyYTljZGQ1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaApA
QCAtMjQsNyArMjQsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdB
VEUpCiAKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKQEAgLTYwLDQgKzYwLDQgQEAgcHJpdmF0ZToK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJE
RUxFR0FURSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE0N2JmODFlMWQ0NTZjNzBjMmQ5NDRmNzA0NWE4ZTE2ZTA1OWJjZjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQorCisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisKK3R5cGVk
ZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK3R5cGVk
ZWYgc3RydWN0IE9wYXF1ZUF1ZGlvQ29udmVydGVyKiBBdWRpb0NvbnZlcnRlclJlZjsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBjcmVhdGUoQ01CdWZmZXJRdWV1
ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOworICAgIH5BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IoKTsKKworICAgIHZvaWQgZmluaXNoKCk7CisgICAgdm9pZCBhZGRT
YW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOworICAgIENNU2FtcGxlQnVmZmVyUmVmIGdl
dE91dHB1dFNhbXBsZUJ1ZmZlcigpOworICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4g
dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOworCitwcml2YXRlOgorICAgIEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvcigpOworICAgIGJvb2wgaW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dl
ckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7CisKKyAgICBzdGF0aWMgT1NTdGF0dXMg
YXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYyhBdWRpb0NvbnZlcnRlclJlZiwgVUlu
dDMyKiwgQXVkaW9CdWZmZXJMaXN0KiwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioqLCB2
b2lkKik7CisKKyAgICB2b2lkIHByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYp
OworICAgIGJvb2wgaW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24o
Q01Gb3JtYXREZXNjcmlwdGlvblJlZiwgQXVkaW9Gb3JtYXRJRCk7CisgICAgc2l6ZV90IGNvbXB1
dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uLCBV
SW50MzIsIEZsb2F0MzIpOworICAgIHZvaWQgYXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoQ01T
YW1wbGVCdWZmZXJSZWYpOworICAgIFJldGFpblB0cjxOU051bWJlcj4gZ3JhZHVhbERlY29kZXJS
ZWZyZXNoQ291bnQoKTsKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXJXaXRoTnVt
UGFja2V0cyhVSW50MzIgbnVtUGFja2V0cywgQXVkaW9CdWZmZXJMaXN0KTsKKyAgICB2b2lkIHBy
b2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUoQ01UaW1lKTsKKyAgICBPU1N0YXR1
cyBwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKiwgQXVkaW9CdWZmZXJM
aXN0KiwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioqKTsKKworICAgIFJldGFpblB0cjxD
TUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVlOworICAgIFJldGFpblB0cjxDTUJ1
ZmZlclF1ZXVlUmVmPiBtX2lucHV0QnVmZmVyUXVldWU7CisgICAgZGlzcGF0Y2hfcXVldWVfdCBt
X3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgQ01UaW1lIG1fbG93V2F0ZXJUaW1lOworICAgIGJv
b2wgbV9pc0VuY29kaW5nIHsgZmFsc2UgfTsKKworICAgIFJldGFpblB0cjxBdWRpb0NvbnZlcnRl
clJlZj4gbV9jb252ZXJ0ZXI7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1fc291
cmNlRm9ybWF0OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX2Rlc3RpbmF0aW9u
Rm9ybWF0OworICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2Rlc3RpbmF0
aW9uRm9ybWF0RGVzY3JpcHRpb247CisgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBtX2dkckNvdW50
TnVtOworICAgIFVJbnQzMiBtX21heE91dHB1dFBhY2tldFNpemU7CisgICAgVmVjdG9yPEF1ZGlv
U3RyZWFtUGFja2V0RGVzY3JpcHRpb24+IG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnM7
CisKKyAgICBDTVRpbWUgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wOworICAg
IENNVGltZSBtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXA7CisgICAgQ01UaW1l
IG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbjsKKworICAgIFZlY3RvcjxjaGFyPiBtX3NvdXJjZUJ1
ZmZlcjsKKyAgICBWZWN0b3I8Y2hhcj4gbV9kZXN0aW5hdGlvbkJ1ZmZlcjsKKworICAgIFJldGFp
blB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX3NhbXBsZUJsb2NrQnVmZmVyOworICAgIHNpemVfdCBt
X3NhbXBsZUJsb2NrQnVmZmVyU2l6ZTsKKyAgICBzaXplX3QgbV9jdXJyZW50T2Zmc2V0SW5TYW1w
bGVCbG9ja0J1ZmZlcjsKKyAgICBBdWRpb0Zvcm1hdElEIG1fb3V0cHV0Q29kZWNUeXBlOworfTsK
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWQ5NjM4NDBkYzNlNWJhZDVjOTYwNzM0ZjMyNjg5ZjM5NTI1NDFkZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0wLDAgKzEsNTA1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJ
T04pCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlv
Q29kZWMuaD4KKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KKyNpbmNs
dWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Gb3JtYXQuaD4KKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKworI2ltcG9ydCA8cGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmg+CisK
KyNkZWZpbmUgTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05EUyAwLjEKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit1c2luZyBuYW1lc3BhY2UgUEFMOworCitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShD
TUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVj
dCkKK3sKKyAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yPihuZXcgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkpOworICAg
IGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29tcHJlc3NvcjsKK30KKworQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQor
ICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20u
YXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFM
KSB9CisgICAgLCBtX2xvd1dhdGVyVGltZSB7IENNVGltZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FU
RVJfVElNRV9JTl9TRUNPTkRTLCAxMDAwKSB9CisgICAgLCBtX291dHB1dENvZGVjVHlwZSB7IGtB
dWRpb0Zvcm1hdE1QRUc0QUFDIH0KK3sKK30KKworQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Ojp+QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKK3sKKyAgICBpZiAobV9zZXJpYWxEaXNw
YXRjaFF1ZXVlKQorICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2VyaWFsRGlzcGF0Y2hRdWV1
ZSk7Cit9CisKK2Jvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXplKENN
QnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0
KQoreworICAgIENNQnVmZmVyUXVldWVSZWYgaW5wdXRCdWZmZXJRdWV1ZTsKKyAgICBpZiAoYXV0
byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ01C
dWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycygpLCAmaW5wdXRC
dWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBmb3IgbV9pbnB1
dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIG1faW5wdXRCdWZmZXJRdWV1ZSA9IGFkb3B0Q0YoaW5wdXRCdWZmZXJR
dWV1ZSk7CisKKyAgICBDTUJ1ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1ZXVlOworICAgIGlm
IChhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
LCBDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZv
dXRwdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJl
YW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBmb3Ig
bV9vdXRwdXRCdWZmZXJRdWV1ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBtX291dHB1dEJ1ZmZlclF1ZXVlID0gYWRvcHRDRihvdXRw
dXRCdWZmZXJRdWV1ZSk7CisgICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0cHV0
QnVmZmVyUXVldWUuZ2V0KCksIGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVyUXVl
dWVUcmlnZ2VyX1doZW5EYXRhQmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywgTlVMTCk7CisKKyAg
ICBtX2lzRW5jb2RpbmcgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6ZmluaXNoKCkKK3sKKyAgICBkaXNwYXRjaF9zeW5jKG1f
c2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRp
bExvd1dhdGVyVGltZShrQ01UaW1lSW52YWxpZCk7CisgICAgICAgIGF1dG8gZXJyb3IgPSBDTUJ1
ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZhaWxlZCAlZCIsIGVy
cm9yKTsKKyAgICAgICAgbV9pc0VuY29kaW5nID0gZmFsc2U7CisgICAgfSk7Cit9CisKK2Jvb2wg
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VG
b3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9u
LCBBdWRpb0Zvcm1hdElEIG91dHB1dEZvcm1hdElEKQoreworICAgIGNvbnN0IGF1dG8gKmF1ZGlv
Rm9ybWF0TGlzdEl0ZW0gPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0RGVjb2Rh
YmxlRm9ybWF0KGZvcm1hdERlc2NyaXB0aW9uKTsKKyAgICBtX3NvdXJjZUZvcm1hdCA9IGF1ZGlv
Rm9ybWF0TGlzdEl0ZW0tPm1BU0JEOworCisgICAgbWVtc2V0KCZtX2Rlc3RpbmF0aW9uRm9ybWF0
LCAwLCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CisgICAgbV9kZXN0aW5h
dGlvbkZvcm1hdC5tRm9ybWF0SUQgPSBvdXRwdXRGb3JtYXRJRDsKKyAgICBtX2Rlc3RpbmF0aW9u
Rm9ybWF0Lm1TYW1wbGVSYXRlID0gbV9zb3VyY2VGb3JtYXQubVNhbXBsZVJhdGU7CisgICAgbV9k
ZXN0aW5hdGlvbkZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IG1fc291cmNlRm9ybWF0Lm1DaGFu
bmVsc1BlckZyYW1lOworCisgICAgVUludDMyIHNpemUgPSBzaXplb2YobV9kZXN0aW5hdGlvbkZv
cm1hdCk7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0Zvcm1hdEdldFByb3BlcnR5KGtBdWRp
b0Zvcm1hdFByb3BlcnR5X0Zvcm1hdEluZm8sIDAsIE5VTEwsICZzaXplLCAmbV9kZXN0aW5hdGlv
bkZvcm1hdCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEF1ZGlv
Q29udmVydGVyUmVmIGNvbnZlcnRlcjsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVy
dGVyTmV3KCZtX3NvdXJjZUZvcm1hdCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsICZjb252ZXJ0ZXIp
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIEF1ZGlvQ29udmVydGVyTmV3IGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fY29udmVydGVyID0gYWRvcHRD
Rihjb252ZXJ0ZXIpOworCisgICAgc2l6ZV90IGNvb2tpZVNpemUgPSAwOworICAgIGNvbnN0IHZv
aWQgKmNvb2tpZSA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llKGZvcm1h
dERlc2NyaXB0aW9uLCAmY29va2llU2l6ZSk7CisgICAgaWYgKGNvb2tpZVNpemUpIHsKKyAgICAg
ICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVy
LmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJEZWNvbXByZXNzaW9uTWFnaWNDb29raWUsIChVSW50MzIp
Y29va2llU2l6ZSwgY29va2llKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db252
ZXJ0ZXJEZWNvbXByZXNzaW9uTWFnaWNDb29raWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzaXplID0g
c2l6ZW9mKG1fc291cmNlRm9ybWF0KTsKKyAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVy
dGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRJ
bnB1dFN0cmVhbURlc2NyaXB0aW9uLCAmc2l6ZSwgJm1fc291cmNlRm9ybWF0KSkgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRJbnB1dFN0cmVhbURlc2NyaXB0aW9u
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgaWYgKCFtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJtQnl0ZXNQZXJQYWNrZXQgc2hvdWxkIG5vdCBi
ZSB6ZXJvIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzaXplID0gc2l6
ZW9mKG1fZGVzdGluYXRpb25Gb3JtYXQpOworICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252
ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyQ3VycmVu
dE91dHB1dFN0cmVhbURlc2NyaXB0aW9uLCAmc2l6ZSwgJm1fZGVzdGluYXRpb25Gb3JtYXQpKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ3VycmVudE91dHB1dFN0cmVhbURl
c2NyaXB0aW9uIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubUZvcm1hdElEID09IGtBdWRp
b0Zvcm1hdE1QRUc0QUFDKSB7CisgICAgICAgIC8vIEZJWE1FOiBTZXQgb3V0cHV0Qml0UmF0ZSBh
Y2NvcmRpbmcgTWVkaWFSZWNvcmRlck9wdGlvbnMuYXVkaW9CaXRzUGVyU2Vjb25kLgorICAgICAg
ICBVSW50MzIgb3V0cHV0Qml0UmF0ZSA9IDY0MDAwOworICAgICAgICBpZiAobV9kZXN0aW5hdGlv
bkZvcm1hdC5tU2FtcGxlUmF0ZSA+PSA0NDEwMCkKKyAgICAgICAgICAgIG91dHB1dEJpdFJhdGUg
PSAxOTIwMDA7CisgICAgICAgIGVsc2UgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBsZVJh
dGUgPCAyMjAwMCkKKyAgICAgICAgICAgIG91dHB1dEJpdFJhdGUgPSAzMjAwMDsKKworICAgICAg
ICBzaXplID0gc2l6ZW9mKG91dHB1dEJpdFJhdGUpOworICAgICAgICBpZiAoYXV0byBlcnJvciA9
IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZl
cnRlckVuY29kZUJpdFJhdGUsIHNpemUsICZvdXRwdXRCaXRSYXRlKSkgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3Igc2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRSYXRlIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkgeworICAgICAgICAv
LyBJZiB0aGUgZGVzdGluYXRpb24gZm9ybWF0IGlzIFZCUiwgd2UgbmVlZCB0byBnZXQgbWF4IHNp
emUgcGVyIHBhY2tldCBmcm9tIHRoZSBjb252ZXJ0ZXIuCisgICAgICAgIHNpemUgPSBzaXplb2Yo
bV9tYXhPdXRwdXRQYWNrZXRTaXplKTsKKworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlv
Q29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlclBy
b3BlcnR5TWF4aW11bU91dHB1dFBhY2tldFNpemUsICZzaXplLCAmbV9tYXhPdXRwdXRQYWNrZXRT
aXplKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eU1h
eGltdW1PdXRwdXRQYWNrZXRTaXplIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBkZXN0aW5hdGlv
bkJ1ZmZlclNpemUgPSBjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KG1fZGVzdGluYXRp
b25Gb3JtYXQsIG1fbWF4T3V0cHV0UGFja2V0U2l6ZSwgTE9XX1dBVEVSX1RJTUVfSU5fU0VDT05E
Uyk7CisgICAgaWYgKG1fZGVzdGluYXRpb25CdWZmZXIuc2l6ZSgpIDwgZGVzdGluYXRpb25CdWZm
ZXJTaXplKQorICAgICAgICBtX2Rlc3RpbmF0aW9uQnVmZmVyLnJlc2l6ZShkZXN0aW5hdGlvbkJ1
ZmZlclNpemUpOworICAgIGlmICghbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQp
CisgICAgICAgIG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnMucmVzaXplKG1fZGVzdGlu
YXRpb25CdWZmZXIuY2FwYWNpdHkoKSAvIG1fbWF4T3V0cHV0UGFja2V0U2l6ZSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc2l6ZV90IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y29t
cHV0ZUJ1ZmZlclNpemVGb3JBdWRpb0Zvcm1hdChBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24g
Zm9ybWF0LCBVSW50MzIgbWF4T3V0cHV0UGFja2V0U2l6ZSwgRmxvYXQzMiBkdXJhdGlvbikKK3sK
KyAgICBVSW50MzIgbnVtUGFja2V0cyA9IChmb3JtYXQubVNhbXBsZVJhdGUgKiBkdXJhdGlvbikg
LyBmb3JtYXQubUZyYW1lc1BlclBhY2tldDsKKyAgICBVSW50MzIgb3V0cHV0UGFja2V0U2l6ZSA9
IGZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPyBmb3JtYXQubUJ5dGVzUGVyUGFja2V0IDogbWF4T3V0
cHV0UGFja2V0U2l6ZTsKKyAgICBVSW50MzIgYnVmZmVyU2l6ZSA9IG51bVBhY2tldHMgKiBvdXRw
dXRQYWNrZXRTaXplOworCisgICAgcmV0dXJuIGJ1ZmZlclNpemU7Cit9CisKK3ZvaWQgQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZChDTVNhbXBs
ZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgaWYgKENNVElNRV9JU19JTlZBTElEKG1fcmVtYWlu
aW5nUHJpbWVEdXJhdGlvbikpIHsKKyAgICAgICAgQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gcHJp
bWVJbmZvIHsgMCwgMCB9OworICAgICAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihwcmltZUluZm8p
OworCisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSht
X2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyUHJpbWVJbmZvLCAmc2l6ZSwgJnByaW1l
SW5mbykpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyUHJpbWVJbmZv
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uID0gQ01UaW1lTWFrZShwcmltZUlu
Zm8ubGVhZGluZ0ZyYW1lcywgbV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxlUmF0ZSk7CisgICAg
fQorCisgICAgaWYgKENNVElNRV9DT01QQVJFX0lOTElORShrQ01UaW1lWmVybywgPCwgbV9yZW1h
aW5pbmdQcmltZUR1cmF0aW9uKSkgeworICAgICAgICBDTVRpbWUgc2FtcGxlRHVyYXRpb24gPSBD
TVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7CisgICAgICAgIENNVGltZSB0cmltRHVy
YXRpb24gPSBDTVRpbWVNaW5pbXVtKHNhbXBsZUR1cmF0aW9uLCBtX3JlbWFpbmluZ1ByaW1lRHVy
YXRpb24pOworICAgICAgICBDRkRpY3Rpb25hcnlSZWYgdHJpbUF0U3RhcnREaWN0ID0gQ01UaW1l
Q29weUFzRGljdGlvbmFyeSh0cmltRHVyYXRpb24sIGtDRkFsbG9jYXRvckRlZmF1bHQpOworICAg
ICAgICBDTVNldEF0dGFjaG1lbnQoYnVmZmVyLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5
X1RyaW1EdXJhdGlvbkF0U3RhcnQsIHRyaW1BdFN0YXJ0RGljdCwga0NNQXR0YWNobWVudE1vZGVf
U2hvdWxkUHJvcGFnYXRlKTsKKyAgICAgICAgQ0ZSZWxlYXNlKHRyaW1BdFN0YXJ0RGljdCk7Cisg
ICAgICAgIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiA9IENNVGltZVN1YnRyYWN0KG1fcmVtYWlu
aW5nUHJpbWVEdXJhdGlvbiwgdHJpbUR1cmF0aW9uKTsKKyAgICB9Cit9CisKK1JldGFpblB0cjxO
U051bWJlcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpncmFkdWFsRGVjb2RlclJlZnJl
c2hDb3VudCgpCit7CisgICAgVUludDMyIGRlbGF5U2l6ZSA9IHNpemVvZih1aW50MzJfdCk7Cisg
ICAgdWludDMyX3Qgb3JpZ2luYWxEZWxheU1vZGUgPSAwOworICAgIGlmIChhdXRvIGVycm9yID0g
QXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQ
cm9wZXJ0eURlbGF5TW9kZSwgJmRlbGF5U2l6ZSwgJm9yaWdpbmFsRGVsYXlNb2RlKSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUgZmFpbGVkIHdpdGgg
JWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgdWludDMyX3Qg
b3B0aW1hbERlbGF5TW9kZSA9IGtBdWRpb0NvZGVjRGVsYXlNb2RlX09wdGltYWw7CisgICAgaWYg
KGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlclNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgp
LCBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCBkZWxheVNpemUsICZvcHRpbWFsRGVsYXlN
b2RlKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisg
ICAgVUludDMyIHByaW1lU2l6ZSA9IHNpemVvZihBdWRpb0NvZGVjUHJpbWVJbmZvKTsKKyAgICBB
dWRpb0NvZGVjUHJpbWVJbmZvIHByaW1lSW5mbyB7IDAsIDAgfTsKKyAgICBpZiAoYXV0byBlcnJv
ciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0Nv
ZGVjUHJvcGVydHlQcmltZUluZm8sICZwcmltZVNpemUsICZwcmltZUluZm8pKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIGdldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1lSW5mbyBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBpZiAoYXV0byBlcnJv
ciA9IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0Nv
ZGVjUHJvcGVydHlEZWxheU1vZGUsIGRlbGF5U2l6ZSwgJm9yaWdpbmFsRGVsYXlNb2RlKSkgewor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIHJldHVybiBh
ZG9wdE5TKFtOU051bWJlciBudW1iZXJXaXRoSW50OihwcmltZUluZm8ubGVhZGluZ0ZyYW1lcyAv
IG1fZGVzdGluYXRpb25Gb3JtYXQubUZyYW1lc1BlclBhY2tldCldKTsKK30KKworQ01TYW1wbGVC
dWZmZXJSZWYgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpzYW1wbGVCdWZmZXJXaXRoTnVt
UGFja2V0cyhVSW50MzIgbnVtUGFja2V0cywgQXVkaW9CdWZmZXJMaXN0IGZpbGxCdWZmZXJMaXN0
KQoreworICAgIFZlY3RvcjxjaGFyPiBjb29raWU7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9y
bWF0RGVzY3JpcHRpb24pIHsKKyAgICAgICAgVUludDMyIGNvb2tpZVNpemUgPSAwOworCisgICAg
ICAgIGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5SW5mbyhtX2NvbnZlcnRl
ci5nZXQoKSwga0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgJmNvb2tpZVNp
emUsIE5VTEwpOworICAgICAgICBpZiAoKGVycm9yID09IG5vRXJyKSAmJiAhIWNvb2tpZVNpemUp
IHsKKyAgICAgICAgICAgIGNvb2tpZS5yZXNpemUoY29va2llU2l6ZSk7CisKKyAgICAgICAgICAg
IGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5n
ZXQoKSwga0F1ZGlvQ29udmVydGVyQ29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgJmNvb2tpZVNpemUs
IGNvb2tpZS5kYXRhKCkpKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252
ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb247
CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsICZtX2Rlc3RpbmF0aW9uRm9ybWF0LCAwLCBOVUxMLCBjb29r
aWVTaXplLCBjb29raWUuZGF0YSgpLCBOVUxMLCAmZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlv
bikpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIH0K
KyAgICAgICAgbV9kZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0aW9uID0gYWRvcHRDRihkZXN0aW5h
dGlvbkZvcm1hdERlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9nZHJDb3VudE51bSA9IGdyYWR1YWxE
ZWNvZGVyUmVmcmVzaENvdW50KCk7CisgICAgfQorCisgICAgY2hhciAqZGF0YSA9IHN0YXRpY19j
YXN0PGNoYXIqPihmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSk7CisgICAgc2l6ZV90
IGRhdGFTaXplID0gZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZTsKKwor
ICAgIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tCdWZmZXI7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBD
TUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5V
TEwsIGRhdGFTaXplLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCAwLCBkYXRhU2l6ZSwga0NN
QmxvY2tCdWZmZXJBc3N1cmVNZW1vcnlOb3dGbGFnLCAmYmxvY2tCdWZmZXIpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2sgZmFpbGVkIHdpdGggJWQiLCBl
cnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIGF1dG8gYnVmZmVyID0gYWRv
cHRDRihibG9ja0J1ZmZlcik7CisKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJS
ZXBsYWNlRGF0YUJ5dGVzKGRhdGEsIGJ1ZmZlci5nZXQoKSwgMCwgZGF0YVNpemUpKSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZUJ1ZmZlcjsKKyAgICBhdXRvIGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0
ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLmdldCgp
LCB0cnVlLCBOVUxMLCBOVUxMLCBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCks
IG51bVBhY2tldHMsIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCwgbV9kZXN0
aW5hdGlvblBhY2tldERlc2NyaXB0aW9ucy5kYXRhKCksICZzYW1wbGVCdWZmZXIpOworICAgIGlm
IChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tl
dERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICB9CisKKyAgICBpZiAoW21fZ2RyQ291bnROdW0gaW50VmFsdWVdKQorICAgICAgICBD
TVNldEF0dGFjaG1lbnQoc2FtcGxlQnVmZmVyLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5
X0dyYWR1YWxEZWNvZGVyUmVmcmVzaCwgKF9fYnJpZGdlIENGVHlwZVJlZiltX2dkckNvdW50TnVt
LmdldCgpLCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOworCisgICAgcmV0dXJu
IHNhbXBsZUJ1ZmZlcjsKK30KKworT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphdWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jKEF1ZGlvQ29udmVydGVyUmVmLCBV
SW50MzIgKm51bU91dHB1dFBhY2tldHNQdHIsIEF1ZGlvQnVmZmVyTGlzdCAqYnVmZmVyTGlzdCwg
QXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbiAqKnBhY2tldERlc2NyaXB0aW9uT3V0LCB2b2lk
ICphdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IpCit7CisgICAgYXV0byAqY29tcHJlc3NvciA9
IHN0YXRpY19jYXN0PEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcio+KGF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcik7CisgICAgcmV0dXJuIGNvbXByZXNzb3ItPnByb3ZpZGVTb3VyY2VEYXRh
TnVtT3V0cHV0UGFja2V0cyhudW1PdXRwdXRQYWNrZXRzUHRyLCBidWZmZXJMaXN0LCBwYWNrZXRE
ZXNjcmlwdGlvbk91dCk7Cit9CisKK09TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cjo6cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKFVJbnQzMiogbnVtT3V0cHV0UGFj
a2V0c1B0ciwgQXVkaW9CdWZmZXJMaXN0KiBhdWRpb0J1ZmZlckxpc3QsIEF1ZGlvU3RyZWFtUGFj
a2V0RGVzY3JpcHRpb24qKiBwYWNrZXREZXNjcmlwdGlvbk91dCkKK3sKKyAgICBpZiAocGFja2V0
RGVzY3JpcHRpb25PdXQpCisgICAgICAgICpwYWNrZXREZXNjcmlwdGlvbk91dCA9IE5VTEw7CisK
KyAgICBjb25zdCBVSW50MzIgbnVtUGFja2V0c1RvQ29weSA9ICpudW1PdXRwdXRQYWNrZXRzUHRy
OworICAgIHNpemVfdCBudW1CeXRlc1RvQ29weSA9IChudW1QYWNrZXRzVG9Db3B5ICogbV9zb3Vy
Y2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KTsKKworICAgIGlmIChhdWRpb0J1ZmZlckxpc3QtPm1O
dW1iZXJCdWZmZXJzID09IDEpIHsKKyAgICAgICAgc2l6ZV90IGN1cnJlbnRPZmZzZXRJblNvdXJj
ZUJ1ZmZlciA9IDA7CisKKyAgICAgICAgaWYgKG1fc291cmNlQnVmZmVyLnNpemUoKSA8IG51bUJ5
dGVzVG9Db3B5KQorICAgICAgICAgICAgbV9zb3VyY2VCdWZmZXIucmVzaXplKG51bUJ5dGVzVG9D
b3B5KTsKKworICAgICAgICB3aGlsZSAobnVtQnl0ZXNUb0NvcHkpIHsKKyAgICAgICAgICAgIGlm
IChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA8PSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2Nr
QnVmZmVyKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IG51bGxwdHI7CisgICAgICAg
ICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBpZiAoQ01CdWZmZXJRdWV1ZUlzRW1wdHkobV9pbnB1dEJ1
ZmZlclF1ZXVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShj
b25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX2lucHV0QnVm
ZmVyUXVldWUuZ2V0KCkpKSkpOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIg
PSBhZG9wdENGKChDTUJsb2NrQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDRlJldGFpbihD
TVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKSkpKSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciBmYWlsZWQiKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOworICAgICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0gMDsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fc2Ft
cGxlQmxvY2tCdWZmZXJTaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgobV9zYW1wbGVC
bG9ja0J1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1w
bGVCbG9ja0J1ZmZlciA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtX3Nh
bXBsZUJsb2NrQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgc2l6ZV90IG51bUJ5dGVzVG9Db3B5
RnJvbVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1CeXRlc1RvQ29weSwgKG1fc2FtcGxlQmxvY2tC
dWZmZXJTaXplIC0gbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikpOworICAgICAg
ICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9z
YW1wbGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZl
ciwgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiwgKG1fc291cmNlQnVmZmVyLmRhdGEoKSAr
IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcikpKSB7CisgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIG51bUJ5dGVzVG9Db3B5IC09IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWY7
CisgICAgICAgICAgICAgICAgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyICs9IG51bUJ5dGVz
VG9Db3B5RnJvbVNhbXBsZUJidWY7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5T
YW1wbGVCbG9ja0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0u
bURhdGEgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7CisgICAgICAgIGF1ZGlvQnVmZmVyTGlzdC0+
bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcjsK
KyAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSBt
X3NvdXJjZUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsKKworICAgICAgICAqbnVtT3V0cHV0UGFj
a2V0c1B0ciA9IChhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgLyBt
X3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpOworICAgICAgICByZXR1cm4gbm9FcnI7Cisg
ICAgfQorCisgICAgQVNTRVJUKGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnMgPT0gMik7
CisKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRlcmxlYXZlZCBkYXRhIGJ5IHVuaW50ZXJsZWF2
aW5nIG1fc291cmNlQnVmZmVyIGlmIG5lZWRlZC4KKyAgICBBU1NFUlQobV9zb3VyY2VGb3JtYXQu
bUZvcm1hdEZsYWdzICYga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQpOworCisgICAg
aWYgKG1fc291cmNlQnVmZmVyLnNpemUoKSA8IDIgKiBudW1CeXRlc1RvQ29weSkKKyAgICAgICAg
bV9zb3VyY2VCdWZmZXIucmVzaXplKDIgKiBudW1CeXRlc1RvQ29weSk7CisgICAgYXV0byogZmly
c3RDaGFubmVsID0gbV9zb3VyY2VCdWZmZXIuZGF0YSgpOworICAgIGF1dG8qIHNlY29uZENoYW5u
ZWwgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCkgKyBudW1CeXRlc1RvQ29weTsKKworICAgIHNpemVf
dCBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgPSAwOworICAgIHdoaWxlIChudW1CeXRlc1Rv
Q29weSkgeworICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPD0gbV9jdXJyZW50
T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxv
Y2tCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gbnVsbHB0
cjsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVm
ZmVyUXVldWUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBh
dXRvIHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0
PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX2lucHV0QnVmZmVyUXVldWUu
Z2V0KCkpKSkpOworICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENN
QmxvY2tCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxlQnVmZmVy
R2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAgICAgICAgIGlmICgh
bV9zYW1wbGVCbG9ja0J1ZmZlcikgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNU2FtcGxlQnVmZmVy
R2V0RGF0YUJ1ZmZlciBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVm
ZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9j
a0J1ZmZlciA9IDA7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IENNQmxvY2tCdWZmZXJHZXREYXRh
TGVuZ3RoKG1fc2FtcGxlQmxvY2tCdWZmZXIuZ2V0KCkpIC8gMjsKKyAgICAgICAgICAgIG1fY3Vy
cmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKG1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKKyAgICAgICAgICAgIHNpemVfdCBudW1CeXRlc1Rv
Q29weUZyb21TYW1wbGVCYnVmID0gc3RkOjptaW4obnVtQnl0ZXNUb0NvcHksIChtX3NhbXBsZUJs
b2NrQnVmZmVyU2l6ZSAtIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIpKTsKKyAg
ICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9z
YW1wbGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZl
ciwgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiwgKGZpcnN0Q2hhbm5lbCArIGN1cnJlbnRP
ZmZzZXRJblNvdXJjZUJ1ZmZlcikpKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZl
ckNvcHlEYXRhQnl0ZXMgZmlyc3QgY2hhbm5lbCBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKG1fc2FtcGxlQmxvY2tC
dWZmZXIuZ2V0KCksIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgKyBtX3NhbXBs
ZUJsb2NrQnVmZmVyU2l6ZSwgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiwgKHNlY29uZENo
YW5uZWwgKyBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIpKSkgeworICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzIHNlY29uZCBjaGFubmVsIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG51bUJ5dGVzVG9Db3B5IC09IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBs
ZUJidWY7CisgICAgICAgICAgICBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXIgKz0gbnVtQnl0
ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2Ft
cGxlQmxvY2tCdWZmZXIgKz0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGEgPSBmaXJz
dENoYW5uZWw7CisgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXpl
ID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1
ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gMTsKKworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1
ZmZlcnNbMV0ubURhdGEgPSBzZWNvbmRDaGFubmVsOworICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1
ZmZlcnNbMV0ubURhdGFCeXRlU2l6ZSA9IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlcjsKKyAg
ICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzFdLm1OdW1iZXJDaGFubmVscyA9IDE7CisKKyAg
ICAqbnVtT3V0cHV0UGFja2V0c1B0ciA9IChhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1E
YXRhQnl0ZVNpemUgLyBtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpOworICAgIHJldHVy
biBub0VycjsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NT
YW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUoQ01UaW1lIGxvd1dhdGVyVGltZSkKK3sKKyAg
ICBpZiAoIW1fY29udmVydGVyKSB7CisgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNFbXB0eSht
X2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGF1dG8gYnVmZmVyID0gKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1
ZmZlclF1ZXVlR2V0SGVhZChtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7CisgICAgICAgIEFT
U0VSVChidWZmZXIpOworCisgICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVT
dGFtcCA9IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlcik7Cisg
ICAgICAgIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNU2FtcGxlQnVm
ZmVyR2V0T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wKGJ1ZmZlcik7CisKKyAgICAgICAgYXV0
byBmb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24o
YnVmZmVyKTsKKyAgICAgICAgaWYgKCFpbml0QXVkaW9Db252ZXJ0ZXJGb3JTb3VyY2VGb3JtYXRE
ZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbiwgbV9vdXRwdXRDb2RlY1R5cGUpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdoaWxlIChDTVRJTUVfSVNfSU5WQUxJRChsb3dX
YXRlclRpbWUpIHx8IENNVElNRV9DT01QQVJFX0lOTElORShsb3dXYXRlclRpbWUsIDwsIENNQnVm
ZmVyUXVldWVHZXREdXJhdGlvbihtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkgeworICAgICAg
ICBBdWRpb0J1ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3Q7CisKKyAgICAgICAgZmlsbEJ1ZmZlckxp
c3QubU51bWJlckJ1ZmZlcnMgPSAxOworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1sw
XS5tTnVtYmVyQ2hhbm5lbHMgPSBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1l
OworICAgICAgICBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gKFVJ
bnQzMiltX2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5KCk7CisgICAgICAgIGZpbGxCdWZmZXJM
aXN0Lm1CdWZmZXJzWzBdLm1EYXRhID0gbV9kZXN0aW5hdGlvbkJ1ZmZlci5kYXRhKCk7CisKKyAg
ICAgICAgVUludDMyIG91dHB1dFBhY2tldFNpemUgPSBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRl
c1BlclBhY2tldCA/IG1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0IDogbV9tYXhP
dXRwdXRQYWNrZXRTaXplOworICAgICAgICBVSW50MzIgbnVtT3V0cHV0UGFja2V0cyA9IChVSW50
MzIpbV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpIC8gb3V0cHV0UGFja2V0U2l6ZTsKKwor
ICAgICAgICBhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJGaWxsQ29tcGxleEJ1ZmZlcihtX2Nv
bnZlcnRlci5nZXQoKSwgYXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYywgdGhpcywg
Jm51bU91dHB1dFBhY2tldHMsICZmaWxsQnVmZmVyTGlzdCwgbV9kZXN0aW5hdGlvblBhY2tldERl
c2NyaXB0aW9ucy5kYXRhKCkpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW51bU91dHB1
dFBhY2tldHMpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGJ1ZmZlciA9IHNh
bXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKG51bU91dHB1dFBhY2tldHMsIGZpbGxCdWZmZXJMaXN0
KTsKKworICAgICAgICBhdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZChidWZmZXIpOworCisgICAg
ICAgIGVycm9yID0gQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAo
YnVmZmVyLCBtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXApOworICAgICAgICBp
ZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNU2FtcGxlQnVmZmVyU2V0T3V0cHV0UHJlc2Vu
dGF0aW9uVGltZVN0YW1wIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgQ01UaW1lIG5hdGl2ZUR1cmF0aW9uID0gQ01TYW1w
bGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOworICAgICAgICBtX2N1cnJlbnROYXRpdmVQcmVz
ZW50YXRpb25UaW1lU3RhbXAgPSBDTVRpbWVBZGQobV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9u
VGltZVN0YW1wLCBuYXRpdmVEdXJhdGlvbik7CisKKyAgICAgICAgQ01UaW1lIG91dHB1dER1cmF0
aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXREdXJhdGlvbihidWZmZXIpOworICAgICAgICBt
X2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVRpbWVBZGQobV9jdXJyZW50
T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wLCBvdXRwdXREdXJhdGlvbik7CisKKyAgICAgICAg
ZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZShtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBi
dWZmZXIpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVl
dWVFbnF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgYXV0
byBlcnJvciA9IENNQnVmZmVyUXVldWVFbnF1ZXVlKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSwg
YnVmZmVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7CisKKyAgICBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJU
aW1lKG1fbG93V2F0ZXJUaW1lKTsKK30KKwordm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgZGlz
cGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGlmIChtX2lzRW5j
b2RpbmcpCisgICAgICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyKGJ1ZmZlcik7CisgICAgfSk7
Cit9CisKK0NNU2FtcGxlQnVmZmVyUmVmIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z2V0
T3V0cHV0U2FtcGxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gKENNU2FtcGxlQnVmZmVyUmVmKShj
b25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0SGVhZChtX291dHB1dEJ1ZmZlclF1ZXVl
LmdldCgpKSkpOworfQorCitSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpCit7CisgICAgcmV0dXJu
IGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1
ZXVlRGVxdWV1ZUFuZFJldGFpbihtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsKK30KKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgK
aW5kZXggYjE0N2NhMjg4MjliMGYxMDMwYmRhNzRhMDg0MjZjNDU2NWU5ODcxZS4uNDhlOTBkY2Uy
MWIxY2NmNzkzYjEyYWFkMjE4ZDYwOGUyZTEzYzVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTI0LDcgKzI0LDkgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorCisjaW5jbHVkZSAiQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbi5oIgogCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC0zNSwxMCArMzcsMTYgQEAKICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9y
ZS5oPgogCisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+CisjaW5jbHVkZSA8
Q29yZU1lZGlhL0NNVGltZS5oPgorCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZl
ciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1h
dERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwordHlwZWRlZiBzdHJ1Y3Qgb3Bh
cXVlQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiAqQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbjsK
IAogT0JKQ19DTEFTUyBBVkFzc2V0V3JpdGVyOwogT0JKQ19DTEFTUyBBVkFzc2V0V3JpdGVySW5w
dXQ7CitPQkpDX0NMQVNTIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdU
RiB7CiBjbGFzcyBNZWRpYVRpbWU7CkBAIC00Niw1MSArNTQsNzMgQEAgY2xhc3MgTWVkaWFUaW1l
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvcjsKIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiBjbGFzcyBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOworY2xhc3MgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4geworY2xhc3MgV0VCQ09SRV9FWFBP
UlQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1h
aW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdl
YWtQdHJGYWN0b3J5SW5pdGlhbGl6YXRpb246OkVhZ2VyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gY3JlYXRlKGNvbnN0IE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlKiBhdWRpb1RyYWNrLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSogdmlkZW9UcmFjayk7CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcj4gY3JlYXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgICAg
fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCk7Ci0gICAgCi0gICAgYm9vbCBzZXR1cFdyaXRl
cigpOwotICAgIGJvb2wgc2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotICAg
IGJvb2wgc2V0QXVkaW9JbnB1dCgpOworCiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZl
cihDTVNhbXBsZUJ1ZmZlclJlZik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcihj
b25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBj
b25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7
CiAgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmKT4mJik7CiAKKyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgY2hhciosIHNpemVf
dCk7CisgICAgdm9pZCBhcHBlbmREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCiBwcml2YXRl
OgotICAgIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVy
PiYmLCBTdHJpbmcmJiBwYXRoKTsKKyAgICBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihib29s
IGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBSZXRh
aW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7Ci0gICAgUmV0YWluUHRyPEFWQXNzZXRXcml0
ZXJJbnB1dD4gbV92aWRlb0lucHV0OwotICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+
IG1fYXVkaW9JbnB1dDsKLQotICAgIFN0cmluZyBtX3BhdGg7Ci0gICAgTG9jayBtX3ZpZGVvTG9j
azsKLSAgICBMb2NrIG1fYXVkaW9Mb2NrOwotICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdy
aXRpbmdTZW1hcGhvcmU7Ci0gICAgQmluYXJ5U2VtYXBob3JlIG1fZmluaXNoV3JpdGluZ0F1ZGlv
U2VtYXBob3JlOwotICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFw
aG9yZTsKKyAgICBib29sIGluaXRpYWxpemUoKTsKKworICAgIHN0YXRpYyB2b2lkIGNvbXByZXNz
ZWRWaWRlb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRv
a2VuKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFj
ayh2b2lkKiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7CisKKyAgICB2b2lkIHN0YXJ0QXNz
ZXRXcml0ZXIoKTsKKyAgICB2b2lkIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisK
KyAgICBib29sIGFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpOworICAgIGJvb2wg
YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKCk7CisKKyAgICB2b2lkIHByb2Nlc3NO
ZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCk7CisgICAgdm9pZCBwcm9jZXNzTmV3Q29t
cHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpOworCisgICAgdm9pZCBmbHVzaENvbXByZXNzZWRT
YW1wbGVCdWZmZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBhcHBl
bmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworCiAgICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsgZmFsc2UgfTsKICAgICBi
b29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNGaXJzdEF1ZGlvU2FtcGxl
IHsgdHJ1ZSB9OwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9hdWRpb1B1bGxRdWV1ZTsKLSAgICBk
aXNwYXRjaF9xdWV1ZV90IG1fdmlkZW9QdWxsUXVldWU7Ci0gICAgRGVxdWU8UmV0YWluUHRyPENN
U2FtcGxlQnVmZmVyUmVmPj4gbV92aWRlb0J1ZmZlclBvb2w7Ci0gICAgRGVxdWU8UmV0YWluUHRy
PENNU2FtcGxlQnVmZmVyUmVmPj4gbV9hdWRpb0J1ZmZlclBvb2w7CisKKyAgICBSZXRhaW5QdHI8
QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBib29sIG1faXNTdG9wcGluZyB7IGZhbHNl
IH07CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhh
bmRsZXI7CisKKyAgICBib29sIG1faGFzQXVkaW87CisgICAgYm9vbCBtX2hhc1ZpZGVvOworCisg
ICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlw
dGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBt
X2F1ZGlvQ29tcHJlc3NvcjsKKyAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBtX2F1
ZGlvQXNzZXRXcml0ZXJJbnB1dDsKKworICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9u
UmVmPiBtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV92aWRlb0NvbXByZXNzb3I7CisgICAgUmV0YWluUHRy
PEFWQXNzZXRXcml0ZXJJbnB1dD4gbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQ7CisgICAgQ01UaW1l
IG1fbGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZTsKKyAgICBDTVRpbWUgbV9sYXN0VmlkZW9EZWNv
ZGluZ1RpbWU7CisgICAgYm9vbCBtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMgeyBmYWxzZSB9Owor
CisgICAgUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4gbV93cml0ZXJEZWxlZ2F0
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VU
V1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggZGUxMDcyYTAwYTM3Y2NkOGEzNjFiNzgwN2RiNjFjMjE3
MDBhYmZmYi4uNzRhZDQzOGNjNWE0ZGUxMTUzNjFlNWNiODRmYTMyZmQyMjQ0ZjJhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpA
QCAtMjMsNzAgKzIzLDEwMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRB
VElPTikKLQotI2ltcG9ydCAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2ltcG9ydCAiTG9n
Z2luZy5oIgotI2ltcG9ydCAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKLSNpbXBvcnQgIldl
YkF1ZGlvQnVmZmVyTGlzdC5oIgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXIu
aD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVySW5wdXQuaD4KLSNpbXBvcnQg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KLQot
I2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+Ci0jaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KLQotI3VuZGVmIEFWRW5jb2RlckJpdFJhdGVLZXkKLSNk
ZWZpbmUgQVZFbmNvZGVyQml0UmF0ZUtleSBnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxi
YWNrKCkKLSN1bmRlZiBBVkZvcm1hdElES2V5Ci0jZGVmaW5lIEFWRm9ybWF0SURLZXkgZ2V0QVZG
b3JtYXRJREtleVdpdGhGYWxsYmFjaygpCi0jdW5kZWYgQVZOdW1iZXJPZkNoYW5uZWxzS2V5Ci0j
ZGVmaW5lIEFWTnVtYmVyT2ZDaGFubmVsc0tleSBnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRo
RmFsbGJhY2soKQotI3VuZGVmIEFWU2FtcGxlUmF0ZUtleQotI2RlZmluZSBBVlNhbXBsZVJhdGVL
ZXkgZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKKworI2luY2x1
ZGUgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgorI2luY2x1ZGUgIkF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKKyNpbmNsdWRlIDxBVkZvdW5kYXRp
b24vQVZBc3NldFdyaXRlci5oPgorI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVy
SW5wdXQuaD4KKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcl9Qcml2YXRlLmg+
CisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNp
bmNsdWRlIDx3dGYvQmxvY2tQdHIuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2Fz
dHNDRi5oPgorCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVk
ZSA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK0BpbnRlcmZhY2UgV2ViQVZB
c3NldFdyaXRlckRlbGVnYXRlIDogTlNPYmplY3QgPEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4gewor
ICAgIFdlYWtQdHI8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IG1fd3JpdGVy
OworfQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXcml0
ZXI6KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKil3cml0ZXI7CistICh2b2lk
KWNsb3NlOwogCi11c2luZyBuYW1lc3BhY2UgUEFMOworQGVuZAogCi1zdGF0aWMgTlNTdHJpbmcg
KmdldEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQorQGltcGxlbWVudGF0aW9uIFdlYkFWQXNz
ZXRXcml0ZXJEZWxlZ2F0ZSB7Cit9OworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKil3cml0ZXIKIHsKLSAgICBpZiAo
UEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCkpCi0gICAgICAgIHJldHVy
biBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgpOworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoc2VsZikKKyAg
ICAgICAgc2VsZi0+bV93cml0ZXIgPSBtYWtlV2Vha1B0cih3cml0ZXIpOwogCi0gICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkZvcm1hdElES2V5Iik7Ci0gICAg
cmV0dXJuIEAiQVZGb3JtYXRJREtleSI7CisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLXN0YXRpYyBO
U1N0cmluZyAqZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxiYWNrKCkKKy0gKHZvaWQp
YXNzZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQcm9kdWNlRnJhZ21l
bnRlZEhlYWRlckRhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRIZWFkZXJEYXRhCiB7Ci0gICAgaWYg
KFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCkpCi0gICAg
ICAgIHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCk7
CisgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgp
KSB7CisgICAgICAgIGlmIChhdXRvIHNpemUgPSBbZnJhZ21lbnRlZEhlYWRlckRhdGEgbGVuZ3Ro
XSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFp
blB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRI
ZWFkZXJEYXRhIGJ5dGVzXSksIHNpemUpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlm
IChwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlcikKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVk
U2VsZi0+bV93cml0ZXItPmFwcGVuZERhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWTnVtYmVyT2ZDaGFubmVsc0tleSIpOwot
ICAgIHJldHVybiBAIkFWTnVtYmVyT2ZDaGFubmVsc0tleSI7CisgICAgaWYgKG1fd3JpdGVyKQor
ICAgICAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2Zy
YWdtZW50ZWRIZWFkZXJEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkSGVhZGVyRGF0YSBsZW5ndGhd
KTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpnZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJhY2so
KQorLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdyaXRlciAqKWFzc2V0V3JpdGVyIGRpZFBy
b2R1Y2VGcmFnbWVudGVkTWVkaWFEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkTWVkaWFEYXRhIGZy
YWdtZW50ZWRNZWRpYURhdGFSZXBvcnQ6KEFWRnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCAqKWZy
YWdtZW50ZWRNZWRpYURhdGFSZXBvcnQKIHsKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRh
dGlvbl9BVlNhbXBsZVJhdGVLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRh
dGlvbl9BVlNhbXBsZVJhdGVLZXkoKTsKKyAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0ZXIpOwor
ICAgIFVOVVNFRF9QQVJBTShmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0KTsKKyAgICBpZiAoIWlz
TWFpblRocmVhZCgpKSB7CisgICAgICAgIGlmIChhdXRvIHNpemUgPSBbZnJhZ21lbnRlZE1lZGlh
RGF0YSBsZW5ndGhdKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4oc2VsZiksIGJ1ZmZlciA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihb
ZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBzaXplKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+bV93cml0ZXIpCisgICAgICAgICAgICAgICAgICAg
IHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyLT5hcHBlbmREYXRhKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVlNhbXBsZVJhdGVLZXki
KTsKLSAgICByZXR1cm4gQCJBVlNhbXBsZVJhdGVLZXkiOworICAgIGlmIChtX3dyaXRlcikKKyAg
ICAgICAgbV93cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFn
bWVudGVkTWVkaWFEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0pOwog
fQogCi1zdGF0aWMgTlNTdHJpbmcgKmdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2so
KQorLSAodm9pZCljbG9zZQogewotICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FW
RW5jb2RlckJpdFJhdGVLZXkoKSkKLSAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlv
bl9BVkVuY29kZXJCaXRSYXRlS2V5KCk7CisgICAgbV93cml0ZXIgPSBudWxscHRyOworfQorCitA
ZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKIAotICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZFbmNvZGVyQml0UmF0
ZUtleSIpOwotICAgIHJldHVybiBAIkFWRW5jb2RlckJpdFJhdGVLZXkiOworUmVmUHRyPE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRl
KGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBhdXRvIHdyaXRl
ciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoaGFzQXVkaW8sIHdp
ZHRoICYmIGhlaWdodCkpOworICAgIGlmICghd3JpdGVyLT5pbml0aWFsaXplKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiB3cml0ZXI7CiB9CiAKIFJlZlB0cjxNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShj
b25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogYXVkaW9UcmFjaywgY29uc3QgTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUqIHZpZGVvVHJhY2spCkBAIC0xMDAsMTc5ICsxMzMsMjU0IEBAIFJlZlB0
cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmNyZWF0ZShjb25zdCBNZWRpCiAgICAgcmV0dXJuIGNyZWF0ZSghIWF1ZGlvVHJhY2ssIHdpZHRo
LCBoZWlnaHQpOwogfQogCi1SZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZp
ZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCAqbWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIs
IENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pCiB7Ci0gICAgTlNTdHJpbmcgKmRpcmVjdG9yeSA9
IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAInZpZGVvcyIpOwotICAgIE5T
U3RyaW5nICpmaWxlbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiLyVsbGQubXA0
IiwgQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSkudmFsdWVdOwotICAg
IE5TU3RyaW5nICpwYXRoID0gW2RpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpmaWxl
bmFtZV07CisgICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIqPihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7CisgICAgd3JpdGVyLT5wcm9j
ZXNzTmV3Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpOworfQogCi0gICAgTlNVUkwgKm91
dHB1dFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF07Ci0gICAgU3RyaW5nIGZpbGVQ
YXRoID0gW3BhdGggVVRGOFN0cmluZ107Cit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojpjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkICptZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlciwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbikKK3sKKyAgICBhdXRvICp3
cml0ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcio+KG1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKTsKKyAgICB3cml0ZXItPnByb2Nlc3NOZXdDb21wcmVzc2VkQXVk
aW9TYW1wbGVCdWZmZXJzKCk7Cit9CisKK01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcihib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvKQorICAg
IDogbV9oYXNBdWRpbyhoYXNBdWRpbykKKyAgICAsIG1faGFzVmlkZW8oaGFzVmlkZW8pCit7Cit9
CisKK01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXIoKQoreworICAgIGNsZWFyKCk7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmluaXRpYWxpemUoKQorewogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIGF1dG8g
YXZBc3NldFdyaXRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5zdGFuY2Uo
KSBpbml0V2l0aFVSTDpvdXRwdXRVUkwgZmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZl
cnJvcl0pOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgbV93
cml0ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdp
dGhGaWxlVHlwZTpBVkZpbGVUeXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7CisgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2Ug
ZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAobG9uZyllcnJvci5jb2RlKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBhdXRv
IHdyaXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoV1RGTW92
ZShhdkFzc2V0V3JpdGVyKSwgV1RGTW92ZShmaWxlUGF0aCkpKTsKKyAgICBtX3dyaXRlckRlbGVn
YXRlID0gYWRvcHROUyhbW1dlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhX
cml0ZXI6IHRoaXNdKTsKKyAgICBbbV93cml0ZXIuZ2V0KCkgc2V0RGVsZWdhdGU6bV93cml0ZXJE
ZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBpZiAoaGFzQXVkaW8gJiYgIXdyaXRlci0+c2V0QXVkaW9J
bnB1dCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICh3aWR0aCAmJiBoZWln
aHQpIHsKLSAgICAgICAgaWYgKCF3cml0ZXItPnNldFZpZGVvSW5wdXQod2lkdGgsIGhlaWdodCkp
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAobV9oYXNBdWRpbykgeworICAg
ICAgICBtX2F1ZGlvQ29tcHJlc3NvciA9IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3Jl
YXRlKGNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAg
aWYgKCFtX2F1ZGlvQ29tcHJlc3NvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0KLSAgICByZXR1cm4gV1RGTW92ZSh3cml0ZXIpOworICAgIGlmIChtX2hhc1ZpZGVvKSB7Cisg
ICAgICAgIG1fdmlkZW9Db21wcmVzc29yID0gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpj
cmVhdGUoa0NNVmlkZW9Db2RlY1R5cGVfSDI2NCwgY29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVy
Q2FsbGJhY2ssIHRoaXMpOworICAgICAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29yKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0
cjxBVkFzc2V0V3JpdGVyPiYmIGF2QXNzZXRXcml0ZXIsIFN0cmluZyYmIGZpbGVQYXRoKQotICAg
IDogbV93cml0ZXIoV1RGTW92ZShhdkFzc2V0V3JpdGVyKSkKLSAgICAsIG1fcGF0aChXVEZNb3Zl
KGZpbGVQYXRoKSkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdD
b21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCkKIHsKKyAgICBBU1NFUlQobV9oYXNWaWRlbyk7
CisgICAgaWYgKCFtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV92aWRlb0Zv
cm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihtX3Zp
ZGVvQ29tcHJlc3Nvci0+Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkpOworICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzXSB7CisgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgaWYgKG1faGFzQXVkaW8gJiYgIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHN0YXJ0QXNzZXRXcml0ZXIoKTsKKyAgICAg
ICAgfSk7CisgICAgfQorICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGluZykKKyAgICAgICAgcmV0
dXJuOworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7CiB9CiAKLU1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQordm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1NhbXBs
ZUJ1ZmZlcnMoKQogewotICAgIGNsZWFyKCk7CisgICAgQVNTRVJUKG1faGFzQXVkaW8pOworICAg
IGlmICghbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAgIG1fYXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24obV9hdWRpb0Nv
bXByZXNzb3ItPmdldE91dHB1dFNhbXBsZUJ1ZmZlcigpKTsKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpc10geworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlm
IChtX2hhc1ZpZGVvICYmICFtX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24pCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBzdGFydEFzc2V0V3JpdGVyKCk7CisgICAgICAgIH0p
OworICAgIH0KKyAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCisgICAgICAgIHJldHVybjsK
KyAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOwogfQogCi12b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjpjbGVhcigpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpzdGFydEFzc2V0V3JpdGVyKCkKIHsKLSAgICBpZiAobV92aWRlb0lucHV0KSB7Ci0gICAg
ICAgIG1fdmlkZW9JbnB1dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fdmlk
ZW9QdWxsUXVldWUpOworICAgIGlmIChtX2hhc1ZpZGVvKSB7CisgICAgICAgIG1fdmlkZW9Bc3Nl
dFdyaXRlcklucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3Rh
bmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBvdXRwdXRTZXR0aW5nczpu
aWwgc291cmNlRm9ybWF0SGludDptX3ZpZGVvRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCldKTsKKyAg
ICAgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxU
aW1lOnRydWVdOworICAgICAgICBpZiAoIVttX3dyaXRlci5nZXQoKSBjYW5BZGRJbnB1dDptX3Zp
ZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKV0pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0YXJ0QXNzZXRX
cml0ZXIgZmFpbGVkIGNhbkFkZElucHV0IGZvciB2aWRlbyIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIFttX3dyaXRlci5nZXQoKSBhZGRJbnB1dDptX3ZpZGVvQXNz
ZXRXcml0ZXJJbnB1dC5nZXQoKV07CiAgICAgfQotICAgIGlmIChtX2F1ZGlvSW5wdXQpIHsKLSAg
ICAgICAgbV9hdWRpb0lucHV0LmNsZWFyKCk7Ci0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9h
dWRpb1B1bGxRdWV1ZSk7CisKKyAgICBpZiAobV9oYXNBdWRpbykgeworICAgICAgICBtX2F1ZGlv
QXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJ
bnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGlu
Z3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7
CisgICAgICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5S
ZWFsVGltZTp0cnVlXTsKKyAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6
bV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFz
c2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgYXVkaW8iKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV9hdWRp
b0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOwogICAgIH0KLSAgICBpZiAobV93cml0ZXIpCi0gICAg
ICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOwotICAgIGlmIChh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5k
bGVyKSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgaWYgKCFbbV93
cml0ZXIuZ2V0KCkgc3RhcnRXcml0aW5nXSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVy
IGZhaWxlZCBzdGFydFdyaXRpbmciKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtt
X3dyaXRlci5nZXQoKSBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6a0NNVGltZVplcm9dOworCisg
ICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKKworICAgIG1faGFzU3RhcnRlZFdy
aXRpbmcgPSB0cnVlOwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRW
aWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhlaWdodCkKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpCiB7Ci0gICAgQVNT
RVJUKCFtX3ZpZGVvSW5wdXQpOwotICAgIAotICAgIE5TRGljdGlvbmFyeSAqY29tcHJlc3Npb25Q
cm9wZXJ0aWVzID0gQHsKLSAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDogQCh3aWR0
aCAqIGhlaWdodCAqIDEyKSwKLSAgICAgICAgQVZWaWRlb0V4cGVjdGVkU291cmNlRnJhbWVSYXRl
S2V5IDogQCgzMCksCi0gICAgICAgIEFWVmlkZW9NYXhLZXlGcmFtZUludGVydmFsS2V5IDogQCgx
MjApLAotICAgICAgICBBVlZpZGVvUHJvZmlsZUxldmVsS2V5IDogQVZWaWRlb1Byb2ZpbGVMZXZl
bEgyNjRNYWluQXV0b0xldmVsCi0gICAgfTsKLQotICAgIE5TRGljdGlvbmFyeSAqdmlkZW9TZXR0
aW5ncyA9IEB7Ci0gICAgICAgIEFWVmlkZW9Db2RlY0tleTogQVZWaWRlb0NvZGVjSDI2NCwKLSAg
ICAgICAgQVZWaWRlb1dpZHRoS2V5OiBAKHdpZHRoKSwKLSAgICAgICAgQVZWaWRlb0hlaWdodEtl
eTogQChoZWlnaHQpLAotICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5OiBj
b21wcmVzc2lvblByb3BlcnRpZXMKLSAgICB9OwotICAgIAotICAgIG1fdmlkZW9JbnB1dCA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVk
aWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6dmlkZW9TZXR0aW5ncyBzb3Vy
Y2VGb3JtYXRIaW50Om5pbF0pOwotICAgIFttX3ZpZGVvSW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0
YUluUmVhbFRpbWU6dHJ1ZV07Ci0gICAgCi0gICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6
bV92aWRlb0lucHV0LmdldCgpXSkgewotICAgICAgICBtX3ZpZGVvSW5wdXQgPSBudWxscHRyOwot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgInRoZSB2aWRlbyBpbnB1dCBp
cyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0ZXIiKTsKKyAgICBpZiAoIW1f
YXVkaW9Db21wcmVzc29yKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFttX3dy
aXRlciBhZGRJbnB1dDptX3ZpZGVvSW5wdXQuZ2V0KCldOwotICAgIG1fdmlkZW9QdWxsUXVldWUg
PSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVWaWRlb1JlY29yZGluZ1B1bGxCdWZmZXJR
dWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisKKyAgICBpZiAoIVttX2F1ZGlvQXNzZXRX
cml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGF1dG8gYnVmZmVyID0gbV9hdWRpb0NvbXByZXNzb3ItPnRha2VPdXRwdXRTYW1w
bGVCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZm
ZXIuZ2V0KCldOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpzZXRBdWRpb0lucHV0KCkKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpCiB7Ci0gICAgQVNTRVJUKCFt
X2F1ZGlvSW5wdXQpOwotCi0gICAgTlNEaWN0aW9uYXJ5ICphdWRpb1NldHRpbmdzID0gQHsKLSAg
ICAgICAgQVZFbmNvZGVyQml0UmF0ZUtleSA6IEAoMjgwMDApLAotICAgICAgICBBVkZvcm1hdElE
S2V5IDogQChrQXVkaW9Gb3JtYXRNUEVHNEFBQyksCi0gICAgICAgIEFWTnVtYmVyT2ZDaGFubmVs
c0tleSA6IEAoMSksCi0gICAgICAgIEFWU2FtcGxlUmF0ZUtleSA6IEAoMjIwNTApCi0gICAgfTsK
LQotICAgIG1fYXVkaW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5w
dXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0
dGluZ3M6YXVkaW9TZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5pbF0pOwotICAgIFttX2F1ZGlv
SW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07Ci0gICAgCi0gICAgaWYg
KCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV9hdWRpb0lucHV0LmdldCgpXSkgewotICAgICAgICBt
X2F1ZGlvSW5wdXQgPSBudWxscHRyOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgInRoZSBhdWRpbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNz
ZXRXcml0ZXIiKTsKKyAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29yKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIFttX3dyaXRlciBhZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCld
OwotICAgIG1fYXVkaW9QdWxsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVB
dWRpb1JlY29yZGluZ1B1bGxCdWZmZXJRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisK
KyAgICBpZiAoIVttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0
YV0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gYnVmZmVyID0gbV92aWRlb0Nv
bXByZXNzb3ItPnRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1lID0g
Q01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyLmdldCgpKTsKKyAg
ICBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSA9IENNU2FtcGxlQnVmZmVyR2V0RGVjb2RlVGltZVN0
YW1wKGJ1ZmZlci5nZXQoKSk7CisgICAgbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzID0gdHJ1ZTsK
KworICAgIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSBhcHBlbmRTYW1wbGVCdWZmZXI6
YnVmZmVyLmdldCgpXTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6YXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKQoreworICAgIHdo
aWxlIChhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIoKSB8fCBhcHBlbmRDb21wcmVz
c2VkQXVkaW9TYW1wbGVCdWZmZXIoKSkgeyB9OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXBw
ZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIoQVZBc3NldFdyaXRlcklucHV0ICph
c3NldFdyaXRlcklucHV0LCBDTVRpbWUgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUgZGVj
b2RpbmdUaW1lU3RhbXApCit7CisgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm8gPSB7
IGtDTVRpbWVJbnZhbGlkLCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGRlY29kaW5nVGltZVN0YW1w
fTsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlciA9IE5VTEw7CisgICAgYXV0byBlcnJv
ciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIHRydWUs
IE5VTEwsIE5VTEwsIE5VTEwsIDAsIDEsICZ0aW1pbmdJbmZvLCAwLCBOVUxMLCAmYnVmZmVyKTsK
KyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJh
dGlvbk1hcmtlciBmYWlsZWQgQ01TYW1wbGVCdWZmZXJDcmVhdGUgd2l0aCAlZCIsIGVycm9yKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0Yo
YnVmZmVyKTsKKworICAgIENNU2V0QXR0YWNobWVudChzYW1wbGVCdWZmZXIuZ2V0KCksIGtDTVNh
bXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb24sIGtDRkJv
b2xlYW5UcnVlLCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOworICAgIGlmICgh
W2Fzc2V0V3JpdGVySW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOnNhbXBsZUJ1ZmZlci5nZXQoKV0p
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIgYXBwZW5kU2FtcGxlQnVmZmVyIHRvIHdyaXRlciBpbnB1dCBmYWlsZWQiKTsK
K30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRW5kT2ZWaWRlb1Nh
bXBsZUR1cmF0aW9uSWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGlmICghbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKKyAg
ICAgICAgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIobV92aWRlb0Fzc2V0
V3JpdGVySW5wdXQuZ2V0KCksIG1fbGFzdFZpZGVvUHJlc2VudGF0aW9uVGltZSwgbV9sYXN0Vmlk
ZW9EZWNvZGluZ1RpbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byBibG9jayA9IG1ha2VCbG9ja1B0cihbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKSB7Cisg
ICAgICAgICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihtX3ZpZGVv
QXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1lLCBtX2xh
c3RWaWRlb0RlY29kaW5nVGltZSk7CisgICAgICAgICAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5w
dXQgbWFya0FzRmluaXNoZWRdOworICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgfSk7CisgICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IHJlcXVlc3RNZWRpYURh
dGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9jazpi
bG9jay5nZXQoKV07Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZsdXNo
Q29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7Cisg
ICAgYXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjbGVh
cigpCit7CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dyaXRlci5jbGVhcigpOworCisg
ICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG51bGxwdHIpOworfQorCisKIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxl
QnVmZmVyUmVmPiBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoQ01TYW1wbGVC
dWZmZXJSZWYgb3JpZ2luYWxCdWZmZXIpCiB7CiAgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNQ2xv
Y2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOwogICAgIENNSXRlbUNvdW50IGNv
dW50ID0gMDsKICAgICBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmln
aW5hbEJ1ZmZlciwgMCwgbmlsLCAmY291bnQpOwotICAgIAorCiAgICAgVmVjdG9yPENNU2FtcGxl
VGltaW5nSW5mbz4gdGltZUluZm8oY291bnQpOwogICAgIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxl
VGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAm
Y291bnQpOwotICAgIAotICAgIGZvciAoQ01JdGVtQ291bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7CisKKyAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgIHRp
bWVJbmZvW2ldLmRlY29kZVRpbWVTdGFtcCA9IGtDTVRpbWVJbnZhbGlkOwogICAgICAgICB0aW1l
SW5mb1tpXS5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBzdGFydFRpbWU7CiAgICAgfQotICAgIAor
CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3QnVmZmVyID0gbnVsbHB0cjsKLSAgICBhdXRvIGVy
cm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZl
cik7Ci0gICAgaWYgKGVycm9yKQorICAgIGlmIChhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJD
cmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZl
ciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTVNh
bXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5nIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YobmV3
QnVmZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kVmlk
ZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKQogewotICAgIEFT
U0VSVChtX3ZpZGVvSW5wdXQpOwotICAgIGlmIChtX2lzU3RvcHBlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKSB7Ci0gICAgICAgIGlmICghW21fd3Jp
dGVyIHN0YXJ0V3JpdGluZ10pIHsKLSAgICAgICAgICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiY3JlYXRlIEFWQXNzZXRX
cml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQiLCAobG9uZylbbV93cml0
ZXIgZXJyb3JdKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBbbV93
cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xvY2tHZXRI
b3N0VGltZUNsb2NrKCkpXTsKLSAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7Ci0g
ICAgICAgIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhpcyA9
IHRoaXM7Ci0gICAgICAgIFttX3ZpZGVvSW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9u
UXVldWU6bV92aWRlb1B1bGxRdWV1ZSB1c2luZ0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAg
ICAgIGlmICghW21fdmlkZW9JbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCi0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV92aWRlb0xvY2spOwotICAgICAgICAgICAgICAgIGlmIChtX3ZpZGVvQnVmZmVyUG9vbC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gbV92aWRlb0J1ZmZlclBvb2wudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICAg
ICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lu
cHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldKQotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpOwotICAgICAgICAgICAgaWYgKG1f
aXNTdG9wcGVkICYmIG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
ICAgIFttX3ZpZGVvSW5wdXQgbWFya0FzRmluaXNoZWRdOwotICAgICAgICAgICAgICAgIG1fZmlu
aXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLnNpZ25hbCgpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9XTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGJ1ZmZlcldpdGhDdXJyZW50
VGltZSA9IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFtcChzYW1wbGVCdWZmZXIp
OwotICAgIGlmICghYnVmZmVyV2l0aEN1cnJlbnRUaW1lKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2NrKTsKLSAgICBtX3ZpZGVvQnVmZmVy
UG9vbC5hcHBlbmQoV1RGTW92ZShidWZmZXJXaXRoQ3VycmVudFRpbWUpKTsKKyAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG5vdCBzZXQgdGhlIHRpbWVzdGFtcHMgaWYgdGhleSBhcmUgYWxyZWFkeSBz
ZXQuCisgICAgaWYgKGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZl
cldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcikpCisgICAgICAgIG1fdmlkZW9Db21w
cmVzc29yLT5hZGRTYW1wbGVCdWZmZXIoYnVmZmVyV2l0aEN1cnJlbnRUaW1lLmdldCgpKTsKIH0K
IAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRl
QXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbikKQEAgLTI4MCw2OCArMzg4LDM5IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENN
Rm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29uCiAg
ICAgYXV0byBiYXNpY0Rlc2NyaXB0aW9uID0gV1RGOjpnZXQ8Y29uc3QgQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLmRlc2NyaXB0
aW9uKTsKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdCA9IG51bGxwdHI7CiAgICAg
YXV0byBlcnJvciA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBiYXNpY0Rlc2NyaXB0aW9uLCAwLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0
KTsKLSAgICBpZiAoZXJyb3IpCisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YoZm9ybWF0KTsKIH0KIAot
c3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUF1ZGlvU2Ft
cGxlQnVmZmVyV2l0aFBhY2tldERlc2NyaXB0aW9ucyhDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZv
cm1hdCwgc2l6ZV90IHNhbXBsZUNvdW50KQorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1w
bGVCdWZmZXJSZWY+IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9E
YXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29u
c3QgV1RGOjpNZWRpYVRpbWUmIHRpbWUsIHNpemVfdCBzYW1wbGVDb3VudCkKIHsKLSAgICBDTVRp
bWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7
Ci0gICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKLSAgICBhdXRv
IGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZmFsc2UsIE5VTEwsIE5VTEwsIGZvcm1hdCwgc2Ft
cGxlQ291bnQsIHN0YXJ0VGltZSwgTlVMTCwgJnNhbXBsZUJ1ZmZlcik7Ci0gICAgaWYgKGVycm9y
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYWRvcHRDRihzYW1wbGVCdWZm
ZXIpOwotfQotCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRBdWRpb1Nh
bXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90
IHNhbXBsZUNvdW50KQotewotICAgIEFTU0VSVChtX2F1ZGlvSW5wdXQpOwotICAgIGlmICgoIW1f
aGFzU3RhcnRlZFdyaXRpbmcgJiYgbV92aWRlb0lucHV0KSB8fCBtX2lzU3RvcHBlZCkKLSAgICAg
ICAgcmV0dXJuOwogICAgIGF1dG8gZm9ybWF0ID0gY3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlv
bihkZXNjcmlwdGlvbik7CiAgICAgaWYgKCFmb3JtYXQpCi0gICAgICAgIHJldHVybjsKLSAgICBp
ZiAobV9pc0ZpcnN0QXVkaW9TYW1wbGUpIHsKLSAgICAgICAgaWYgKCFtX3ZpZGVvSW5wdXQpIHsK
LSAgICAgICAgICAgIC8vIGF1ZGlvLW9ubHkgcmVjb3JkaW5nLgotICAgICAgICAgICAgaWYgKCFb
bV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewotICAgICAgICAgICAgICAgIG1faXNTdG9wcGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOkNNQ2xvY2tHZXRUaW1lKENNQ2xv
Y2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKLSAgICAgICAgICAgIG1faGFzU3RhcnRlZFdyaXRpbmcg
PSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIG1faXNGaXJzdEF1ZGlvU2FtcGxlID0gZmFsc2U7
Ci0gICAgICAgIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gcHJvdGVjdGVkVGhp
cyA9IHRoaXM7Ci0gICAgICAgIFttX2F1ZGlvSW5wdXQgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFk
eU9uUXVldWU6bV9hdWRpb1B1bGxRdWV1ZSB1c2luZ0Jsb2NrOlt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewotICAgICAgICAgICAgZG8gewotICAgICAgICAg
ICAgICAgIGlmICghW21fYXVkaW9JbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCi0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9hdWRpb0xvY2spOwotICAgICAgICAgICAgICAgIGlmIChtX2F1ZGlvQnVmZmVyUG9v
bC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gbV9hdWRpb0J1ZmZlclBvb2wudGFrZUZpcnN0KCk7Ci0gICAgICAgICAg
ICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7Ci0gICAgICAgICAgICAgICAgW21fYXVkaW9JbnB1
dCBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKLSAgICAgICAgICAgIH0gd2hpbGUg
KHRydWUpOwotICAgICAgICAgICAgaWYgKG1faXNTdG9wcGVkICYmIG1fYXVkaW9CdWZmZXJQb29s
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgbWFya0FzRmluaXNo
ZWRdOwotICAgICAgICAgICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLnNpZ25h
bCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9XTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBudWxscHRyOworICAgIGF1
dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9u
cyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgZm9ybWF0Lmdl
dCgpLCBzYW1wbGVDb3VudCwgdG9DTVRpbWUodGltZSksIE5VTEwsICZzYW1wbGVCdWZmZXIpOwor
ICAgIGlmIChlcnJvcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
Ik1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBh
Y2tldERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQorICAgIGF1dG8gYnVmZmVyID0gYWRvcHRDRihzYW1wbGVCdWZmZXIp
OwogCi0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQ
YWNrZXREZXNjcmlwdGlvbnMoZm9ybWF0LmdldCgpLCBzYW1wbGVDb3VudCk7Ci0gICAgaWYgKCFz
YW1wbGVCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVC
dWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdChzYW1wbGVCdWZmZXIuZ2V0KCks
IGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdl
YkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkubGlzdCgpKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAg
IHJldHVybjsKKyAgICBlcnJvciA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRp
b0J1ZmZlckxpc3QoYnVmZmVyLmdldCgpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCBkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxpc3Q+KGRhdGEpLmxpc3QoKSk7
CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVy
RnJvbUF1ZGlvQnVmZmVyTGlzdCBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBidWZmZXI7Cit9CiAKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2NrKTsKLSAgICBtX2F1ZGlvQnVmZmVyUG9vbC5hcHBl
bmQoV1RGTW92ZShzYW1wbGVCdWZmZXIpKTsKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRh
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgV1RGOjpN
ZWRpYVRpbWUmIHRpbWUsIHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBpZiAoYXV0byBzYW1w
bGVCdWZmZXIgPSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcihkYXRhLCBkZXNjcmlwdGlvbiwgdGlt
ZSwgc2FtcGxlQ291bnQpKQorICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nvci0+YWRkU2FtcGxlQnVm
ZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnN0b3BSZWNvcmRpbmcoKQpAQCAtMzUwLDM1ICs0MjksNDIgQEAgdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKworICAgIGlmIChtX3ZpZGVvQ29tcHJlc3NvcikKKyAg
ICAgICAgbV92aWRlb0NvbXByZXNzb3ItPmZpbmlzaCgpOworICAgIGlmIChtX2F1ZGlvQ29tcHJl
c3NvcikKKyAgICAgICAgbV9hdWRpb0NvbXByZXNzb3ItPmZpbmlzaCgpOworCiAgICAgaWYgKCFt
X2hhc1N0YXJ0ZWRXcml0aW5nKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKFttX3dyaXRl
ciBzdGF0dXNdID09IEFWQXNzZXRXcml0ZXJTdGF0dXNXcml0aW5nKTsKLSAgICBpZiAobV92aWRl
b0lucHV0KQotICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZS53YWl0KCk7Ci0K
LSAgICBpZiAobV9hdWRpb0lucHV0KQotICAgICAgICBtX2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFw
aG9yZS53YWl0KCk7CiAKICAgICBtX2lzU3RvcHBpbmcgPSB0cnVlOwotICAgIFttX3dyaXRlciBm
aW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrUHRyID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSgpIG11dGFibGUgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrUHRyID0gV1RGTW92ZSh3ZWFrUHRyKSwgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlm
ICghd2Vha1B0cikKLSAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIG1faXNT
dG9wcGluZyA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhh
bmRsZXIpCi0gICAgICAgICAgICAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGJ1ZmZlcikpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZGF0YSA9
IFdURk1vdmUoYnVmZmVyKTsKKyAgICBmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2lzU3RvcHBl
ZCA9IGZhbHNlOwotICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlOwotICAg
ICAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSB0cnVlOwotICAgICAgICAgICAgY2xlYXIo
KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZS5zaWduYWwo
KTsKLSAgICB9XTsKLSAgICBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmUud2FpdCgpOworICAgICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICBbbV93cml0ZXIg
Zmx1c2hdOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICAg
ICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdl
YWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgICAgIG1faXNTdG9wcGluZyA9IGZhbHNlOworICAgICAg
ICAgICAgICAgIGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gV1RGTW92ZShtX2RhdGEpOworICAgICAgICAgICAgICAg
ICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbV9pc1N0b3BwZWQgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgY2xlYXIoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9XTsKKyAgICB9KTsKIH0KIAog
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBA
IC0zOTIsNiArNDc4LDI0IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNo
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKIH0KIAordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAg
ICBpZiAoIW1fZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBzaXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2RhdGEtPmFwcGVuZChk
YXRhLCBzaXplKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIW1fZGF0YSkgewor
ICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgbV9kYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9V
TkRBVElPTikKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRX
UklURVJERUxFR0FURSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVlNDI4OTM1MjM2MGNiMTc4MDBkZDA2ZTZiNWIxNTM4Nzk2MmM3
OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBAIC0wLDAgKzEsNzEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgor
I2luY2x1ZGUgPFZpZGVvVG9vbGJveC9WVEVycm9ycy5oPgorCit0eXBlZGVmIHN0cnVjdCBvcGFx
dWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFx
dWVWVENvbXByZXNzaW9uU2Vzc2lvbiAqVlRDb21wcmVzc2lvblNlc3Npb25SZWY7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKENNVmlkZW9Db2RlY1R5
cGUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsK
KyAgICB+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7CisKKyAgICB2b2lkIGZpbmlzaCgp
OworICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKKyAgICBDTVNh
bXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKyAgICBSZXRhaW5QdHI8Q01T
YW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSk7
CisKKyAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9p
ZCogY2FsbGJhY2tPYmplY3QpOworCisgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2Ft
cGxlQnVmZmVyUmVmKTsKKyAgICBib29sIGluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zv
cm1hdERlc2NyaXB0aW9uUmVmKTsKKworICAgIHN0YXRpYyB2b2lkIHZpZGVvQ29tcHJlc3Npb25D
YWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3Ms
IENNU2FtcGxlQnVmZmVyUmVmKTsKKworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNw
YXRjaFF1ZXVlOworICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZl
clF1ZXVlOworICAgIFJldGFpblB0cjxWVENvbXByZXNzaW9uU2Vzc2lvblJlZj4gbV92dFNlc3Np
b247CisKKyAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07CisKKyAgICBDTVZpZGVvQ29k
ZWNUeXBlIG1fb3V0cHV0Q29kZWNUeXBlOworICAgIGZsb2F0IG1fbWF4S2V5RnJhbWVJbnRlcnZh
bER1cmF0aW9uIHsgMi4wIH07CisgICAgdW5zaWduZWQgbV9leHBlY3RlZEZyYW1lUmF0ZSB7IDMw
IH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjExODRlYTUzOTc4NDI1YTg3Y2RhODIzNzkz
NDA4OTYxMjQ3ZDcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTAs
MCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPENv
cmVNZWRpYS9Db3JlTWVkaWEuaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgor
I2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZUQ29tcHJlc3Npb25TZXNzaW9uLmg+CisjaW1wb3J0IDx3
dGYvU29mdExpbmtpbmcuaD4KKworI2ltcG9ydCA8cGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5r
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjpjcmVhdGUoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUsIENN
QnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0
KQoreworICAgIGF1dG8gY29tcHJlc3NvciA9IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I+KG5ldyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iob3V0cHV0Q29k
ZWNUeXBlKSk7CisgICAgaWYgKCFjb21wcmVzc29yLT5pbml0aWFsaXplKGNhbGxiYWNrLCBjYWxs
YmFja09iamVjdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb21wcmVz
c29yOworfQorCitWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvcihDTVZpZGVvQ29kZWNUeXBlIG91dHB1dENvZGVjVHlwZSkKKyAgICA6IG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkgfQorICAgICwg
bV9vdXRwdXRDb2RlY1R5cGUgeyBvdXRwdXRDb2RlY1R5cGUgfQoreworfQorCitWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6On5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQoreworICAg
IGlmIChtX3NlcmlhbERpc3BhdGNoUXVldWUpCisgICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9z
ZXJpYWxEaXNwYXRjaFF1ZXVlKTsKK30KKworYm9vbCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9p
ZCogY2FsbGJhY2tPYmplY3QpCit7CisgICAgQ01CdWZmZXJRdWV1ZVJlZiBvdXRwdXRCdWZmZXJR
dWV1ZTsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxl
QnVmZmVycygpLCAmb3V0cHV0QnVmZmVyUXVldWUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHVuYWJsZSB0byBj
cmVhdGUgYnVmZmVyIHF1ZXVlICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIG1fb3V0cHV0QnVmZmVyUXVldWUgPSBvdXRwdXRCdWZmZXJRdWV1ZTsKKyAgICBD
TUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSwgY2Fs
bGJhY2ssIGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJRdWV1ZVRyaWdnZXJfV2hlbkRhdGFCZWNv
bWVzUmVhZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKKworICAgIG1faXNFbmNvZGluZyA9IHRydWU7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjpmaW5pc2goKQoreworICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBe
eworICAgICAgICBhdXRvIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1l
cyhtX3Z0U2Vzc2lvbi5nZXQoKSwga0NNVGltZUludmFsaWQpOworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IgVlRDb21wcmVzc2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVy
cm9yKTsKKworICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0
cHV0QnVmZmVyUXVldWUuZ2V0KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJv
ciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1
ZU1hcmtFbmRPZkRhdGEgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisKKyAgICAgICAgbV9pc0Vu
Y29kaW5nID0gZmFsc2U7CisgICAgfSk7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwgT1NT
dGF0dXMgc3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVy
KQoreworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKHN0YXR1cywgTWVkaWFTdHJlYW0sICJWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrIHN0YXR1cyBp
cyAlZCIsIHN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyAhPSBub0VycikKKyAgICAgICAgcmV0dXJu
OworCisgICAgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yICpjb21wcmVzc29yID0gc3RhdGlj
X2Nhc3Q8VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4ocmVmQ29uKTsKKworICAgIGF1dG8g
ZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZShjb21wcmVzc29yLT5tX291dHB1dEJ1ZmZlclF1
ZXVlLmdldCgpLCBidWZmZXIpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRp
YVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKK30KKworYm9vbCBWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9u
UmVmIGZvcm1hdERlc2NyaXB0aW9uKQoreworICAgIENNVmlkZW9EaW1lbnNpb25zIGRpbWVuc2lv
bnMgPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25zKGZvcm1hdERlc2NyaXB0
aW9uKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgTlNEaWN0aW9uYXJ5ICplbmNvZGVyU3BlY2lm
aWNhdGlvbnMgPSBuaWw7CisjZWxzZQorICAgIE5TRGljdGlvbmFyeSAqZW5jb2RlclNwZWNpZmlj
YXRpb25zID0gQHsoX19icmlkZ2UgTlNTdHJpbmcgKilrVlRWaWRlb0VuY29kZXJTcGVjaWZpY2F0
aW9uX0VuYWJsZUhhcmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0VuY29kZXI6QFlFU307CisjZW5kaWYK
KworICAgIFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHZ0U2Vzc2lvbjsKKyAgICBhdXRvIGVycm9y
ID0gVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGltZW5z
aW9ucy53aWR0aCwgZGltZW5zaW9ucy5oZWlnaHQsIG1fb3V0cHV0Q29kZWNUeXBlLCAoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKWVuY29kZXJTcGVjaWZpY2F0aW9ucywgTlVMTCwgTlVMTCwgdmlk
ZW9Db21wcmVzc2lvbkNhbGxiYWNrLCB0aGlzLCAmdnRTZXNzaW9uKTsKKyAgICBpZiAoZXJyb3Ip
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisgICAgbV92dFNlc3Npb24gPSBh
ZG9wdENGKHZ0U2Vzc2lvbik7CisKKyAgICBlcnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1f
dnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lLCBrQ0ZC
b29sZWFuVHJ1ZSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFt
LCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUU2Vzc2lvblNldFByb3BlcnR5IGtWVENv
bXByZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Cisg
ICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29t
cHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24sIChfX2JyaWRn
ZSBDRlR5cGVSZWYpQChtX21heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbikpOworICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X01h
eEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICBl
cnJvciA9IFZUU2Vzc2lvblNldFByb3BlcnR5KG1fdnRTZXNzaW9uLmdldCgpLCBrVlRDb21wcmVz
c2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKUAo
bV9leHBlY3RlZEZyYW1lUmF0ZSkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBN
ZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9w
ZXJ0eSBrVlRDb21wcmVzc2lvblByb3BlcnR5S2V5X0V4cGVjdGVkRnJhbWVSYXRlIGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOworCisgICAgLy8gRklYTUU6IFNldCB2aWRlbyBjb21wcmVzc2lvbiBy
YXRlLgorICAgIGVycm9yID0gVlRDb21wcmVzc2lvblNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFt
ZXMobV92dFNlc3Npb24uZ2V0KCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBN
ZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vz
c2lvblByZXBhcmVUb0VuY29kZUZyYW1lcyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKworICAg
IHJldHVybiBZRVM7Cit9CisKK3ZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9j
ZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIW1f
dnRTZXNzaW9uKSB7CisgICAgICAgIGlmICghaW5pdENvbXByZXNzaW9uU2Vzc2lvbihDTVNhbXBs
ZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKGJ1ZmZlcikpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldEltYWdl
QnVmZmVyKGJ1ZmZlcik7CisgICAgYXV0byBwcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVNhbXBs
ZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIpOworICAgIGF1dG8gZHVyYXRp
b24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7CisgICAgYXV0byBlcnJvciA9
IFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUobV92dFNlc3Npb24uZ2V0KCksIGltYWdl
QnVmZmVyLCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGR1cmF0aW9uLCBOVUxMLCB0aGlzLCBOVUxM
KTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKK30KKwordm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OmFkZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCit7CisgICAgZGlz
cGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGlmICghbV9pc0Vu
Y29kaW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHByb2Nlc3NTYW1wbGVCdWZm
ZXIoYnVmZmVyKTsKKyAgICB9KTsKK30KKworQ01TYW1wbGVCdWZmZXJSZWYgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQoreworICAgIHJldHVybiAo
Q01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFk
KG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSk7Cit9CisKK1JldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVm
ZmVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nh
c3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1fb3V0cHV0QnVmZmVyUXVl
dWUuZ2V0KCkpKSkpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmlu
ZGV4IDI0NTEzY2ZlZmEzOTI1MGY2Y2IyNTE3Yjc2NGQwOTliZTkxMDVkNTAuLjExYzJjZDZmZjlj
ZGZkY2M5YmI0OWEzOTI3ODU5YmZjNDRmMDVlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5t
bQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0
ZW0uaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggY2Q0YWFjOTExNzYxZTMzNTc0ODRlZDBjZDZkNzcyNjNkYjQ5NmRi
NS4uZWQ4YTQzZjIwOWVmZGNkN2FmMjA3YjQ1MGNhYjQyMzI4OWQ2ZGU4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTczLDcgKzU3Myw2IEBAIHZvaWQgSW50ZXJuYWxz
OjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldElu
dGVycnVwdEF1ZGlvT25QYWdlVmlzaWJpbGl0eUNoYW5nZUVuYWJsZWQoZmFsc2UpOwogICAgIFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXI6OnNldEN1c3RvbVByaXZhdGVSZWNvcmRlckNyZWF0b3IobnVs
bHB0cik7Ci0gICAgcGFnZS5tZWRpYVJlY29yZGVyUHJvdmlkZXIoKS5zZXRVc2VHUFVQcm9jZXNz
KHRydWUpOwogI2VuZGlmCiAKICAgICBIVE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1v
cnlGb3JUZXN0aW5nKDApOyAvLyBUaGlzIG1lYW5zIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCBjMTFmNjJlMjI4Yjc0YWQ2Y2YyYzFkZDViNmMwMWI5Mzk2M2E1MWEzLi5l
ZDJlYTgyNWEwYjdlNmQ5NDk1ZGZhODRiOWRhZWJjN2Q3NzdmODY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC0yMjgsNiArMjI4LDcgQEAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIKICAgICByZXR1cm4gKm1f
dXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIH0KIAorI2lmIEhBVkUoQVZBU1NFVFdSSVRF
UkRFTEVHQVRFKQogUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6Om1lZGlhUmVjb3JkZXJNYW5hZ2VyKCkKIHsKICAgICBpZiAoIW1fcmVtb3RlTWVk
aWFSZWNvcmRlck1hbmFnZXIpCkBAIC0yMzUsNiArMjM2LDcgQEAgUmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhUmVjb3JkZXJNYW5hZ2Vy
KCkKIAogICAgIHJldHVybiAqbV9yZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKIH0KKyNlbmRp
ZgogCiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXImIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmF1ZGlvVHJhY2tSZW5kZXJlck1hbmFnZXIoKQogewpAQCAtMjUx
LDcgKzI1Myw3IEBAIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNhbXBsZUJ1ZmZlckRpCiAKICAgICByZXR1cm4gKm1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIH0KLSNlbmRpZgorI2VuZGlmIC8vICBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBVU0UoTElCV0VCUlRDKQogTGliV2ViUlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmxpYldlYlJUQ0NvZGVjc1Byb3h5KCkKQEAgLTM2OSw2ICszNzEsNyBAQCBi
b29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQwogICAgICAgICB1c2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5KCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRF
TEVHQVRFKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewog
ICAgICAgICBtZWRpYVJlY29yZGVyTWFuYWdlcigpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlBy
b2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzc3
LDYgKzM4MCw3IEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDCiAgICAgICAgIG1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZVJlbW90ZU1lZGlhUmVjb3JkZXJNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisjZW5kaWYgLy8gSEFW
RShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1h
bmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBhdWRpb1RyYWNrUmVuZGVy
ZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zOTMsNyArMzk3LDcgQEAgYm9vbCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEMKICAgICAgICAgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cigpLmRpZFJlY2VpdmVMYXllck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VC
UlRDKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
TGliV2ViUlRDQ29kZWNzUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBs
aWJXZWJSVENDb2RlY3NQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA1YzI3MTZiY2FiN2VhMmYzMWFhYWYwM2Nj
OGI0YTdkNjU4NWJiNWFkLi40OWFiNjk3MDQ4NDc4NDE2NGExMTBhYTZmOTczMjgzZmEzNDM0MzUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTExNiw3ICsxMTYsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eSYgdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgpOworI2lmIEhBVkUo
QVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyJiBt
ZWRpYVJlY29yZGVyTWFuYWdlcigpOworI2VuZGlmCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyJiBhdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyKCk7CiAgICAg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlcigpOwogI2VuZGlmCkBAIC0xNjYsNyArMTY4LDkgQEAgcHJpdmF0ZToKICAg
ICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eT4gbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OworI2lmIEhBVkUoQVZB
U1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlcj4gbV9yZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKKyNlbmRpZgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI+
IG1fYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCBjMmY1Mjg1MTlmNTIyM2FhMGYw
MDJjNDUwMDEyNTY2MjgyZTE4MTI0Li5mODhhMjM5NDRiYzAxNzkwZjVhNjc1NWI2ZDNlZWVlODhh
YTJmYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyLmgiCiAKLSNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiU2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgpA
QCAtMTM1LDQgKzEzNSw0IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6c3RvcFJlY29yZGlu
ZygpCiAKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVS
REVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IGZmNWE4Mjk4NGZiMzk2NDFlZDFlNTYxNTQ4OThmOTUy
NmM5YmQ1MmEuLmE4M2RhMzA1NTJlYjQxZWY5NTk0NGRiM2FhNTA0ZmZjYTNmNjgzODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNp
ZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUgIk1lZGlh
UmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCkBAIC04
Miw0ICs4Miw0IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
SEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4K
aW5kZXggNTRiYTY0ZDU2ZmJlYTMwZmNiYjM5NmRhZDVlYTNmYzMwYzk5NWRlZS4uY2UzMmI3MDRl
N2VjOGM0NzdiZTA1MWUyMGQ3ZDI3YWYwYzRmODIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNz
YWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaWYgUExBVEZPUk0oQ09DT0EpICYm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFT
U0VUV1JJVEVSREVMRUdBVEUpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUmVjb3JkZXIgTm90
UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyLmNwcAppbmRleCAwYjg0Yjg1MTliYTZmNTA2ZTE4NzY1ZmY2ZDJlNGQwY2My
NmI2MzZjLi43ZjRjNjZkNmEyMzYyZTUyZTZhMDc2NGU3ODlmNmQyMGU5MTY3MmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgiCiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXIuaAppbmRleCA1NDcxYmJkNDg0ZGQ5YjNkMGM4ZWUzZGQ2MTFjMDVlOTBkMDM2YzdjLi5hYjgw
MWJjMTE0YzQ5MjNlYTlkNzkwZjkyM2M1MmRmNDlhYTExZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNp
ZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIAogI2luY2x1ZGUgIk1lZGlh
UmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAzODdhNDEzNjFjZGJk
OWI3ZWFlMmMzMzczNjUyYTk4ZjQ5MzRlMTc0Li5jNTE4NDEwY2I0OWZhZGE2ODhkMzc3ZDFkN2Ew
NmNkZTNiYWM3OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMu
aW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdS
SVRFUkRFTEVHQVRFKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciBO
b3RSZWZDb3VudGVkIHsKICAgICBDcmVhdGVSZWNvcmRlcihXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJ
ZGVudGlmaWVyIGlkLCBib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIC0+IChP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBjcmVhdGlvbkVycm9yKSBBc3luYwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAppbmRleCBlNWMzMzkyNDFh
MWIxOTMyYTBiYWU5OTBlMGEyNGU3OTZjZDc0ZTA5Li45NWFjZjI1ZWIyZTRkZGVmOGNmODJjNWYz
MjkxODFmN2UzZWEyNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlc1Jl
cGxpZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
IAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMzExYzE2MWU0
OGMwYzg2ZGY2YWFkNDcwM2EzODU2OTQ1ZmExMzMyNS4uZjVhYzMxODFmNTM5MGJlZWQyZjQwYzFm
MWMyODBhZDQ0NDJjZDkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAtMjYsNyArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRl
LmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRF
KQogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25u
ZWN0aW9uLmgiCkBAIC0xMzUsNCArMTM1LDQgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6
c3RvcFJlY29yZGluZygpCiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjZW5kaWYgLy8gUExBVEZP
Uk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCA2
ZmYyOTQwNzk5NDdiNmFjOTY2YmU5MGFlNmE4M2M0MDExNDgwNTU3Li4zZDdiZWUyOTY0M2M5OWI1
MTBlN2I4YTRlMDU0MGI3ZWUyMDdhNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUo
QVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgpAQCAtNzYsNSArNzYs
NSBAQCBwcml2YXRlOgogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApp
bmRleCA2Y2IzMjFlZDI1ODk0ODllOWRiMGNiYmQ1YjU1OWIxZTU2YTAzNDlkLi41ZjUwNzVmMTYz
N2I0NTlkZjU1YTdkMjUzNGQ1YjdiZjNiNTk0MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZT4gTWVkaWFSZWNvcmRlclByb3Zp
ZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVh
bSkKIHsKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBpZiAobV91c2VHUFVQcm9jZXNzKQog
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZT4oc3RyZWFtKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDE4MmZlZGI2ZGFhMzQ0MWM4ZmY1M2M5Njc2ZTU0NjI1YWI1YjMwYTcu
LjA5Zjg4MTk2ZjQ4MDM0Y2FmYzEwZjdiOWJmZTIyZTdmNDUwMDA1ZmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMC0wNi0wNyAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBN
ZWRpYVJlY29yZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDY1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAg
ICAgRGlzYWJsZSB0ZXN0cyBvbiBhbGwgcGxhdGZvcm1zIGV4Y2VwdCB0aGUgb25lcyBzdXBwb3J0
aW5nIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlv
LXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sOgorICAgICAgICBSZW1vdmUgd2Vi
IGF1ZGlvIGdlbmVyYXRpb24gc2luY2UgdGhlcmUgc2VlbXMgdG8gYmUgc29tZSB1bnN0YWJpbGl0
eSBpbiB3ZWIgYXVkaW8gLT4gc3RyZWFtIC0+IG1lZGlhIHJlY29yZGVyLgorICAgICAgICB3aGlj
aCBzaG91bGQgYmUgZml4ZWQgYXMgZm9sbG93LXVwIHNwZWNpZmljIHBhdGNoZXMuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIEVuYWJsZSBydW5uaW5n
IHRlc3RzLgorCiAyMDIwLTA2LTA3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQXBwbGUgUGF5XSBIQVZFKFBBWU1FTlRfTUVUSE9EX0JJTExJTkdfQUREUkVTUykg
c2hvdWxkIGJlIHRydWUgb24gaU9TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhMDVmNTg2NTY1ZGE5
MmVhNWIxMjYzNTBhOTUzYzQ4NmY5NjNmNzE0Li5mNmRlYTVhYWM2ZDRkZDcxNmJkMzgzMjUxZDYw
YmJkNDI2MDVlNTg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMyOTksNyArMzI5OSwxMCBAQCB3
ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLW5wb3QtdmlkZW8uaHRtbCBb
IFNraXAgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvY2FudmFzL3JhcGlkLXJlc2l6aW5nLmh0
bWwgWyBTa2lwIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZHJh
dy1idWZmZXJzLmh0bWwgWyBTa2lwIF0KIAotd2Via2l0Lm9yZy9iLzE5NzY3MyBodHRwL3dwdC9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS5o
dG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQorIyBOb3Qgc3VwcG9ydGVkIGJ5IGRlZmF1bHQK
K2h0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAgXQorZmFzdC9oaXN0b3J5L3BhZ2Ut
Y2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIFNraXAgXQogCiAjIFdlYkdMIDIgQ29uZm9ybWFu
Y2UgU3VpdGUgcnVsZXMgZm9yIHJlZ3VsYXIgYm90cyBwb3N0IEFOR0xFIGJhY2tlbmQgYWRvcHRp
b24uCiAjIERFUVAgaXMgc2tpcHBlZCBvbiB0aGUgbWFpbiBmbGVldCBvZiBib3RzIGJlY2F1c2Ug
b2YgdGhlIGxvbmcgcnVuIHRpbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1n
cHVwcm9jZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwKaW5k
ZXggMzMzMDZkZTc5NDdiYmI5MjU3Mzk0YzNiYTE5NjIwMWIwNTg0Nzg4Yi4uODgwMTQ4NjU3ZTI1
ZGRlMzNjYjEwOTM0NmQ2Y2JlYWFiN2Y5Y2VmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFp
bGFibGUtZ3B1cHJvY2Vzcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nl
c3MuaHRtbApAQCAtNTYsMTcgKzU2LDcgQEAKICAgICB9CiAKICAgICBhc3luY190ZXN0KHQgPT4g
ewotICAgICAgICBjb25zdCBhYyA9IG5ldyBBdWRpb0NvbnRleHQoKTsKLSAgICAgICAgY29uc3Qg
b3NjID0gYWMuY3JlYXRlT3NjaWxsYXRvcigpOwotICAgICAgICBjb25zdCBkZXN0ID0gYWMuY3Jl
YXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOwotICAgICAgICBjb25zdCBhdWRpbyA9IGRlc3Qu
c3RyZWFtOwotICAgICAgICBvc2MuY29ubmVjdChkZXN0KTsKLQogICAgICAgICBjb25zdCB2aWRl
byA9IGNyZWF0ZVZpZGVvU3RyZWFtKCk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHModmlkZW8uZ2V0
QXVkaW9UcmFja3MoKS5sZW5ndGgsIDAsICJ2aWRlbyBtZWRpYXN0cmVhbSBzdGFydHMgd2l0aCBu
byBhdWRpbyB0cmFjayIpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGF1ZGlvLmdldEF1ZGlvVHJh
Y2tzKCkubGVuZ3RoLCAxLCAiYXVkaW8gbWVkaWFzdHJlYW0gc3RhcnRzIHdpdGggb25lIGF1ZGlv
IHRyYWNrIik7Ci0gICAgICAgIHZpZGVvLmFkZFRyYWNrKGF1ZGlvLmdldEF1ZGlvVHJhY2tzKClb
MF0pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHZpZGVvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
LCAxLCAidmlkZW8gbWVkaWFzdHJlYW0gc3RhcnRzIHdpdGggb25lIGF1ZGlvIHRyYWNrIik7CiAg
ICAgICAgIGNvbnN0IHJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIodmlkZW8pOwogICAgICAg
ICBsZXQgbW9kZSA9IDA7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggNjU0MzM4MDA1OGI5OWZkYjE2ZjM2NDFiNTk2ZTM5MjQwNTIwMTc2NS4uZGE3MGI1
ZWU0OWQ4M2M4ODUxNjQyZDg3ZTkzNDIxNWJmM2E0MWRiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3MDgsNiArMTcwOCwxMCBAQCB3ZWJraXQub3Jn
L2IvMjEyMTcyIFsgQ2F0YWxpbmEgXSBmYXN0L3RleHQvZm9udC1jb2xsZWN0aW9uLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdQogWyBDYXRhbGluYSsgXSBmYXN0L3RleHQvZGVzaWduLXN5c3RlbS11aS0x
NS5odG1sIFsgUGFzcyBdCiBbIENhdGFsaW5hKyBdIGZhc3QvdGV4dC9kZXNpZ24tc3lzdGVtLXVp
LTE2Lmh0bWwgWyBQYXNzIF0KIAorWyBDYXRhbGluYSsgXSBodHRwL3dwdC9tZWRpYXJlY29yZGVy
IFsgUGFzcyBGYWlsdXJlIF0gCitbIENhdGFsaW5hKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFBhc3MgRmFpbHVyZSBdCitbIENhdGFsaW5h
KyBdIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLW1lZGlhLXJlY29yZGVyLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQorCiB3ZWJraXQub3JnL2IvMjAwMTI4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtdmlkZW8tZWxlbWVudC92
aWRlb190aW1ldXBkYXRlX29uX3NlZWsuaHRtbCBbIFRpbWVvdXQgUGFzcyBdCiAKICMgcmRhcjov
LzU1NDA1ODUxIChbIG1hY09TIF0gTGF5b3V0IHRlc3RzIHdlYmdwdS8qLXRyaWFuZ2xlLXN0cmlw
Lmh0bWwgYXJlIGZsYWt5IGZhaWx1cmVzLiAoMjAxODI3KSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>