<?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>159836</bug_id>
          
          <creation_ts>2016-07-15 14:40:00 -0700</creation_ts>
          <short_desc>[MediaStream, Mac] Render media stream audio buffers</short_desc>
          <delta_ts>2017-01-12 05:58:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=159796</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=159833</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=160305</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="George Ruan">gruan</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1211576</commentid>
    <comment_count>0</comment_count>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-07-15 14:40:00 -0700</bug_when>
    <thetext>Implement AVSampleBufferAudioRenderer and AVSampleBufferSynchronizer in MediaPlayerPrivateMediaStream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211577</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-07-15 14:40:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/27380390&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219822</commentid>
    <comment_count>2</comment_count>
      <attachid>285991</attachid>
    <who name="George Ruan">gruan</who>
    <bug_when>2016-08-12 18:36:21 -0700</bug_when>
    <thetext>Created attachment 285991
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265848</commentid>
    <comment_count>3</comment_count>
      <attachid>298603</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-01-11 11:33:34 -0800</bug_when>
    <thetext>Created attachment 298603
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265888</commentid>
    <comment_count>4</comment_count>
      <attachid>298603</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-01-11 13:11:06 -0800</bug_when>
    <thetext>Comment on attachment 298603
Proposed patch.

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

r=me with nits and comments.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:156
&gt; +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
&gt; +{
&gt; +    UNUSED_PARAM(context);
&gt; +    UNUSED_PARAM(keyPath);
&gt; +    ASSERT(_parent);
&gt; +
&gt; +    RetainPtr&lt;WebAVSampleBufferStatusChangeListener&gt; protectedSelf = self;
&gt; +    if ([object isKindOfClass:getAVSampleBufferDisplayLayerClass()]) {

The way I like to do these KVO observer methods is like this:

static void* DisplayLayerContext = &amp;DisplayLayerContext;
static void* AudioRendererContext = &amp;AudioRendererContext;

...

if (context == DisplayLayerContext) { ... } else if (context == AudioRendererContext) { ... }.

Your way is totally fine too.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:269
&gt; +    MediaTime now = streamTime();
&gt; +    while (!queue.isEmpty()) {
&gt; +        if (queue.first()-&gt;decodeTime() &gt; now)
&gt; +            break;
&gt; +        queue.removeFirst();
&gt; +    };

For SourceBuffer, we use a variant of SampleMap here, to ensure the samples are dequeued in decode order. Specifically, we use a DecodeOrderSampleMap::MapType, where MapType is a std::map from a std::pair&lt;&gt; of DecodeTime, PresentationTime -&gt; MediaTime.  If you can guarantee decode order insertion into this queue, you don&apos;t need it, but if there&apos;s a chance that samples will come in out-of-order, you&apos;ll eventually need something like DecodeOrderSampleMap (or to sort the queue).

With a std::map, this would turn into: queue.erase(queue.start(), queue.upper_bound({now, MediaTime::zeroTime()});  (Erase everything from the beginning up until the first sample with a decode time greater than now.)

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:319
&gt; +    static const double audioRendererLatency = 0.2;
&gt; +    auto audioTrack = m_audioTrackMap.get(track.id());
&gt; +    MediaTime timelineOffset = audioTrack-&gt;timelineOffset();
&gt; +    if (timelineOffset == MediaTime::invalidTime()) {
&gt; +        timelineOffset = calculateTimelineOffset(sample, audioRendererLatency);
&gt; +        audioTrack-&gt;setTimelineOffset(timelineOffset);

This...

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:351
&gt; +    auto videoTrack = m_videoTrackMap.get(track.id());
&gt; +    MediaTime timelineOffset = videoTrack-&gt;timelineOffset();
&gt; +    if (timelineOffset == MediaTime::invalidTime()) {
&gt; +        timelineOffset = calculateTimelineOffset(sample, 0.01);

And this. First off, we should probably document the 0.01s value (the same way audioRendererLatency is documented by making it a static const).  But shouldn&apos;t the offset values be the same between the audio and video tracks? Like, should this be stored on a per MediaPlayer basis rather than a per-track basis, so that the audio and video doesn&apos;t get out of sync?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:455
&gt; +    m_pendingAudioSampleQueue.clear();
&gt; +    for (auto&amp; renderer : m_audioRenderers.values()) {
&gt; +        [m_statusChangeListener stopObservingRenderer:renderer.get()];
&gt; +        [renderer flush];
&gt; +        [renderer stopRequestingMediaData];
&gt; +    }
&gt; +    m_audioRenderers.clear();

We don&apos;t remove the renderers from the synchronizer here, but we do above in destroyAudioRenderer().  Could we refactor this a bit to make a destroyAudioRenderer(AVSampleBufferAudioRenderer*), and call that from both destroyAudioRenderers() and destroyAudioRenderer(AtomicString) ?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:485
&gt; +    if (status.integerValue == AVQueuedSampleBufferRenderingStatusRendering)
&gt; +        m_audioTrackMap.get(trackID)-&gt;setTimelineOffset(MediaTime::invalidTime());

I don&apos;t know that this is necessary.  You&apos;ll probably get the KVO that triggers this after you&apos;ve already started pushing in data; it may cause discontinuities.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:44
&gt; +MediaTime MediaSampleAVFObjC::outputPresentationTime() const
&gt; +{
&gt; +    return toMediaTime(CMSampleBufferGetOutputPresentationTimeStamp(m_sample.get()));
&gt; +}
&gt; +

I don&apos;t think Output Presentation Timestamps are necessary here. I doubt we&apos;ll ever be dealing with samples that play backwards, or are trimmed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266006</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-01-11 17:50:11 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 298603 [details]
&gt; Proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298603&amp;action=review
&gt; 
&gt; r=me with nits and comments.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:156
&gt; &gt; +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
&gt; &gt; +{
&gt; &gt; +    UNUSED_PARAM(context);
&gt; &gt; +    UNUSED_PARAM(keyPath);
&gt; &gt; +    ASSERT(_parent);
&gt; &gt; +
&gt; &gt; +    RetainPtr&lt;WebAVSampleBufferStatusChangeListener&gt; protectedSelf = self;
&gt; &gt; +    if ([object isKindOfClass:getAVSampleBufferDisplayLayerClass()]) {
&gt; 
&gt; The way I like to do these KVO observer methods is like this:
&gt; 
&gt; static void* DisplayLayerContext = &amp;DisplayLayerContext;
&gt; static void* AudioRendererContext = &amp;AudioRendererContext;
&gt; 
&gt; ...
&gt; 
&gt; if (context == DisplayLayerContext) { ... } else if (context ==
&gt; AudioRendererContext) { ... }.
&gt; 
&gt; Your way is totally fine too.
&gt; 

  I copy/pasted this from WebAVSampleBufferErrorListener in SourceBufferPrivateAVFObjC :-)

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:269
&gt; &gt; +    MediaTime now = streamTime();
&gt; &gt; +    while (!queue.isEmpty()) {
&gt; &gt; +        if (queue.first()-&gt;decodeTime() &gt; now)
&gt; &gt; +            break;
&gt; &gt; +        queue.removeFirst();
&gt; &gt; +    };
&gt; 
&gt; For SourceBuffer, we use a variant of SampleMap here, to ensure the samples
&gt; are dequeued in decode order. Specifically, we use a
&gt; DecodeOrderSampleMap::MapType, where MapType is a std::map from a
&gt; std::pair&lt;&gt; of DecodeTime, PresentationTime -&gt; MediaTime.  If you can
&gt; guarantee decode order insertion into this queue, you don&apos;t need it, but if
&gt; there&apos;s a chance that samples will come in out-of-order, you&apos;ll eventually
&gt; need something like DecodeOrderSampleMap (or to sort the queue).
&gt; 
&gt; With a std::map, this would turn into: queue.erase(queue.start(),
&gt; queue.upper_bound({now, MediaTime::zeroTime()});  (Erase everything from the
&gt; beginning up until the first sample with a decode time greater than now.)
&gt; 

  Thanks, we don&apos;t need that yet but will soon. I will change in an upcoming patch.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:319
&gt; &gt; +    static const double audioRendererLatency = 0.2;
&gt; &gt; +    auto audioTrack = m_audioTrackMap.get(track.id());
&gt; &gt; +    MediaTime timelineOffset = audioTrack-&gt;timelineOffset();
&gt; &gt; +    if (timelineOffset == MediaTime::invalidTime()) {
&gt; &gt; +        timelineOffset = calculateTimelineOffset(sample, audioRendererLatency);
&gt; &gt; +        audioTrack-&gt;setTimelineOffset(timelineOffset);
&gt; 
&gt; This...
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:351
&gt; &gt; +    auto videoTrack = m_videoTrackMap.get(track.id());
&gt; &gt; +    MediaTime timelineOffset = videoTrack-&gt;timelineOffset();
&gt; &gt; +    if (timelineOffset == MediaTime::invalidTime()) {
&gt; &gt; +        timelineOffset = calculateTimelineOffset(sample, 0.01);
&gt; 
&gt; And this. First off, we should probably document the 0.01s value (the same
&gt; way audioRendererLatency is documented by making it a static const).  But
&gt; shouldn&apos;t the offset values be the same between the audio and video tracks?
&gt; Like, should this be stored on a per MediaPlayer basis rather than a
&gt; per-track basis, so that the audio and video doesn&apos;t get out of sync?
&gt; 

  Yes, there should be one value. We need to experiment to figure out what the right value is long term, but fixed for now.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:455
&gt; &gt; +    m_pendingAudioSampleQueue.clear();
&gt; &gt; +    for (auto&amp; renderer : m_audioRenderers.values()) {
&gt; &gt; +        [m_statusChangeListener stopObservingRenderer:renderer.get()];
&gt; &gt; +        [renderer flush];
&gt; &gt; +        [renderer stopRequestingMediaData];
&gt; &gt; +    }
&gt; &gt; +    m_audioRenderers.clear();
&gt; 
&gt; We don&apos;t remove the renderers from the synchronizer here, but we do above in
&gt; destroyAudioRenderer().  Could we refactor this a bit to make a
&gt; destroyAudioRenderer(AVSampleBufferAudioRenderer*), and call that from both
&gt; destroyAudioRenderers() and destroyAudioRenderer(AtomicString) ?
&gt; 

  Fixed.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:485
&gt; &gt; +    if (status.integerValue == AVQueuedSampleBufferRenderingStatusRendering)
&gt; &gt; +        m_audioTrackMap.get(trackID)-&gt;setTimelineOffset(MediaTime::invalidTime());
&gt; 
&gt; I don&apos;t know that this is necessary.  You&apos;ll probably get the KVO that
&gt; triggers this after you&apos;ve already started pushing in data; it may cause
&gt; discontinuities.
&gt; 
  This only forces a recalculation of the offset, I don&apos;t think it should cause discontinuities.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:44
&gt; &gt; +MediaTime MediaSampleAVFObjC::outputPresentationTime() const
&gt; &gt; +{
&gt; &gt; +    return toMediaTime(CMSampleBufferGetOutputPresentationTimeStamp(m_sample.get()));
&gt; &gt; +}
&gt; &gt; +
&gt; 
&gt; I don&apos;t think Output Presentation Timestamps are necessary here. I doubt
&gt; we&apos;ll ever be dealing with samples that play backwards, or are trimmed.
&gt;
  We can talk about this offline and revisit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266011</commentid>
    <comment_count>6</comment_count>
      <attachid>298646</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-01-11 17:58:29 -0800</bug_when>
    <thetext>Created attachment 298646
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266045</commentid>
    <comment_count>7</comment_count>
      <attachid>298653</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-01-11 19:50:09 -0800</bug_when>
    <thetext>Created attachment 298653
Updated patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266070</commentid>
    <comment_count>8</comment_count>
      <attachid>298653</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-11 21:23:37 -0800</bug_when>
    <thetext>Comment on attachment 298653
Updated patch for landing.

Clearing flags on attachment: 298653

Committed r210621: &lt;http://trac.webkit.org/changeset/210621&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266071</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-11 21:23:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266130</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-01-12 05:58:14 -0800</bug_when>
    <thetext>Plus https://trac.webkit.org/r210631 to revert an accidental change.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285991</attachid>
            <date>2016-08-12 18:36:21 -0700</date>
            <delta_ts>2017-01-11 11:33:34 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-159836-20160812183441.patch</filename>
            <type>text/plain</type>
            <size>33222</size>
            <attacher name="George Ruan">gruan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzODA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOThhYTUwYjA5NjM0OWQ3
Y2Q4Yjk4OTNkMTZkNTU3ZDNhZDJlMzU4OC4uNTcxYTEwZTUxMTdlOTQwZThiZjM3NTk1ZTY5NDM5
ZDhmZWFiMzlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE2LTA4LTEyICBHZW9y
Z2UgUnVhbiAgPGdydWFuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW0gdG8gaGFuZGxlIEF1ZGlvIFNhbXBsZSBCdWZmZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4MzYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI3MzgwMzkwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLiBUZXN0cyBuZWVkIHRv
IGJlIHdyaXR0ZW4gYmVmb3JlIHRoaXMgcGF0Y2ggaXMgdXBsb2FkZWQuCisKKyAgICAgICAgVGhl
cmUgYXJlIGEgZmV3IEZJWE1FcyBpbiB0aGUgY29kZSByaWdodCBub3cuIE1ha2Ugc3VyZSB0byBy
ZWFkIHRoZSBDaGFuZ2VMb2csIGFzIEkgZGV0YWlsCisgICAgICAgIHNvbWUgcHJvYmxlbXMgdGhh
dCBJIHdhcyBnb2luZyB0byBmaXggYnV0IGRpZG4ndCBnZXQgdG8uCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tOiBNb3ZlCisgICAgICAgIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLCBBVlNhbXBsZUJ1
ZmZlckF1ZGlvUmVuZGVyZXIsIGFuZCBBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplcgor
ICAgICAgICBkZWNsYXJhdGlvbiB0byBBVkZvdW5kYXRpb25TUEkuaAorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5oOiBEaXR0by4gQWxzbworICAgICAgICBjaGFuZ2VkIGluaGVyaXRhbmNlIG9m
IG9ic2VydmVycyB0byBwdWJsaWMgc28gdGVtcGxhdGUgY2xhc3MgdXBkYXRlVHJhY2tPZlR5cGUg
Y2FuCisgICAgICAgIGFkZCBhbmQgcmVtb3ZlIGF1ZGlvIHJlbmRlcmVycyBmb3IgZXZlcnkgYXVk
aW8gdHJhY2suCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICBVc2Ugc2FtcGxlQnVmZmVyUmVuZGVyU3lu
Y2hyb25pemVyIGFzIHRoZSBjbG9jay4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQyk6CisgICAgICAgIERlLWFsbG9jYXRlIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcnMu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmlzQXZhaWxhYmxlKTogQWRkIGEgY2hlY2sgZm9yCisgICAgICAgIEFWU2FtcGxlQnVmZmVyQXVk
aW9SZW5kZXJlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6Z2VuZXJhdGVTeW5jaHJvbml6ZWRTYW1wbGVCdWZmZXIpOgorICAgICAgICBB
cyB0aGUgaG9zdCBtYWNoaW5lIGFuZCBtZWRpYSBjYXB0dXJlIGRldmljZXMgYXJlIG9uIGRpZmZl
cmVudCB0aW1lcyBhbmQgdGltZXNjYWxlcywKKyAgICAgICAgYWxsIENNU2FtcGxlQnVmZmVycyBu
ZWVkIHRvIGhhdmUgdGhlaXIgdGltZXMgY2FsaWJyYXRlZCBiZWZvcmUgYmVpbmcgYWRkZWQgdG8g
dGhlCisgICAgICAgIEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyLgorICAgICAgICAo
V2ViQ29yZTo6ZGVidWdUaW1lcyk6IEZvciBkZWJ1Z2dpbmcgdGltZXMuIFJlbW92ZSB0aGlzIGJl
Zm9yZSBwYXRjaCBpcyB1cGxvYWRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUF1ZGlvU2FtcGxlQnVmZmVyRnJvbVRyYWNr
KToKKyAgICAgICAgRW5xdWV1ZSBhbiBhdWRpbyBzYW1wbGUgYnVmZmVyIGZyb20gYSB0cmFjayBv
bnRvIHRoZSBBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplci4KKyAgICAgICAgQ3VycmVu
dGx5IHRoZXJlIGlzIGFuIGVycm9yIGJlaW5nIHRocm93biBpbiBDb3JlQXVkaW8gZHVyaW5nIHRo
ZSBlbnF1ZXVlIHByb2Nlc3MuCisgICAgICAgIFNlZSB0aGUgRklYTUUgZm9yIG1vcmUgZGV0YWls
cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6ZW5xdWV1ZVZpZGVvU2FtcGxlQnVmZmVyRnJvbVRyYWNrKToKKyAgICAgICAgQ2FsaWJyYXRl
IHRpbWluZyBpbmZvcm1hdGlvbiBmb3IgdmlkZW8gJ0NNU2FtcGxlQnVmZmVyJ3MKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWRkQXVkaW9S
ZW5kZXJlcik6IENyZWF0ZSBhbmQgYWRkCisgICAgICAgIGFuIGF1ZGlvIHJlbmRlcmVyIHRvIHRo
ZSBBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplci4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVtb3ZlQXVkaW9SZW5kZXJlcik6
IERlc3Ryb3kgYW5kCisgICAgICAgIHJlbW92ZSBhbiBhdWRpbyByZW5kZXJlciBmcm9tIHRoZSBB
VlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXIpOiBBZGQgZGlzcGxh
eSBsYXllciB0bworICAgICAgICB0aGUgQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXIu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmRlc3Ryb3lMYXllcik6IFJlbW92ZSB0aGUgZGlzcGxheSBsYXllcgorICAgICAgICBmcm9tIHRo
ZSBBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplci4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxheSk6IFVzZSBBVlNhbXBsZVJl
bmRlclN5bmNocm9uaXplciBhcworICAgICAgICBjbG9jay4gQWxzbywgbWlub3IgYnVnIGZpeCBp
bnRyb2R1Y2VkIGluIGEgcHJldmlvdXMgcGF0Y2gsIHdoZXJlIHRoZSBkaXNwbGF5IG1vZGUgd2Fz
IG5vdAorICAgICAgICBiZWluZyB1cGRhdGVkIGFmdGVyIHByZXNzaW5nIHBsYXkuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhdXNlKTog
VXNlIEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyCisgICAgICAgIGFzIGNsb2NrLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpp
bnRlcm5hbFNldFZvbHVtZSk6IFVzZQorICAgICAgICBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVy
ZXIgdG8gc2V0IHZvbHVtZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6c2V0TXV0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3VycmVudE1lZGlhVGltZSk6IFVz
ZQorICAgICAgICBBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplciBhcyBjbG9jay4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2Ft
cGxlQnVmZmVyVXBkYXRlZCk6IEVucXVldWVzIGF1ZGlvIHNhbXBsZQorICAgICAgICBidWZmZXIu
IE5vdGUsIHRoYXQgdGhlcmUgaXMgYSBGSVhNRSBpbiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmN1cnJlbnRSZWFkeVN0YXRlLgorICAgICAgICBUaGUgYnVnIGluIHRoZSBG
SVhNRSBtYXkgYmVjb21lIHZpc2libGUgZHVlIHRvIHRoaXMgY2hhbmdlLCBzaW5jZSBub3cgaXQg
aXMgcG9zc2libGUgdG8gaGF2ZQorICAgICAgICBtdWx0aXBsZSB0cmFja3MgYWN0aXZlIGF0IHRo
ZSBzYW1lIHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmF1ZGlvU291cmNlUHJvdmlkZXIpOiBVc2UgdGhlIGF1ZGlvU291cmNlUHJv
dmlkZXIKKyAgICAgICAgb2YgdGhlIGZpcnN0IGFjdGl2ZSBhdWRpbyB0cmFjayBhdHRhY2hlZCB0
byB0aGUgTWVkaWFTdHJlYW0uIFRoaXMgaXMgdGhlIGN1cnJlbnQgYmVoYXZpb3IgdGhhdAorICAg
ICAgICBDaHJvbWl1bSB1c2VzLCBidXQgaW4gdGhlIGZ1dHVyZSBzaG91bGQgYmUgZml4ZWQgdG8g
cmV0dXJuIGFuIGF1ZGlvU291cmNlUHJvdmlkZXIgd2l0aCBhbGwgYXVkaW8KKyAgICAgICAgdHJh
Y2tzIGluY2x1ZGVkLgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlVHJhY2tzT2ZUeXBlKTogUmVt
b3ZlIGFuZCBhZGQgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVycyBhY2NvcmRpbmcgdG8gYXVk
aW8gdHJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp1cGRhdGVUcmFja3MpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbTogTW92
ZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcgorICAgICAgICBhbmQgQVZTYW1wbGVCdWZmZXJB
dWRpb1JlbmRlcmVyIGRlY2xhcmF0aW9ucyB0byBBVkZvdW5kYXRpb25TUEkuaAorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlkT3V0cHV0
U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24pOgorICAgICAgICBTZW5kIENNU2FtcGxlQnVmZmVy
IHRvIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQworICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbTogVGhlIE1lZGlhU3Ry
ZWFtVHJhY2sncyBpZHMgYXJlIGNyZWF0ZWQKKyAgICAgICAgb24gdGhlIG1haW4gdGhyZWFkIGJ1
dCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBiYWNrZ3JvdW5kIHRocmVhZHMgZm9yIEFWQXVk
aW9DYXB0dXJlU291cmNlcy4KKyAgICAgICAgSW4gYW4gYXR0ZW1wdCB0byBzZXQgdGhlIGlkIG9m
IHRoZSBNZWRpYVNhbXBsZSB0aGF0IHdyYXBzIHRoZSBDTVNhbXBsZUJ1ZmZlciwgd2UgdHJpZ2dl
ciBhbiBBU1NFUlQKKyAgICAgICAgd2hlcmUgQXRvbWljU3RyaW5ncyBzaG91bGQgbm90IGJlIGFj
Y2Vzc2VkL3NldCBieSB0aHJlYWRzIHRoYXQgZGlkIG5vdCBjcmVhdGUgdGhlIHN0cmluZy4gVG8g
Z2V0CisgICAgICAgIGFyb3VuZCB0aGlzIGlzc3VlLCB3ZSBoYXZlIHRoZSBtYWluIHRocmVhZCBw
YXNzIHRoZSBDTVNhbXBsZUJ1ZmZlciBmcm9tIHRoZSBBVk1lZGlhQ2FwdHVyZVNvdXJjZQorICAg
ICAgICB0byB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIHRvIHRoZSBB
VlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplci4gVGhlIGNhbGwgdG8KKyAgICAgICAgZGlz
cGF0Y2ggdG8gdGhlIG1haW4gdGhyZWFkIG1heSB3YW50IHRvIGJlIG1vdmVkIGFzIGZhciB1cHN0
cmVhbSBhcyBwb3NzaWJsZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KKyAgICAgICAgKC1bV2Vi
Q29yZUFWTWVkaWFDYXB0dXJlU291cmNlT2JzZXJ2ZXIgY2FwdHVyZU91dHB1dDpkaWRPdXRwdXRT
YW1wbGVCdWZmZXI6ZnJvbUNvbm5lY3Rpb246XSk6CisgICAgICAgICogcGxhdGZvcm0vc3BpL21h
Yy9BVkZvdW5kYXRpb25TUEkuaDogTW92ZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciwgQVZT
YW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyLAorICAgICAgICBhbmQgQVZTYW1wbGVCdWZmZXJSZW5k
ZXJTeW5jaHJvbml6ZXIgZGVjbGFyYXRpb25zIGhlcmUuCisKIDIwMTYtMDctMjcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXJzdCBwYXJhbWV0ZXIgdG8gSFRN
TE1lZGlhRWxlbWVudC5jYW5QbGF5VHlwZSgpIHNob3VsZCBiZSBtYW5kYXRvcnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZDY5
ODk3NDY5MGNkNmMyNWMwYjI0MjVjYzVmMWY4Mzc3NTM2NDA0Li40YmQ1ZjYzMTFlODMyOTNiNmY0
ODEwNDI1YzNkNjliOGRmMGI1MmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzA2Nyw2ICsyNzA2Nyw3IEBACiAJCQkJNzU3
OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMUFERUREQTBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDFGNTg0QzcxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0
b20uaCBpbiBIZWFkZXJzICovLAorCQkJCTFCRjlEQjNDMUQzOTczQUQwMDI2QUVCNyAvKiBNZWRp
YVNhbXBsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2RjNFOTUxQzFGODU1NTAwNjFEQkQ0IC8q
IEpTTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzg4Mzg5OTFCQUQxNDVG
MDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NjYyOUQx
MDlEQTJCNDgwMDk2MzNBNSAvKiBKU01vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGU2NDllMTU2ZTZiNmU2NDhiNzExMzk0MzUyMzlkNzNm
MzU1ZWIxOGYuLmNlMDg4N2E1YmE3MmY5ZjNkZTE4NDIzYzU4N2RkODIzMmNjOTQwNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTcyLDEyICs3Miw2IEBAIFNPRlRfTElOS19DT05T
VEFOVChBVkZvdW5kYXRpb24sIEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1WYXJpc3BlZWQsIE5T
U3RyaW5nKikKICNkZWZpbmUgQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCBnZXRB
VkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNwZWVkKCkKIAogI3ByYWdtYSBtYXJrIC0KLSNw
cmFnbWEgbWFyayBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcgotCi1AaW50ZXJmYWNlIEFWU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIDogQ0FMYXllcgotQGVuZAotCi0jcHJhZ21hIG1hcmsgLQog
I3ByYWdtYSBtYXJrIEFWVmlkZW9QZXJmb3JtYW5jZU1ldHJpY3MKIAogQGludGVyZmFjZSBBVlZp
ZGVvUGVyZm9ybWFuY2VNZXRyaWNzIDogTlNPYmplY3QKQEAgLTkxLDMxICs4NSw2IEBAIFNPRlRf
TElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1WYXJp
c3BlZWQsIE5TU3RyaW5nKikKIC0gKEFWVmlkZW9QZXJmb3JtYW5jZU1ldHJpY3MgKil2aWRlb1Bl
cmZvcm1hbmNlTWV0cmljczsKIEBlbmQKIAotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBB
VlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIKLQotQGludGVyZmFjZSBBVlNhbXBsZUJ1ZmZlckF1
ZGlvUmVuZGVyZXIgOiBOU09iamVjdAotLSAodm9pZClzZXRWb2x1bWU6KGZsb2F0KXZvbHVtZTsK
LS0gKHZvaWQpc2V0TXV0ZWQ6KEJPT0wpbXV0ZWQ7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgTlNTdHJpbmcgKmF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtOwotQGVuZAotCi0jcHJhZ21hIG1h
cmsgLQotI3ByYWdtYSBtYXJrIEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyCi0KLUBp
bnRlcmZhY2UgQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXIgOiBOU09iamVjdAotLSAo
Q01UaW1lYmFzZVJlZil0aW1lYmFzZTsKLS0gKGZsb2F0KXJhdGU7Ci0tICh2b2lkKXNldFJhdGU6
KGZsb2F0KXJhdGU7Ci0tICh2b2lkKXNldFJhdGU6KGZsb2F0KXJhdGUgdGltZTooQ01UaW1lKXRp
bWU7Ci0tIChOU0FycmF5ICopcmVuZGVyZXJzOwotLSAodm9pZClhZGRSZW5kZXJlcjooaWQpcmVu
ZGVyZXI7Ci0tICh2b2lkKXJlbW92ZVJlbmRlcmVyOihpZClyZW5kZXJlciBhdFRpbWU6KENNVGlt
ZSl0aW1lIHdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBkaWRSZW1vdmVSZW5k
ZXJlcikpY29tcGxldGlvbkhhbmRsZXI7Ci0tIChpZClhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZv
ckludGVydmFsOihDTVRpbWUpaW50ZXJ2YWwgcXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QpcXVldWUg
dXNpbmdCbG9jazoodm9pZCAoXikoQ01UaW1lIHRpbWUpKWJsb2NrOwotLSAoaWQpYWRkQm91bmRh
cnlUaW1lT2JzZXJ2ZXJGb3JUaW1lczooTlNBcnJheSAqKXRpbWVzIHF1ZXVlOihkaXNwYXRjaF9x
dWV1ZV90KXF1ZXVlIHVzaW5nQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWJsb2NrOwotLSAodm9pZCly
ZW1vdmVUaW1lT2JzZXJ2ZXI6KGlkKW9ic2VydmVyOwotQGVuZAotCiAjcHJhZ21hIG1hcmsgLSAK
ICNwcmFnbWEgbWFyayBBVlN0cmVhbVNlc3Npb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApp
bmRleCA3MzYwZjI0ZTYwZTNjMDZhMmMxM2YwZWRlN2ZmZjY0OTJmMGVhNzViLi5kY2NlNzU1MzZm
NDBiM2JlMzlkZGRjZGUzNWNmYWViNzliNzM1OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
aApAQCAtMzgsNiArMzgsNyBAQAogCiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5k
ZXJlcjsKIE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CitPQkpDX0NMQVNT
IEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyOwogT0JKQ19DTEFTUyBBVlN0cmVhbVNl
c3Npb247CiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZm
ZXJSZWY7CiAKQEAgLTUzLDcgKzU0LDcgQEAgY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbTsKIGNsYXNzIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjsKICNlbmRpZgogCi1jbGFz
cyBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgZmluYWwgOiBwdWJsaWMgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwcml2YXRlIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2Jz
ZXJ2ZXIsIHByaXZhdGUgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKK2NsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBNZWRpYVN0cmVhbVByaXZhdGU6Ok9ic2Vy
dmVyLCBwdWJsaWMgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWFQ
bGF5ZXIqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMoKTsKQEAgLTcyLDYgKzczLDkgQEAgcHVibGljOgogCiAgICAgV2Vha1B0cjxNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dl
YWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQogCisgICAgdm9pZCBhZGRBdWRpb1JlbmRl
cmVyKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKik7CisgICAgdm9pZCByZW1vdmVBdWRpb1JlbmRl
cmVyKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKik7CisKICAgICB2b2lkIGVuc3VyZUxheWVyKCk7
CiAgICAgdm9pZCBkZXN0cm95TGF5ZXIoKTsKIApAQCAtMTIyLDYgKzEyNiw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlIHsgLyogTm8tb3Ag
Ki8gfQogCisgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBnZW5lcmF0ZVN5bmNocm9u
aXplZFNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZik7CiAgICAgdm9pZCBlbnF1ZXVlQXVk
aW9TYW1wbGVCdWZmZXJGcm9tVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBQbGF0Zm9y
bVNhbXBsZSk7CiAgICAgdm9pZCBlbnF1ZXVlVmlkZW9TYW1wbGVCdWZmZXJGcm9tVHJhY2soTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmLCBQbGF0Zm9ybVNhbXBsZSk7CiAKQEAgLTE4MCwxMiArMTg1
LDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJl
Y3QpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgIEF1ZGlv
U291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBvdmVycmlkZTsKKyNlbmRpZgor
CiAgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyIHsgbnVsbHB0ciB9OwogICAgIFdlYWtQdHJGYWN0
b3J5PE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4gbV93ZWFrUHRyRmFjdG9y
eTsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBtX21lZGlhU3RyZWFtUHJpdmF0ZTsK
ICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8QVZTYW1wbGVCdWZm
ZXJBdWRpb1JlbmRlcmVyPj4gbV9zYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyVHJhY2tNYXA7Cisg
ICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyPiBtX3NhbXBsZUJ1
ZmZlclJlbmRlclN5bmNocm9uaXplcjsKKyAgICAvLyBGSVhNRTogQWRkIGFuIGVycm9yIGxpc3Rl
bmVyIHNpbWlsYXIgdG8gV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyCiAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fcGF1c2VkSW1hZ2U7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENsb2Nr
PiBtX2Nsb2NrOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtPj4gbV9hdWRpb1RyYWNrTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQ
dHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCA5NjkzODI1NDE5ZTgyNTU0MGU4ODVmOWM5MTg1M2Jh
YmQwMjBjZmRmLi5iNzdjM2UwZTczMDdmZWVhYjVmNDc5YmZhNGU0ZjdlZWZlYmM4ZGIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0yOSwxNCArMjksMTUgQEAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAjaW1wb3J0ICJBVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5oIgorI2ltcG9ydCAiQVZGb3VuZGF0aW9uU1BJLmgiCiAjaW1wb3J0ICJBVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5oIgogI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bS5oIgogI2ltcG9ydCAiQ2xvY2suaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lt
cG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCisjaW1wb3J0
ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW0uaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CiAjaW1wb3J0IDxRdWFydHpD
b3JlL0NBVHJhbnNhY3Rpb24uaD4KICNpbXBvcnQgPG9iamNfcnVudGltZS5oPgpAQCAtNTMsNyAr
NTQsMTUgQEAKIAogU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCiAK
K1NPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyQXVk
aW9SZW5kZXJlcikKIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKQorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRh
dGlvbiwgQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXIpCisKK1NPRlRfTElOS19DT05T
VEFOVChBVkZvdW5kYXRpb24sIEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1TcGVjdHJhbCwgTlNT
dHJpbmcqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1RpbWVQaXRj
aEFsZ29yaXRobVZhcmlzcGVlZCwgTlNTdHJpbmcqKQorCisjZGVmaW5lIEFWQXVkaW9UaW1lUGl0
Y2hBbGdvcml0aG1TcGVjdHJhbCBnZXRBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtU3BlY3RyYWwo
KQorI2RlZmluZSBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNwZWVkIGdldEFWQXVkaW9U
aW1lUGl0Y2hBbGdvcml0aG1WYXJpc3BlZWQoKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTYzLDcgKzcyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVk
aWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fd2Vha1B0
ckZhY3RvcnkodGhpcykKLSAgICAsIG1fY2xvY2soQ2xvY2s6OmNyZWF0ZSgpKQorICAgICwgbV9z
YW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXIoYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZl
clJlbmRlclN5bmNocm9uaXplckluc3RhbmNlKCkgaW5pdF0pKQogI2lmIFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgICwgbV92aWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXIoVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpjcmVhdGUoKSkKICNl
bmRpZgpAQCAtODEsNiArOTAsMTAgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCkKICAgICAgICAgICAg
IHRyYWNrLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAgICAgfQogCisgICAgZm9yIChhdXRvJiBp
ZFRyYWNrUGFpciA6IG1fYXVkaW9UcmFja01hcCkKKyAgICAgICAgcmVtb3ZlQXVkaW9SZW5kZXJl
cihpZFRyYWNrUGFpci52YWx1ZS0+c3RyZWFtVHJhY2soKSk7CisKKyAgICBtX3NhbXBsZUJ1ZmZl
ckF1ZGlvUmVuZGVyZXJUcmFja01hcC5jbGVhcigpOwogICAgIG1fYXVkaW9UcmFja01hcC5jbGVh
cigpOwogICAgIG1fdmlkZW9UcmFja01hcC5jbGVhcigpOwogCkBAIC05OSw3ICsxMTIsMTAgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUoTWVkaWFFbmdpbmVSZWdpc3QKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmlzQXZhaWxhYmxlKCkKIHsKLSAgICByZXR1cm4gQVZGb3VuZGF0aW9uTGli
cmFyeSgpICYmIGlzQ29yZU1lZGlhRnJhbWV3b3JrQXZhaWxhYmxlKCkgJiYgZ2V0QVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpOworICAgIHJldHVybiBBVkZvdW5kYXRpb25MaWJyYXJ5
KCkKKyAgICAgICAgJiYgaXNDb3JlTWVkaWFGcmFtZXdvcmtBdmFpbGFibGUoKQorICAgICAgICAm
JiBnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCkKKyAgICAgICAgJiYgZ2V0QVZT
YW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyQ2xhc3MoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykKQEAgLTExOSw5ICsxMzUsNTUgQEAg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnN1cHBvcnRzVHlwZShjb24KICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgQVZT
YW1wbGVCdWZmZXIgTWV0aG9kcwogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6ZW5xdWV1ZUF1ZGlvU2FtcGxlQnVmZmVyRnJvbVRyYWNrKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlJiwgUGxhdGZvcm1TYW1wbGUpCitSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Z2VuZXJhdGVTeW5jaHJvbml6
ZWRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKQoreworICAgIENN
U2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvOworICAgIHRpbWluZ0luZm8ucHJlc2VudGF0aW9u
VGltZVN0YW1wID0gQ01UaW1lYmFzZUdldFRpbWUoW21fc2FtcGxlQnVmZmVyUmVuZGVyU3luY2hy
b25pemVyIHRpbWViYXNlXSk7CisgICAgdGltaW5nSW5mby5kZWNvZGVUaW1lU3RhbXAgPSBrQ01U
aW1lSW52YWxpZDsKKyAgICB0aW1pbmdJbmZvLmR1cmF0aW9uID0ga0NNVGltZUludmFsaWQ7CisK
KyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBvdXRwdXRTYW1wbGU7CisgICAgT1NTdGF0dXMgc3RhdHVz
ID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhudWxscHRyLCBzYW1wbGVC
dWZmZXIsIDEsICZ0aW1pbmdJbmZvLCAmb3V0cHV0U2FtcGxlKTsKKworICAgIGlmIChzdGF0dXMg
IT0gbm9FcnIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBhIHNo
YWxsb3cgY29weSBvZiBhIENNU2FtcGxlQnVmZmVyIGZvciBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbSB3aXRoIGVycm9yIGNvZGU6ICVkIiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0Q0Yob3V0cHV0U2FtcGxlKTsKK30KKwor
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIGZ1bmN0aW9uIGJlZm9yZSB1cGxvYWRpbmcgcGF0Y2guCitz
dGF0aWMgdm9pZCBkZWJ1Z1RpbWVzKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgUmV0
YWluUHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4gYXVkaW9SZW5kZXJlciwgUmV0YWlu
UHRyPEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyPiBzeW5jaHJvbml6ZXIsIFJldGFp
blB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gZGlzcGxheUxheWVyKQogewotICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5ODM2Cisg
ICAgQ01UaW1lIHNhbXBsZVRpbWU7CisgICAgQ01UaW1lIGF1ZGlvVGltZTsKKyAgICBDTVRpbWUg
c3luY2hyb25pemVyVGltZTsKKyAgICBDTVRpbWUgZGlzcGxheVRpbWU7CisKKyAgICBzYW1wbGVU
aW1lID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoc2FtcGxlQnVmZmVy
KTsKKyAgICBhdWRpb1RpbWUgPSBDTVRpbWViYXNlR2V0VGltZShbYXVkaW9SZW5kZXJlciB0aW1l
YmFzZV0pOworICAgIHN5bmNocm9uaXplclRpbWUgPSBDTVRpbWViYXNlR2V0VGltZShbc3luY2hy
b25pemVyIHRpbWViYXNlXSk7CisgICAgZGlzcGxheVRpbWUgPSBDTVRpbWViYXNlR2V0VGltZShb
ZGlzcGxheUxheWVyIHRpbWViYXNlXSk7CisKKyAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIHNh
bXBsZURlc2NyaXB0aW9uOworICAgIHNhbXBsZURlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJH
ZXRGb3JtYXREZXNjcmlwdGlvbihzYW1wbGVCdWZmZXIpOworICAgIGNvbnN0IEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbiogc3RyZWFtRGVzY3JpcHRpb247CisgICAgc3RyZWFtRGVzY3JpcHRp
b24gPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRTdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHNh
bXBsZURlc2NyaXB0aW9uKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmVucXVldWVBdWRpb1NhbXBsZUJ1ZmZlckZyb21UcmFjayhNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYgdHJhY2ssIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKQoreworICAg
IEFTU0VSVChtX3NhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJUcmFja01hcC5jb250YWlucyh0cmFj
ay5pZCgpKSk7CisKKyAgICBhdXRvIGF1ZGlvUmVuZGVyZXIgPSBtX3NhbXBsZUJ1ZmZlckF1ZGlv
UmVuZGVyZXJUcmFja01hcC5nZXQodHJhY2suaWQoKSk7CisKKyAgICAvLyBGSVhNRTogQXVkaW8g
bm90IG91dHB1dHRpbmcuIENvcmVBdWRpbyBmdW5jdGlvbiBjb3B5U2xpY2UgaXMgcmV0dXJuaW5n
IGVycm9yIGNvZGUgMS4KKyAgICBpZiAoW2F1ZGlvUmVuZGVyZXIgaXNSZWFkeUZvck1vcmVNZWRp
YURhdGFdICYmIG1fZGlzcGxheU1vZGUgPT0gTGl2ZVByZXZpZXcpIHsKKyAgICAgICAgUmV0YWlu
UHRyPENNU2FtcGxlQnVmZmVyUmVmPiBvdXRwdXRTYW1wbGUgPSBnZW5lcmF0ZVN5bmNocm9uaXpl
ZFNhbXBsZUJ1ZmZlcihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpOworICAg
ICAgICBkZWJ1Z1RpbWVzKG91dHB1dFNhbXBsZS5nZXQoKSwgYXVkaW9SZW5kZXJlciwgbV9zYW1w
bGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXIsIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKTsg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIGxpbmUgYmVmb3JlIHVwbG9hZGluZyBwYXRjaC4KKyAgICAg
ICAgW2F1ZGlvUmVuZGVyZXIgZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpvdXRwdXRTYW1wbGUuZ2V0KCld
OworICAgIH0KIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmVucXVldWVWaWRlb1NhbXBsZUJ1ZmZlckZyb21UcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSYgdHJhY2ssIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKQpAQCAtMTMwLDcgKzE5Miw4
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlk
ZW9TYW1wbGVCdWZmZXJGcm9tVHJhY2soTWVkCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICht
X2Rpc3BsYXlNb2RlID09IExpdmVQcmV2aWV3ICYmIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyIGVucXVldWVTYW1wbGVCdWZmZXI6cGxhdGZvcm1TYW1wbGUuc2FtcGxlLmNtU2Ft
cGxlQnVmZmVyXTsKKyAgICAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBvdXRwdXRT
YW1wbGUgPSBnZW5lcmF0ZVN5bmNocm9uaXplZFNhbXBsZUJ1ZmZlcihwbGF0Zm9ybVNhbXBsZS5z
YW1wbGUuY21TYW1wbGVCdWZmZXIpOworICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpvdXRwdXRTYW1wbGUuZ2V0KCldOwogICAgICAgICAKICAg
ICAgICAgaWYgKCFtX2hhc0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUpIHsKICAgICAgICAgICAgIG1f
aGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSA9IHRydWU7CkBAIC0xMzksNiArMjAyLDQwIEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1w
bGVCdWZmZXJGcm9tVHJhY2soTWVkCiAgICAgfQogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWRkQXVkaW9SZW5kZXJlcihNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSogdHJhY2spCit7CisgICAgaWYgKG1fc2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlclRyYWNr
TWFwLmNvbnRhaW5zKHRyYWNrLT5pZCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBh
dWRpb1JlbmRlcmVyID0gYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJJ
bnN0YW5jZSgpIGluaXRdKTsKKyAgICBtX3NhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJUcmFja01h
cC5hZGQodHJhY2stPmlkKCksIGF1ZGlvUmVuZGVyZXIpOworCisgICAgW2F1ZGlvUmVuZGVyZXIg
c2V0TXV0ZWQ6IG1fbXV0ZWRdOworICAgIFthdWRpb1JlbmRlcmVyIHNldFZvbHVtZTogbV92b2x1
bWVdOworICAgIFthdWRpb1JlbmRlcmVyIHNldEF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtOihtX3Bs
YXllci0+cHJlc2VydmVzUGl0Y2goKSA/IEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1TcGVjdHJh
bCA6IEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1WYXJpc3BlZWQpXTsKKworICAgIFttX3NhbXBs
ZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplciBhZGRSZW5kZXJlcjphdWRpb1JlbmRlcmVyLmdldCgp
XTsKKyAgICByZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVtb3ZlQXVkaW9SZW5kZXJlcihNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSogdHJhY2spCit7CisgICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVy
ZXJUcmFja01hcC5jb250YWlucyh0cmFjay0+aWQoKSkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gYXVkaW9SZW5kZXJlciA9IG1fc2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlclRyYWNrTWFw
LmdldCh0cmFjay0+aWQoKSk7CisgICAgW2F1ZGlvUmVuZGVyZXIgZmx1c2hdOworCisgICAgQ01U
aW1lIGN1cnJlbnRUaW1lID0gQ01UaW1lYmFzZUdldFRpbWUoW21fc2FtcGxlQnVmZmVyUmVuZGVy
U3luY2hyb25pemVyIHRpbWViYXNlXSk7CisgICAgW21fc2FtcGxlQnVmZmVyUmVuZGVyU3luY2hy
b25pemVyIHJlbW92ZVJlbmRlcmVyOmF1ZGlvUmVuZGVyZXIuZ2V0KCkgYXRUaW1lOmN1cnJlbnRU
aW1lIHdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wpCisgICAgeworICAgICAgICAvLyBOby1v
cC4KKyAgICB9XTsKKyAgICBtX3NhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJUcmFja01hcC5yZW1v
dmUodHJhY2stPmlkKCkpOworCisgICAgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKK30KKwogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVyKCkKIHsK
ICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCkBAIC0xNDgsNiArMjQ1LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVyKCkK
ICNpZm5kZWYgTkRFQlVHCiAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHNldE5hbWU6
QCJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgQVZTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIiXTsKICNlbmRpZgorICAgIFttX3NhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXpl
ciBhZGRSZW5kZXJlcjptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKV07CiAgICAgCiAg
ICAgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKICAgICAKQEAgLTE2MSw2ICsyNTksMTEgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lMYXllcigpCiAg
ICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKICAgICAgICAgcmV0dXJuOwogICAg
IAorICAgIENNVGltZSBjdXJyZW50VGltZSA9IENNVGltZWJhc2VHZXRUaW1lKFttX3NhbXBsZUJ1
ZmZlclJlbmRlclN5bmNocm9uaXplciB0aW1lYmFzZV0pOworICAgIFttX3NhbXBsZUJ1ZmZlclJl
bmRlclN5bmNocm9uaXplciByZW1vdmVSZW5kZXJlcjptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5nZXQoKSBhdFRpbWU6Y3VycmVudFRpbWUgd2l0aENvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCkK
KyAgICB7CisgICAgICAgIC8vIE5vLW9wLgorICAgIH1dOwogICAgIFttX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciBmbHVzaF07CiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBudWxs
cHRyOwogICAgIHJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CkBAIC0yNjgsOSArMzcxLDEwIEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwbGF5KCkKICAgICBpZiAo
IW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgbV9wbGF5aW5nIHx8IG1fZW5kZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fY2xvY2stPnN0YXJ0KCk7CisgICAgW21fc2FtcGxlQnVmZmVyUmVuZGVy
U3luY2hyb25pemVyIHNldFJhdGU6MV07CiAgICAgbV9wbGF5aW5nID0gdHJ1ZTsKICAgICBtX2hh
dmVFdmVyUGxheWVkID0gdHJ1ZTsKKyAgICB1cGRhdGVEaXNwbGF5TW9kZSgpOwogICAgIHNjaGVk
dWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKICAg
ICB9KTsKQEAgLTI4Myw3ICszODcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6cGF1c2UoKQogICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCAhbV9w
bGF5aW5nIHx8IG1fZW5kZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xvY2stPnN0b3Ao
KTsKKyAgICBbbV9zYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXIgc2V0UmF0ZTowXTsKICAg
ICBtX3BsYXlpbmcgPSBmYWxzZTsKICAgICB1cGRhdGVEaXNwbGF5TW9kZSgpOwogfQpAQCAtMzAx
LDcgKzQwNSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpp
bnRlcm5hbFNldFZvbHVtZShmbG9hdCB2b2x1bWUsIGJvb2wKICAgICBpZiAoIW1ldGFEYXRhQXZh
aWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBTZXQgdm9sdW1lIG9u
Y2Ugd2UgYWN0dWFsbHkgcGxheSBhdWRpby4KKyAgICBmb3IgKGF1dG8mIHRyYWNrQXVkaW9SZW5k
ZXJlclBhaXIgOiBtX3NhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJUcmFja01hcCkKKyAgICAgICAg
W3RyYWNrQXVkaW9SZW5kZXJlclBhaXIudmFsdWUgc2V0Vm9sdW1lOnZvbHVtZV07CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWb2x1bWUoZmxvYXQg
dm9sdW1lKQpAQCAtMzE3LDYgKzQyMiw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpzZXRNdXRlZChib29sIG11dGVkKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX211dGVkID0gbXV0ZWQ7CisKKyAgICBmb3IgKGF1dG8mIHRyYWNrQXVkaW9SZW5kZXJlclBh
aXIgOiBtX3NhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJUcmFja01hcCkKKyAgICAgICAgW3RyYWNr
QXVkaW9SZW5kZXJlclBhaXIudmFsdWUgc2V0TXV0ZWQ6bXV0ZWRdOwogICAgIAogICAgIGludGVy
bmFsU2V0Vm9sdW1lKG11dGVkID8gMCA6IG1fdm9sdW1lLCB0cnVlKTsKIH0KQEAgLTM0NCw3ICs0
NTIsNyBAQCBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpk
dXJhdGlvbk1lZGlhVGltZSgpIGNvbnN0CiAKIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OmN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdAogewotICAgIHJldHVy
biBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV9jbG9jay0+Y3VycmVudFRpbWUoKSk7Cisg
ICAgcmV0dXJuIHRvTWVkaWFUaW1lKENNVGltZWJhc2VHZXRUaW1lKFttX3NhbXBsZUJ1ZmZlclJl
bmRlclN5bmNocm9uaXplciB0aW1lYmFzZV0pKTsKIH0KIAogTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Om5ldHdvcmtTdGF0ZSgp
IGNvbnN0CkBAIC00NjksNyArNTc3LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpzYW1wbGVCdWZmZXJVcGRhdGVkKE1lZGlhU3RyZWFtVHJhY2tQCiAgICAg
ICAgIC8vIERvIG5vdGhpbmcuCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXVkaW86Ci0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5ODM2CisgICAgICAgIGVucXVldWVBdWRpb1NhbXBsZUJ1ZmZl
ckZyb21UcmFjayh0cmFjaywgbWVkaWFTYW1wbGUucGxhdGZvcm1TYW1wbGUoKSk7CisgICAgICAg
IG1faGFzUmVjZWl2ZWRNZWRpYSA9IHRydWU7CisgICAgICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNr
KFt0aGlzXSB7CisgICAgICAgICAgICB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgICAgIH0pOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvOgogICAg
ICAgICBlbnF1ZXVlVmlkZW9TYW1wbGVCdWZmZXJGcm9tVHJhY2sodHJhY2ssIG1lZGlhU2FtcGxl
LnBsYXRmb3JtU2FtcGxlKCkpOwpAQCAtNDkzLDggKzYwNSwyMyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRS
ZWN0IGZyYQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorQXVkaW9Tb3VyY2VQ
cm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphdWRpb1NvdXJj
ZVByb3ZpZGVyKCkKK3sKKyAgICAvLyBGSVhNRTogUmVwbGFjZSBiZWxvdyB3aXRoIGZpeCBmb3Ig
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDMwNQorICAgIGZvciAo
YXV0byYgaWRUcmFja1BhaXIgOiBtX2F1ZGlvVHJhY2tNYXApIHsKKyAgICAgICAgUmVmUHRyPEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+IHRyYWNrID0gaWRUcmFja1BhaXIudmFsdWU7Cisg
ICAgICAgIGlmICh0cmFjay0+c3RyZWFtVHJhY2soKS0+ZW5kZWQoKSB8fCAhdHJhY2stPnN0cmVh
bVRyYWNrKCktPmVuYWJsZWQoKSB8fCB0cmFjay0+c3RyZWFtVHJhY2soKS0+bXV0ZWQoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJldHVybiB0cmFjay0+c3RyZWFtVHJhY2so
KS0+YXVkaW9Tb3VyY2VQcm92aWRlcigpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KyNlbmRpZgorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVmVCwgdHlwZW5hbWUgUGFzc1JlZlQ+Ci12
b2lkIHVwZGF0ZVRyYWNrc09mVHlwZShIYXNoTWFwPFN0cmluZywgUmVmVD4mIHRyYWNrTWFwLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHRyYWNrVHlwZSwgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGVWZWN0b3ImIGN1cnJlbnRUcmFja3MsIFJlZlQgKCppdGVtRmFjdG9yeSkoTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmKSwgTWVkaWFQbGF5ZXIqIHBsYXllciwgdm9pZCAoTWVkaWFQbGF5ZXI6Oipy
ZW1vdmVkRnVuY3Rpb24pKFBhc3NSZWZUKSwgdm9pZCAoTWVkaWFQbGF5ZXI6OiphZGRlZEZ1bmN0
aW9uKShQYXNzUmVmVCksIHN0ZDo6ZnVuY3Rpb248dm9pZChSZWZULCBpbnQpPiBjb25maWd1cmVD
YWxsYmFjaywgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyKiB0cmFja09ic2VydmVy
KQordm9pZCB1cGRhdGVUcmFja3NPZlR5cGUoSGFzaE1hcDxTdHJpbmcsIFJlZlQ+JiB0cmFja01h
cCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0cmFja1R5cGUsIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlVmVjdG9yJiBjdXJyZW50VHJhY2tzLCBSZWZUICgqaXRlbUZhY3RvcnkpKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJiksIE1lZGlhUGxheWVyKiBwbGF5ZXIsIHZvaWQgKE1lZGlhUGxheWVy
OjoqcmVtb3ZlZEZ1bmN0aW9uKShQYXNzUmVmVCksIHZvaWQgKE1lZGlhUGxheWVyOjoqYWRkZWRG
dW5jdGlvbikoUGFzc1JlZlQpLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmVCwgaW50KT4gY29uZmln
dXJlQ2FsbGJhY2ssIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyYgcHJpdmF0
ZU1lZGlhUGxheWVyKQogewogICAgIFZlY3RvcjxSZWZUPiByZW1vdmVkVHJhY2tzOwogICAgIFZl
Y3RvcjxSZWZUPiBhZGRlZFRyYWNrczsKQEAgLTUyOSwxMiArNjU2LDE5IEBAIHZvaWQgdXBkYXRl
VHJhY2tzT2ZUeXBlKEhhc2hNYXA8U3RyaW5nLCBSZWZUPiYgdHJhY2tNYXAsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5CiAKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogcmVtb3ZlZFRyYWNrcykgewog
ICAgICAgICAocGxheWVyLT4qcmVtb3ZlZEZ1bmN0aW9uKSh0cmFjayk7Ci0gICAgICAgIHRyYWNr
LT5zdHJlYW1UcmFjaygpLT5yZW1vdmVPYnNlcnZlcigqdHJhY2tPYnNlcnZlcik7CisgICAgICAg
IHRyYWNrLT5zdHJlYW1UcmFjaygpLT5yZW1vdmVPYnNlcnZlcihwcml2YXRlTWVkaWFQbGF5ZXIp
OworCisgICAgICAgIGlmICh0cmFja1R5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8p
CisgICAgICAgICAgICBwcml2YXRlTWVkaWFQbGF5ZXIucmVtb3ZlQXVkaW9SZW5kZXJlcih0cmFj
ay0+c3RyZWFtVHJhY2soKSk7CisKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogYWRk
ZWRUcmFja3MpIHsKICAgICAgICAgKHBsYXllci0+KmFkZGVkRnVuY3Rpb24pKHRyYWNrKTsKLSAg
ICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCktPmFkZE9ic2VydmVyKCp0cmFja09ic2VydmVyKTsK
KyAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCktPmFkZE9ic2VydmVyKHByaXZhdGVNZWRpYVBs
YXllcik7CisKKyAgICAgICAgaWYgKHRyYWNrVHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpB
dWRpbykKKyAgICAgICAgICAgIHByaXZhdGVNZWRpYVBsYXllci5hZGRBdWRpb1JlbmRlcmVyKHRy
YWNrLT5zdHJlYW1UcmFjaygpKTsKICAgICB9CiB9CiAKQEAgLTU0Nyw3ICs2ODEsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlVHJhY2tzKCkKICAg
ICAgICAgdHJhY2stPnNldFRyYWNrSW5kZXgoaW5kZXgpOwogICAgICAgICB0cmFjay0+c2V0RW5h
YmxlZCh0cmFjay0+c3RyZWFtVHJhY2soKS0+ZW5hYmxlZCgpICYmICF0cmFjay0+c3RyZWFtVHJh
Y2soKS0+bXV0ZWQoKSk7CiAgICAgfTsKLSAgICB1cGRhdGVUcmFja3NPZlR5cGUobV9hdWRpb1Ry
YWNrTWFwLCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgY3VycmVudFRyYWNrcywgJkF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OmNyZWF0ZSwgbV9wbGF5ZXIsICZNZWRpYVBsYXllcjo6
cmVtb3ZlQXVkaW9UcmFjaywgJk1lZGlhUGxheWVyOjphZGRBdWRpb1RyYWNrLCBlbmFibGVBdWRp
b1RyYWNrLCAoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyKikgdGhpcyk7CisgICAg
dXBkYXRlVHJhY2tzT2ZUeXBlKG1fYXVkaW9UcmFja01hcCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
QXVkaW8sIGN1cnJlbnRUcmFja3MsICZBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVh
dGUsIG1fcGxheWVyLCAmTWVkaWFQbGF5ZXI6OnJlbW92ZUF1ZGlvVHJhY2ssICZNZWRpYVBsYXll
cjo6YWRkQXVkaW9UcmFjaywgZW5hYmxlQXVkaW9UcmFjaywgKnRoaXMpOwogCiAgICAgc3RkOjpm
dW5jdGlvbjx2b2lkKFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiwgaW50KT4g
ZW5hYmxlVmlkZW9UcmFjayA9IFt0aGlzXShhdXRvIHRyYWNrLCBpbnQgaW5kZXgpCiAgICAgewpA
QCAtNTU3LDcgKzY5MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp1cGRhdGVUcmFja3MoKQogICAgICAgICBpZiAodHJhY2stPnNlbGVjdGVkKCkpCiAgICAg
ICAgICAgICBlbnN1cmVMYXllcigpOwogICAgIH07Ci0gICAgdXBkYXRlVHJhY2tzT2ZUeXBlKG1f
dmlkZW9UcmFja01hcCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIGN1cnJlbnRUcmFja3Ms
ICZWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUsIG1fcGxheWVyLCAmTWVkaWFQ
bGF5ZXI6OnJlbW92ZVZpZGVvVHJhY2ssICZNZWRpYVBsYXllcjo6YWRkVmlkZW9UcmFjaywgZW5h
YmxlVmlkZW9UcmFjaywgKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciopIHRoaXMp
OworICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX3ZpZGVvVHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlZpZGVvLCBjdXJyZW50VHJhY2tzLCAmVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bTo6Y3JlYXRlLCBtX3BsYXllciwgJk1lZGlhUGxheWVyOjpyZW1vdmVWaWRlb1RyYWNrLCAmTWVk
aWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2ssIGVuYWJsZVZpZGVvVHJhY2ssICp0aGlzKTsKIH0KIAog
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDI4NjM4ZGZjNzRh
YWRmMTQ2YjVkYzZiOGZjMjQ2NzBmOWU2MDI0YjIuLmNhYTI0NjJjNGVjYmY4MTk4MTIyNWExNGJj
N2E2ZmJjYTNlYzNlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC05OCwzMyArOTgsNiBAQCBTT0ZUX0xJTktfQ09O
U1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckZhaWxlZFRvRGVj
b2RlTm90aWZpYwogQGVuZAogCiAjcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyCi0KLUBpbnRlcmZhY2UgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgOiBDQUxheWVyCi0tIChOU0ludGVnZXIpc3RhdHVzOwotLSAoTlNFcnJvciopZXJyb3I7Ci0t
ICh2b2lkKWVucXVldWVTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZl
cjsKLS0gKHZvaWQpZmx1c2g7Ci0tICh2b2lkKWZsdXNoQW5kUmVtb3ZlSW1hZ2U7Ci0tIChCT09M
KWlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhOwotLSAodm9pZClyZXF1ZXN0TWVkaWFEYXRhV2hlblJl
YWR5T25RdWV1ZTooZGlzcGF0Y2hfcXVldWVfdClxdWV1ZSB1c2luZ0Jsb2NrOih2b2lkICheKSh2
b2lkKSlibG9jazsKLS0gKHZvaWQpc3RvcFJlcXVlc3RpbmdNZWRpYURhdGE7Ci1AZW5kCi0KLSNw
cmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyCi0K
LUBpbnRlcmZhY2UgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyIDogTlNPYmplY3QKLS0gKE5T
SW50ZWdlcilzdGF0dXM7Ci0tIChOU0Vycm9yKillcnJvcjsKLS0gKHZvaWQpZW5xdWV1ZVNhbXBs
ZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyOwotLSAodm9pZClmbHVzaDsK
LS0gKEJPT0wpaXNSZWFkeUZvck1vcmVNZWRpYURhdGE7Ci0tICh2b2lkKXJlcXVlc3RNZWRpYURh
dGFXaGVuUmVhZHlPblF1ZXVlOihkaXNwYXRjaF9xdWV1ZV90KXF1ZXVlIHVzaW5nQmxvY2s6KHZv
aWQgKF4pKHZvaWQpKWJsb2NrOwotLSAodm9pZClzdG9wUmVxdWVzdGluZ01lZGlhRGF0YTsKLUBl
bmQKLQotI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBXZWJBVlN0cmVhbURhdGFQYXJzZXJM
aXN0ZW5lcgogCiBAaW50ZXJmYWNlIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIDogTlNP
YmplY3Q8QVZTdHJlYW1EYXRhUGFyc2VyT3V0cHV0SGFuZGxpbmc+IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJj
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5tbQppbmRleCBiZmNhNTMxNTE0ZWY1MmUwYjQ0OWZkZmQxY2VjZmU4YjM5NDJm
NTJjLi5lMzliYmQ3NjliYjhlMDVjN2E2YzIzNmU2NWQ5MzU3NWUxMWEyYTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVT
b3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
QXVkaW9DYXB0dXJlU291cmNlLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkxvZ2dp
bmcuaCIKICNpbXBvcnQgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNpbXBvcnQgIk1lZGlhU2FtcGxl
QVZGT2JqQy5oIgogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKQEAgLTE3Niw2
ICsxNzcsOCBAQCB2b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlkT3V0
cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYQogICAgIGlmICghZm9ybWF0RGVzY3Jp
cHRpb24pCiAgICAgICAgIHJldHVybjsKIAorICAgIG1lZGlhRGF0YVVwZGF0ZWQoTWVkaWFTYW1w
bGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyKSk7CisKICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PExvY2s+IGxvY2sobV9sb2NrLCBzdGQ6OnRyeV90b19sb2NrKTsKICAgICBpZiAoIWxvY2sub3du
c19sb2NrKCkpIHsKICAgICAgICAgLy8gRmFpbGVkIHRvIGFjcXVpcmUgdGhlIGxvY2ssIGp1c3Qg
cmV0dXJuIGluc3RlYWQgb2YgYmxvY2tpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0K
aW5kZXggYzJkOTI4ZGViM2U2YjUwODk4ODI1NmJjNTMzNzU3OWNkOWFmYzdmNC4uNTFhOGU4MDk3
YWU3Y2ZmNGE0ZTE2YmRjZDk4YWM5YmYyNTZlZDkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNv
dXJjZS5tbQpAQCAtMjg4LDcgKzI4OCwxMSBAQCBOU0FycmF5KiBzZXNzaW9uS1ZPUHJvcGVydGll
cygpCiAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NhbGxi
YWNrLT5jYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oY2Fw
dHVyZU91dHB1dCwgc2FtcGxlQnVmZmVyLCBjb25uZWN0aW9uKTsKKyAgICBDRlJldGFpbihzYW1w
bGVCdWZmZXIpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IF57CisgICAgICAgIG1fY2FsbGJhY2stPmNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZm
ZXJGcm9tQ29ubmVjdGlvbihjYXB0dXJlT3V0cHV0LCBzYW1wbGVCdWZmZXIsIGNvbm5lY3Rpb24p
OworICAgICAgICBDRlJlbGVhc2Uoc2FtcGxlQnVmZmVyKTsKKyAgICB9KTsKIH0KIAogLSh2b2lk
KW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5n
ZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oCmluZGV4IDcy
ZTE0MGRlOWIwYjgwYWU4N2Y4MmQ4MDE1ZjVjZjdmMmE4ODc1NWUuLjdiNzU4M2Q0NDJlZDdkYTJj
OTAzYmFjY2IxNDhlMTU3NzdiYWQ2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaApAQCAtMjYsNiArMjYsNTMgQEAKICNpbXBvcnQg
IlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPEFWRm91bmRh
dGlvbi9BVlF1ZXVlZFNhbXBsZUJ1ZmZlclJlbmRlcmluZy5oPgorI2ltcG9ydCA8QVZGb3VuZGF0
aW9uL0FWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyLmg+CisKKyNlbHNlCisKKyNpbXBv
cnQgPENvcmVNZWRpYS9DTVNhbXBsZUJ1ZmZlci5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgorQGludGVyZmFjZSBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIgOiBOU09iamVjdAorLSAo
TlNJbnRlZ2VyKXN0YXR1czsKKy0gKG51bGxhYmxlIE5TRXJyb3IqKWVycm9yOworLSAodm9pZCll
bnF1ZXVlU2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXI7CistICh2
b2lkKWZsdXNoOworLSAoQk9PTClpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YTsKKy0gKHZvaWQpcmVx
dWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QpcXVldWUgdXNp
bmdCbG9jazoodm9pZCAoXikodm9pZCkpYmxvY2s7CistICh2b2lkKXN0b3BSZXF1ZXN0aW5nTWVk
aWFEYXRhOworLSAodm9pZClzZXRWb2x1bWU6KGZsb2F0KXZvbHVtZTsKKy0gKHZvaWQpc2V0TXV0
ZWQ6KEJPT0wpbXV0ZWQ7CistIChDTVRpbWViYXNlUmVmKXRpbWViYXNlOworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICphdWRpb1RpbWVQaXRjaEFsZ29yaXRobTsKK0BlbmQK
K05TX0FTU1VNRV9OT05OVUxMX0VORAorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorQGludGVy
ZmFjZSBBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplciA6IE5TT2JqZWN0CistIChDTVRp
bWViYXNlUmVmKXRpbWViYXNlOworLSAoZmxvYXQpcmF0ZTsKKy0gKHZvaWQpc2V0UmF0ZTooZmxv
YXQpcmF0ZTsKKy0gKHZvaWQpc2V0UmF0ZTooZmxvYXQpcmF0ZSB0aW1lOihDTVRpbWUpdGltZTsK
Ky0gKG51bGxhYmxlIE5TQXJyYXkgKilyZW5kZXJlcnM7CistICh2b2lkKWFkZFJlbmRlcmVyOihp
ZClyZW5kZXJlcjsKKy0gKHZvaWQpcmVtb3ZlUmVuZGVyZXI6KGlkKXJlbmRlcmVyIGF0VGltZToo
Q01UaW1lKXRpbWUgd2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIGRpZFJlbW92
ZVJlbmRlcmVyKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKGlkKWFkZFBlcmlvZGljVGltZU9ic2Vy
dmVyRm9ySW50ZXJ2YWw6KENNVGltZSlpbnRlcnZhbCBxdWV1ZTooZGlzcGF0Y2hfcXVldWVfdClx
dWV1ZSB1c2luZ0Jsb2NrOih2b2lkICheKShDTVRpbWUgdGltZSkpYmxvY2s7CistIChpZClhZGRC
b3VuZGFyeVRpbWVPYnNlcnZlckZvclRpbWVzOihOU0FycmF5ICopdGltZXMgcXVldWU6KGRpc3Bh
dGNoX3F1ZXVlX3QpcXVldWUgdXNpbmdCbG9jazoodm9pZCAoXikodm9pZCkpYmxvY2s7CistICh2
b2lkKXJlbW92ZVRpbWVPYnNlcnZlcjooaWQpb2JzZXJ2ZXI7CitAZW5kCitOU19BU1NVTUVfTk9O
TlVMTF9FTkQKKworI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCisKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAm
JiAhUExBVEZPUk0oSU9TKQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298603</attachid>
            <date>2017-01-11 11:33:34 -0800</date>
            <delta_ts>2017-01-11 17:58:29 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>audio_renderer_patch_3.txt</filename>
            <type>text/plain</type>
            <size>98510</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDQ5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NiBAQAorMjAxNy0wMS0xMSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0s
IE1hY10gUmVuZGVyIG1lZGlhIHN0cmVhbSBhdWRpbyBidWZmZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4MzYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI3MzgwMzkwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgaXQgaXNuJ3QgcG9zc2libGUgdG8gdGVzdCBhdWRpbyBy
ZW5kZXJpbmcgZGlyZWN0bHkuIEEgZm9sbG93LXVwIHBhdGNoIHdpbGwKKyAgICAgICAgYWRkIGEg
bW9jayBhdWRpbyBzb3VyY2UgdGhhdCB3aWxsIGVuYWJsZSBhdWRpbyB0ZXN0aW5nLgorCisgICAg
ICAgICogcGxhdGZvcm0vY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwOiBJbmNsdWRlIG5ldyBmdW5j
dGlvbnMgdXNlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9Db3JlTWVkaWFTb2Z0TGluay5oOgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmUgcmVm
ZXJlbmNlcyB0byB0aGUgZGVsZXRlZCBwcmV2aWV3cy4KKworICAgICAgICAqIHBsYXRmb3JtL0xv
Z2dpbmcuaDogQWRkIE1lZGlhQ2FwdHVyZVNhbXBsZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9N
ZWRpYVNhbXBsZS5oOiBBZGQgb3V0cHV0UHJlc2VudGF0aW9uVGltZSBhbmQgb3V0cHV0RHVyYXRp
b24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHA6IEFkZCBD
TVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uLCBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFBy
ZXNlbnRhdGlvblRpbWVTdGFtcCwKKyAgICAgICAgQ01UaW1lQ29udmVydFNjYWxlLCBDTVRpbWVi
YXNlR2V0RWZmZWN0aXZlUmF0ZSwgQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXRE
ZXNjcmlwdGlvbnMsIAorICAgICAgICBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVk
aW9CdWZmZXJMaXN0LCBDTVNhbXBsZUJ1ZmZlclNldERhdGFSZWFkeSwgCisgICAgICAgIENNQXVk
aW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSwgQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2ssIGFuZCBD
TUNsb2NrR2V0VGltZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9Db3JlTWVkaWFTb2Z0TGluay5o
OgorCisgICAgICAgIENyZWF0ZSBhbmQgdXNlIGFuIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJl
ciBlYWNoIGF1ZGlvIHN0cmVhbSB0cmFjaywgd2hlbiBpdCBpcyBhdmFpbGFibGUsCisgICAgICAg
IHRvIHJlbmRlciBmb3IgYXVkaW8gc2FtcGxlcy4gU3RvcmUgdGhlIG9mZnNldCBiZXR3ZWVuIHRo
ZSBmaXJzdCBzYW1wbGUgcmVjZWl2ZWQgZnJvbSBhIHRyYWNrJ3MKKyAgICAgICAgb3V0cHV0IHBy
ZXNlbnRhdGlvbiBhbmQgdGhlIHN5bmNocm9uaXplciB0aW1lIHNvIHdlIGNhbiBhZGp1c3Qgc2Ft
cGxlIHRpbWVzdGFtcHMgdG8gYmUgCisgICAgICAgIHJlbGF0aXZlIHRvIHRoZSBzeW5jaHJvbml6
ZXIncyB0aW1lbGluZSByZWdhcmRsZXNzIG9mIHRoZWlyIHNvdXJjZS4gUmVtb3ZlIHRoZSB1c2Ug
b2Ygc291cmNlCisgICAgICAgIHByZXZpZXdzIGJlY2F1c2Ugbm90IGFsbCBzb3VyY2VzIHdpbGwg
aGF2ZSB0aGVtLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgCisgICAgICAgIEFkZCBhbiBPYmpDIGhl
bHBlciB0byBjYXRjaCByZW5kZXJlciBzdGF0dXMgY2hhbmdlcy4KKyAgICAgICAgKC1bV2ViQVZT
YW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBpbml0V2l0aFBhcmVudDpdKTogCisgICAg
ICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgZGVhbGxvY10pOgor
ICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGludmFsaWRh
dGVdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBi
ZWdpbk9ic2VydmluZ0xheWVyOl0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1
c0NoYW5nZUxpc3RlbmVyIHN0b3BPYnNlcnZpbmdMYXllcjpdKToKKyAgICAgICAgKC1bV2ViQVZT
YW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ1JlbmRlcmVyOl0p
OgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIHN0b3BP
YnNlcnZpbmdSZW5kZXJlcjpdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXND
aGFuZ2VMaXN0ZW5lciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250
ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5n
UXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjphZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVNhbXBsZVRpbWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5x
dWV1ZUF1ZGlvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVxdWVzdE5vdGlmaWNhdGlv
bldoZW5SZWFkeUZvclZpZGVvRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JB
dWRpb0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpjcmVhdGVBdWRpb1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUF1ZGlvUmVuZGVyZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpk
ZXN0cm95QXVkaW9SZW5kZXJlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphdWRpb1NvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVuZGVyZXJTdGF0
dXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpsYXllclN0YXR1c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmZsdXNoUmVuZGVyZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5z
dXJlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpkZXN0cm95TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3VycmVudERpc3BsYXlN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmVucXVldWVBdWRpb1NhbXBsZUJ1ZmZlckZyb21UcmFjayk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JNZWRpYURhdGEpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1
ZXVlVmlkZW9TYW1wbGVCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwcmVwYXJlVmlkZW9TYW1wbGVCdWZmZXJG
cm9tVHJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjppbnRlcm5hbFNldFZvbHVtZSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6Om91dHB1dFByZXNl
bnRhdGlvblRpbWUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6
Om91dHB1dER1cmF0aW9uKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZP
YmpDOjpkdW1wKTogTG9nIG91dHB1dFByZXNlbnRhdGlvblRpbWUuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmg6IEFkZCB0aW1l
bGluZU9mZnNldC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOjpzZXRFbmFibGVkKTogTm8gbW9yZSBtX3ByZXZpZXcuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6ZW5kVHJhY2spOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpwcmV2aWV3KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oOgorCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cHJldmlldyk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlUHJldmlldy5o
OiBSZW1vdmVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbS5oOiBBZGQgdGltZWxpbmVPZmZzZXQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6dXBkYXRlU2V0dGluZ3MpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXREaWRPdXRwdXRT
YW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbik6IFBhc3MgdGhlCisgICAgICAgIHNhbXBsZSBidWZm
ZXIgdXAgdGhlIGNoYWluLgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVByZXZpZXc6
OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvU291cmNlUHJldmll
dzo6QVZBdWRpb1NvdXJjZVByZXZpZXcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZB
dWRpb1NvdXJjZVByZXZpZXc6OmludmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QVZBdWRpb1NvdXJjZVByZXZpZXc6OnBsYXkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QVZBdWRpb1NvdXJjZVByZXZpZXc6OnBhdXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpzZXRFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpzZXRWb2x1bWUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVByZXZpZXc6OnVwZGF0ZVN0YXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3
KTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlh
Q2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYVNvdXJjZVByZXZpZXcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNyZWF0
ZVdlYWtQdHIpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWTWVkaWFDYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1
cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJlU291cmNlKTogTm8gbW9yZSBwcmV2aWV3LgorICAgICAg
ICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OnJlc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpwcmV2aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpyZW1vdmVQcmV2aWV3KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFWTWVkaWFTb3VyY2VQcmV2aWV3OjpBVk1lZGlhU291cmNlUHJldmll
dyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhU291cmNlUHJldmlldzo6fkFW
TWVkaWFTb3VyY2VQcmV2aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFT
b3VyY2VQcmV2aWV3OjppbnZhbGlkYXRlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpwcm9jZXNzTmV3RnJhbWUpOiBEb24ndCBzZXQg
dGhlICJkaXNwbGF5IGltbWVkaWF0ZWx5IiBhdHRhY2htZW50LgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb1NvdXJjZVByZXZpZXc6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBVlZpZGVvU291cmNlUHJldmlldzo6QVZWaWRlb1NvdXJjZVByZXZpZXcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb1NvdXJjZVByZXZpZXc6OmJhY2tncm91bmRMYXllckJv
dW5kc0NoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb1NvdXJjZVBy
ZXZpZXc6OmludmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb1Nv
dXJjZVByZXZpZXc6OnBsYXkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb1Nv
dXJjZVByZXZpZXc6OnBhdXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9T
b3VyY2VQcmV2aWV3OjpzZXRQYXVzZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZW
aWRlb1NvdXJjZVByZXZpZXc6OnNldEVuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZVByZXZpZXcpOiBEZWxldGVkLgorICAgICAg
ICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBzZXRQYXJlbnQ6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIG9i
c2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yzo6Q01TYW1wbGVCdWZmZXJGcm9tUGl4ZWxCdWZmZXIpOiBVc2UgYSBtb3JlIHR5cGljYWwgdmlk
ZW8KKyAgICAgICAgdGltZSBzY2FsZS4gU2V0IHRoZSBzYW1wbGUgZGVjb2RlIHRpbWUuCisgICAg
ICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6cGl4ZWxCdWZmZXJGcm9t
Q0dJbWFnZSk6IFVzZSBhIHN0YXRpYyBmb3IgY29sb3JzcGFjZQorICAgICAgICBpbnN0ZWFkIG9m
IGZldGNoaW5nIGl0IGZvciBldmVyeSBmcmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOiBBZGQgb3V0cHV0UHJlc2Vu
dGF0aW9uVGltZSBhbmQgb3V0cHV0RHVyYXRpb24uCisKIDIwMTctMDEtMDggIEtvbnN0YW50aW4g
VG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIEludHJvZHVjZSBDUFUoWDg2
X1NTRTIpIGluc3RlYWQgb2YgdmFyaW91cyBTU0UyIGNoZWNrcwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3Bw
CShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNiArMjEzLDkgQEAg
dm9pZCBTY3JpcHRQcm9jZXNzb3JOb2RlOjpwcm9jZXNzKHNpemVfdAogICAgICAgICAgICAgbV9p
c1JlcXVlc3RPdXRzdGFuZGluZyA9IHRydWU7CiAKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXNdIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1faGFzQXVkaW9Qcm9jZXNzTGlzdGVu
ZXIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgICAgIGZpcmVQ
cm9jZXNzRXZlbnQoKTsKIAogICAgICAgICAgICAgICAgIC8vIERlLXJlZmVyZW5jZSB0byBtYXRj
aCB0aGUgcmVmKCkgY2FsbCBpbiBwcm9jZXNzKCkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTAzNTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTI3OSw3ICsyNzksNiBAQAogCQkwN0MxQzBFMjFCRkI2MDAxMDBCRDIyNTYg
LyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVk
aWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggKi87IH07CiAJCTA3QzFDMEU1MUJGQjYwRUQw
MEJEMjI1NiAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzFDMEU0MUJGQjYw
RUQwMEJEMjI1NiAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0NFNzdE
NTE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDRTc3RDQxNjcxMkE2
QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwN0QxNTAzQjFEREI2OTY1MDA4
Rjc1OTggLyogUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDE1MDNBMUREQjY2ODgwMDhGNzU5OCAvKiBS
ZWFsdGltZU1lZGlhU291cmNlUHJldmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3RDYzNzQwMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLmggKi87IH07CiAJCTA3RDYzNzQxMUJCMEIxMTMwMDI1NkNFOSAvKiBX
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDYzNzNGMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLzsgfTsKIAkJMDdENkE0RUYxQkVDRjJEMjAwMTc0
MTQ2IC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDZBNEVEMUJFQ0YyRDIwMDE3NDE0NiAvKiBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgKi87IH07CkBAIC03MjQ4LDcgKzcyNDcsNiBAQAogCQkw
N0M4QUQxMTFEMDczRDYzMDA4N0M1Q0UgLyogQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWRm91bmRhdGlvbk1JTUVU
eXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzhBRDEyMUQwNzNE
NjMwMDg3QzVDRSAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDRTc3RDQxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwN0QxNTAzQTFEREI2Njg4MDA4Rjc1OTggLyogUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZp
ZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNvdXJj
ZVByZXZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdENjM3M0UxQkIwQjEx
MzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RDYzNzNGMUJCMEIxMTMwMDI1NkNFOSAvKiBX
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Q2QTRFRDFCRUNGMkQyMDAxNzQxNDYgLyogTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTUxODcsNyArMTUxODUsNiBAQAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAv
KiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmggKi8sCiAJCQkJNEEwRkZBOUYxQUFG
NUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwICovLAogCQkJCTRB
MEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi8s
Ci0JCQkJMDdEMTUwM0ExRERCNjY4ODAwOEY3NTk4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2
aWV3LmggKi8sCiAJCQkJNEE0RjY1NkUxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncy5jcHAgKi8sCiAJCQkJNEE0RjY1NkYxQUE5OTdGMTAwRTM4Q0REIC8qIFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJFQzQxREUyMUMwNDEwQTMwMEQy
OTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwICovLApA
QCAtMjcxOTcsNyArMjcxOTQsNiBAQAogCQkJCTRBNEY2NTcyMUFBOTk3RjEwMEUzOENERCAvKiBS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTBG
RkFBMjFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNEEwRkZBQTYxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3RDE1MDNCMUREQjY5NjUwMDhG
NzU5OCAvKiBSZWFsdGltZU1lZGlhU291cmNlUHJldmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NEE0RjY1NzQxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDMUMwRTUxQkZCNjBFRDAwQkQyMjU2IC8qIFJlYWx0aW1l
TWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0
MzY4RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAkocmV2aXNpb24gMjEwMzU2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9nZ2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKE1lZGlhKSBcCiAgICAgTShNZWRpYVNvdXJjZSkgXAog
ICAgIE0oTWVkaWFTb3VyY2VTYW1wbGVzKSBcCisgICAgTShNZWRpYUNhcHR1cmVTYW1wbGVzKSBc
CiAgICAgTShNZW1vcnlQcmVzc3VyZSkgXAogICAgIE0oTmV0d29yaykgXAogICAgIE0oTm90WWV0
SW1wbGVtZW50ZWQpIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAko
cmV2aXNpb24gMjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fk1lZGlhU2FtcGxlKCkgeyB9CiAKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBwcmVzZW50YXRpb25U
aW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTWVkaWFUaW1lIG91dHB1dFByZXNlbnRhdGlv
blRpbWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIE1lZGlhVGltZSBvdXRwdXREdXJhdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIEF0b21pY1N0cmluZyB0cmFja0lEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRUcmFja0lEKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHNpemVfdCBzaXplSW5C
eXRlcygpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NvcmVN
ZWRpYVNvZnRMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9Db3JlTWVkaWFTb2Z0TGluay5jcHAJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODUsMTQgKzg1LDE4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIEMK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1w
bGVCdWZmZXJHZXREdXJhdGlvbiwgQ01UaW1lLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChz
YnVmKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwg
Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlciwgQ1ZJbWFnZUJ1ZmZlclJlZiwgKENNU2FtcGxl
QnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShX
ZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1w
LCBDTVRpbWUsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQorU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldE91
dHB1dER1cmF0aW9uLCBDTVRpbWUsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBs
ZUJ1ZmZlckdldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lLCAoQ01TYW1wbGVC
dWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdl
YkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5
LCBDRkFycmF5UmVmLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQm9vbGVhbiBjcmVhdGVJZk5l
Y2Vzc2FyeSksIChzYnVmLCBjcmVhdGVJZk5lY2Vzc2FyeSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGlt
aW5nSW5mb0FycmF5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUNv
dW50IHRpbWluZ0FycmF5RW50cmllcywgQ01TYW1wbGVUaW1pbmdJbmZvICp0aW1pbmdBcnJheU91
dCwgQ01JdGVtQ291bnQgKnRpbWluZ0FycmF5RW50cmllc05lZWRlZE91dCksIChzYnVmLCB0aW1p
bmdBcnJheUVudHJpZXMsIHRpbWluZ0FycmF5T3V0LCB0aW1pbmdBcnJheUVudHJpZXNOZWVkZWRP
dXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBD
TVRpbWVDb252ZXJ0U2NhbGUsIENNVGltZSwgKENNVGltZSB0aW1lLCBpbnQzMl90IG5ld1RpbWVz
Y2FsZSwgQ01UaW1lUm91bmRpbmdNZXRob2QgbWV0aG9kKSwgKHRpbWUsIG5ld1RpbWVzY2FsZSwg
bWV0aG9kKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRp
YSwgQ01TYW1wbGVCdWZmZXJHZXRUb3RhbFNhbXBsZVNpemUsIHNpemVfdCwgKENNU2FtcGxlQnVm
ZmVyUmVmIHNidWYpLCAoc2J1ZikpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJD
b3JlLCBDb3JlTWVkaWEsIENNU2V0QXR0YWNobWVudCwgdm9pZCwgKENNQXR0YWNobWVudEJlYXJl
clJlZiB0YXJnZXQsIENGU3RyaW5nUmVmIGtleSwgQ0ZUeXBlUmVmIHZhbHVlLCBDTUF0dGFjaG1l
bnRNb2RlIGF0dGFjaG1lbnRNb2RlKSwgKHRhcmdldCwga2V5LCB2YWx1ZSwgYXR0YWNobWVudE1v
ZGUpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBD
TVRpbWViYXNlQ3JlYXRlV2l0aE1hc3RlckNsb2NrLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciwgQ01DbG9ja1JlZiBtYXN0ZXJDbG9jaywgQ01UaW1lYmFzZVJlZiAqdGltZWJh
c2VPdXQpLCAoYWxsb2NhdG9yLCBtYXN0ZXJDbG9jaywgdGltZWJhc2VPdXQpKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWViYXNlR2V0VGlt
ZSwgQ01UaW1lLCAoQ01UaW1lYmFzZVJlZiB0aW1lYmFzZSksICh0aW1lYmFzZSkpCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZWJhc2VTZXRS
YXRlLCBPU1N0YXR1cywgKENNVGltZWJhc2VSZWYgdGltZWJhc2UsIEZsb2F0NjQgcmF0ZSksICh0
aW1lYmFzZSwgcmF0ZSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBD
b3JlTWVkaWEsIENNVGltZWJhc2VTZXRUaW1lLCBPU1N0YXR1cywgKENNVGltZWJhc2VSZWYgdGlt
ZWJhc2UsIENNVGltZSB0aW1lKSwgKHRpbWViYXNlLCB0aW1lKSkKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lYmFzZUdldEVmZmVjdGl2ZVJh
dGUsIEZsb2F0NjQsIChDTVRpbWViYXNlUmVmIHRpbWViYXNlKSwgKHRpbWViYXNlKSkKIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lQ29weUFz
RGljdGlvbmFyeSwgQ0ZEaWN0aW9uYXJ5UmVmLCAoQ01UaW1lIHRpbWUsIENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciksICh0aW1lLCBhbGxvY2F0b3IpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGVG
b3JJbWFnZUJ1ZmZlciwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENWSW1h
Z2VCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiogb3V0
RGVzYyksIChhbGxvY2F0b3IsIGltYWdlQnVmZmVyLCBvdXREZXNjKSkKIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01WaWRlb0Zvcm1hdERlc2NyaXB0
aW9uR2V0RGltZW5zaW9ucywgQ01WaWRlb0RpbWVuc2lvbnMsIChDTVZpZGVvRm9ybWF0RGVzY3Jp
cHRpb25SZWYgdmlkZW9EZXNjKSwgKHZpZGVvRGVzYykpCkBAIC0xMTQsNiArMTE4LDEzIEBAIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIEMKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDYWxsQmxvY2tG
b3JFYWNoU2FtcGxlLCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIE9TU3RhdHVz
ICheaGFuZGxlcikoQ01TYW1wbGVCdWZmZXJSZWYsIENNSXRlbUNvdW50KSksIChzYnVmLCBoYW5k
bGVyKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwg
Q01TYW1wbGVCdWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2UsIE9TU3RhdHVzLCAoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yLCBDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDRlJhbmdlIHNhbXBs
ZVJhbmdlLCBDTVNhbXBsZUJ1ZmZlclJlZiogc0J1Zk91dCksIChhbGxvY2F0b3IsIHNidWYsIHNh
bXBsZVJhbmdlLCBzQnVmT3V0KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNv
cmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVTaXplQXJyYXksIE9TU3RhdHVz
LCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ01JdGVtQ291bnQgc2l6ZUFycmF5RW50cmllcywg
c2l6ZV90KiBzaXplQXJyYXlPdXQsIENNSXRlbUNvdW50KiBzaXplQXJyYXlFbnRyaWVzTmVlZGVk
T3V0KSwgKHNidWYsIHNpemVBcnJheUVudHJpZXMsIHNpemVBcnJheU91dCwgc2l6ZUFycmF5RW50
cmllc05lZWRlZE91dCkpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUs
IENvcmVNZWRpYSwgQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlv
bnMsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDTUJsb2NrQnVmZmVyUmVm
IGRhdGFCdWZmZXIsIEJvb2xlYW4gZGF0YVJlYWR5LCBDTVNhbXBsZUJ1ZmZlck1ha2VEYXRhUmVh
ZHlDYWxsYmFjayBtYWtlRGF0YVJlYWR5Q2FsbGJhY2ssIHZvaWQgKm1ha2VEYXRhUmVhZHlSZWZj
b24sIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24sIENNSXRlbUNvdW50
IG51bVNhbXBsZXMsIENNVGltZSBzYnVmUFRTLCBjb25zdCBBdWRpb1N0cmVhbVBhY2tldERlc2Ny
aXB0aW9uICpwYWNrZXREZXNjcmlwdGlvbnMsIENNU2FtcGxlQnVmZmVyUmVmICpzQnVmT3V0KSwg
KGFsbG9jYXRvciwgZGF0YUJ1ZmZlciwgZGF0YVJlYWR5LCBtYWtlRGF0YVJlYWR5Q2FsbGJhY2ss
IG1ha2VEYXRhUmVhZHlSZWZjb24sIGZvcm1hdERlc2NyaXB0aW9uLCBudW1TYW1wbGVzLCBzYnVm
UFRTLCBwYWNrZXREZXNjcmlwdGlvbnMsIHNCdWZPdXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJG
cm9tQXVkaW9CdWZmZXJMaXN0LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENG
QWxsb2NhdG9yUmVmIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIENGQWxsb2NhdG9yUmVmIGJidWZNZW1v
cnlBbGxvY2F0b3IsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBBdWRpb0J1ZmZlckxpc3QgKmJ1ZmZl
ckxpc3QpLCAoc2J1ZiwgYmJ1ZlN0cnVjdEFsbG9jYXRvciwgYmJ1Zk1lbW9yeUFsbG9jYXRvciwg
ZmxhZ3MsIGJ1ZmZlckxpc3QpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlclNldERhdGFSZWFkeSwgT1NTdGF0dXMsIChDTVNh
bXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUsIE9T
U3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBjb25zdCBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24qIGFzYmQsIHNpemVfdCBsYXlvdXRTaXplLCBjb25zdCBBdWRpb0NoYW5uZWxM
YXlvdXQqIGxheW91dCwgc2l6ZV90IG1hZ2ljQ29va2llU2l6ZSwgY29uc3Qgdm9pZCogbWFnaWND
b29raWUsIENGRGljdGlvbmFyeVJlZiBleHRlbnNpb25zLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRp
b25SZWYqIG91dERlc2MpLCAoYWxsb2NhdG9yLCBhc2JkLCBsYXlvdXRTaXplLCBsYXlvdXQsIG1h
Z2ljQ29va2llU2l6ZSwgbWFnaWNDb29raWUsIGV4dGVuc2lvbnMsIG91dERlc2MpKQorU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTUNsb2NrR2V0SG9z
dFRpbWVDbG9jaywgQ01DbG9ja1JlZiwgKHZvaWQpLCAoKSkKK1NPRlRfTElOS19GVU5DVElPTl9G
T1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01DbG9ja0dldFRpbWUsIENNVGltZSwgKENN
Q2xvY2tSZWYgY2xvY2spLCAoY2xvY2spKQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAj
aWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ29yZU1l
ZGlhU29mdExpbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9D
b3JlTWVkaWFTb2Z0TGluay5oCShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0
Nyw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIEMKICNkZWZpbmUg
Q01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbiBzb2Z0TGlua19Db3JlTWVkaWFfQ01T
YW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0lu
Zm8sIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ01JdGVtSW5kZXggc2FtcGxl
SW5kZXgsIENNU2FtcGxlVGltaW5nSW5mbyogdGltaW5nSW5mb091dCksIChzYnVmLCBzYW1wbGVJ
bmRleCwgdGltaW5nSW5mb091dCkpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGlt
aW5nSW5mbyBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJ
bmZvCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENN
VGltZUNvbnZlcnRTY2FsZSwgQ01UaW1lLCAoQ01UaW1lIHRpbWUsIGludDMyX3QgbmV3VGltZXNj
YWxlLCBDTVRpbWVSb3VuZGluZ01ldGhvZCBtZXRob2QpLCAodGltZSwgbmV3VGltZXNjYWxlLCBt
ZXRob2QpKQorI2RlZmluZSBDTVRpbWVDb252ZXJ0U2NhbGUgc29mdExpbmtfQ29yZU1lZGlhX0NN
VGltZUNvbnZlcnRTY2FsZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwg
Q29yZU1lZGlhLCBDTVRpbWVBZGQsIENNVGltZSwgKENNVGltZSB0aW1lMSwgQ01UaW1lIHRpbWUy
KSwgKHRpbWUxLCB0aW1lMikpCiAjZGVmaW5lIENNVGltZUFkZCBzb2Z0TGlua19Db3JlTWVkaWFf
Q01UaW1lQWRkCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVk
aWEsIENNVGltZUNvbXBhcmUsIGludDMyX3QsIChDTVRpbWUgdGltZTEsIENNVGltZSB0aW1lMiks
ICh0aW1lMSwgdGltZTIpKQpAQCAtMTM3LDYgKzEzOSwxMCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX0hFQURFUihXZWJDb3JlLCBDCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZm
ZXIgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIKIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZm
ZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSwgKENNU2FtcGxlQnVmZmVyUmVmIHNi
dWYpLCAoc2J1ZikpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0
YW1wIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVT
dGFtcAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBD
TVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uLCBDTVRpbWUsIChDTVNhbXBsZUJ1ZmZlclJl
ZiBzYnVmKSwgKHNidWYpKQorI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0aW9u
IHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uCitTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVm
ZmVyR2V0T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTVNhbXBsZUJ1ZmZl
clJlZiBzYnVmKSwgKHNidWYpKQorI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFByZXNl
bnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRPdXRw
dXRQcmVzZW50YXRpb25UaW1lU3RhbXAKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdl
YkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5
LCBDRkFycmF5UmVmLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQm9vbGVhbiBjcmVhdGVJZk5l
Y2Vzc2FyeSksIChzYnVmLCBjcmVhdGVJZk5lY2Vzc2FyeSkpCiAjZGVmaW5lIENNU2FtcGxlQnVm
ZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheSBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVC
dWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hF
QURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5m
b0FycmF5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUNvdW50IHRp
bWluZ0FycmF5RW50cmllcywgQ01TYW1wbGVUaW1pbmdJbmZvICp0aW1pbmdBcnJheU91dCwgQ01J
dGVtQ291bnQgKnRpbWluZ0FycmF5RW50cmllc05lZWRlZE91dCksIChzYnVmLCB0aW1pbmdBcnJh
eUVudHJpZXMsIHRpbWluZ0FycmF5T3V0LCB0aW1pbmdBcnJheUVudHJpZXNOZWVkZWRPdXQpKQpA
QCAtMTUzLDYgKzE1OSw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUs
IEMKICNkZWZpbmUgQ01UaW1lYmFzZVNldFJhdGUgc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZWJh
c2VTZXRSYXRlCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVk
aWEsIENNVGltZWJhc2VTZXRUaW1lLCBPU1N0YXR1cywgKENNVGltZWJhc2VSZWYgdGltZWJhc2Us
IENNVGltZSB0aW1lKSwgKHRpbWViYXNlLCB0aW1lKSkKICNkZWZpbmUgQ01UaW1lYmFzZVNldFRp
bWUgc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZWJhc2VTZXRUaW1lCitTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZWJhc2VHZXRFZmZlY3RpdmVS
YXRlLCBGbG9hdDY0LCAoQ01UaW1lYmFzZVJlZiB0aW1lYmFzZSksICh0aW1lYmFzZSkpCisjZGVm
aW5lIENNVGltZWJhc2VHZXRFZmZlY3RpdmVSYXRlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWVi
YXNlR2V0RWZmZWN0aXZlUmF0ZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29y
ZSwgQ29yZU1lZGlhLCBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5LCBDRkRpY3Rpb25hcnlSZWYsIChD
TVRpbWUgdGltZSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yKSwgKHRpbWUsIGFsbG9jYXRvcikp
CiAjZGVmaW5lIENNVGltZUNvcHlBc0RpY3Rpb25hcnkgc29mdExpbmtfQ29yZU1lZGlhX0NNVGlt
ZUNvcHlBc0RpY3Rpb25hcnkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUs
IENvcmVNZWRpYSwgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZmZXIs
IE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDVkltYWdlQnVmZmVyUmVmIGlt
YWdlQnVmZmVyLCBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgKm91dERlc2MpLCAoYWxsb2Nh
dG9yLCBpbWFnZUJ1ZmZlciwgb3V0RGVzYykpCkBAIC0xOTMsNiArMjAxLDE4IEBAIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIEMKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVTaXplQXJy
YXksIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ01JdGVtQ291bnQgc2l6ZUFy
cmF5RW50cmllcywgc2l6ZV90KiBzaXplQXJyYXlPdXQsIENNSXRlbUNvdW50KiBzaXplQXJyYXlF
bnRyaWVzTmVlZGVkT3V0KSwgKHNidWYsIHNpemVBcnJheUVudHJpZXMsIHNpemVBcnJheU91dCwg
c2l6ZUFycmF5RW50cmllc05lZWRlZE91dCkpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0U2Ft
cGxlU2l6ZUFycmF5IHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVNp
emVBcnJheQogCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVk
aWEsIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zLCBPU1N0
YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01CbG9ja0J1ZmZlclJlZiBkYXRhQnVm
ZmVyLCBCb29sZWFuIGRhdGFSZWFkeSwgQ01TYW1wbGVCdWZmZXJNYWtlRGF0YVJlYWR5Q2FsbGJh
Y2sgbWFrZURhdGFSZWFkeUNhbGxiYWNrLCB2b2lkICptYWtlRGF0YVJlYWR5UmVmY29uLCBDTUZv
cm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uLCBDTUl0ZW1Db3VudCBudW1TYW1w
bGVzLCBDTVRpbWUgc2J1ZlBUUywgY29uc3QgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbiAq
cGFja2V0RGVzY3JpcHRpb25zLCBDTVNhbXBsZUJ1ZmZlclJlZiAqc0J1Zk91dCksIChhbGxvY2F0
b3IsIGRhdGFCdWZmZXIsIGRhdGFSZWFkeSwgbWFrZURhdGFSZWFkeUNhbGxiYWNrLCBtYWtlRGF0
YVJlYWR5UmVmY29uLCBmb3JtYXREZXNjcmlwdGlvbiwgbnVtU2FtcGxlcywgc2J1ZlBUUywgcGFj
a2V0RGVzY3JpcHRpb25zLCBzQnVmT3V0KSkKKyNkZWZpbmUgQ01BdWRpb1NhbXBsZUJ1ZmZlckNy
ZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9TYW1w
bGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zCitTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZl
ckZyb21BdWRpb0J1ZmZlckxpc3QsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1Ziwg
Q0ZBbGxvY2F0b3JSZWYgYmJ1ZlN0cnVjdEFsbG9jYXRvciwgQ0ZBbGxvY2F0b3JSZWYgYmJ1Zk1l
bW9yeUFsbG9jYXRvciwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCAqYnVm
ZmVyTGlzdCksIChzYnVmLCBiYnVmU3RydWN0QWxsb2NhdG9yLCBiYnVmTWVtb3J5QWxsb2NhdG9y
LCBmbGFncywgYnVmZmVyTGlzdCkpCisjZGVmaW5lIENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZl
ckZyb21BdWRpb0J1ZmZlckxpc3Qgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyU2V0
RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3QKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhUmVhZHksIE9TU3Rh
dHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKKyNkZWZpbmUgQ01TYW1wbGVC
dWZmZXJTZXREYXRhUmVhZHkgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyU2V0RGF0
YVJlYWR5CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEs
IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJl
ZiBhbGxvY2F0b3IsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogYXNiZCwgc2l6
ZV90IGxheW91dFNpemUsIGNvbnN0IEF1ZGlvQ2hhbm5lbExheW91dCogbGF5b3V0LCBzaXplX3Qg
bWFnaWNDb29raWVTaXplLCBjb25zdCB2b2lkKiBtYWdpY0Nvb2tpZSwgQ0ZEaWN0aW9uYXJ5UmVm
IGV4dGVuc2lvbnMsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiogb3V0RGVzYyksIChhbGxv
Y2F0b3IsIGFzYmQsIGxheW91dFNpemUsIGxheW91dCwgbWFnaWNDb29raWVTaXplLCBtYWdpY0Nv
b2tpZSwgZXh0ZW5zaW9ucywgb3V0RGVzYykpCisjZGVmaW5lIENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkNyZWF0ZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3Jl
YXRlCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENN
Q2xvY2tHZXRIb3N0VGltZUNsb2NrLCBDTUNsb2NrUmVmLCAodm9pZCksICgpKQorI2RlZmluZSBD
TUNsb2NrR2V0SG9zdFRpbWVDbG9jayAgc29mdExpbmtfQ29yZU1lZGlhX0NNQ2xvY2tHZXRIb3N0
VGltZUNsb2NrCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVk
aWEsIENNQ2xvY2tHZXRUaW1lLCBDTVRpbWUsIChDTUNsb2NrUmVmIGNsb2NrKSwgKGNsb2NrKSkK
KyNkZWZpbmUgQ01DbG9ja0dldFRpbWUgIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUNsb2NrR2V0VGlt
ZQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxl
QVZGT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVNhbXBsZUFWRk9iakMuaAkocmV2aXNpb24gMjEwMzU2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxl
QVZGT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCwxMCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgfk1lZGlhU2FtcGxlQVZGT2JqQygpIHsgfQogCiAgICAgTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVRpbWUgb3V0cHV0UHJlc2Vu
dGF0aW9uVGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgTWVkaWFUaW1lIG91dHB1dER1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBB
dG9taWNTdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KICAg
ICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCShyZXZpc2lvbiAyMTAzNTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICszOSw4
IEBAIE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyOwogT0JKQ19DTEFTUyBB
VlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKIE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJSZW5k
ZXJTeW5jaHJvbml6ZXI7CiBPQkpDX0NMQVNTIEFWU3RyZWFtU2Vzc2lvbjsKK09CSkNfQ0xBU1Mg
TlNOdW1iZXI7CitPQkpDX0NMQVNTIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVu
ZXI7CiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJS
ZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzLDYgKzU1LDEwIEBAIGNsYXNzIFZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW07CiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXI7CiAjZW5kaWYKIAorI2lmIF9faGFzX2luY2x1ZGUoPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1
ZmZlclJlbmRlclN5bmNocm9uaXplci5oPikKKyNkZWZpbmUgVVNFX1JFTkRFUl9TWU5DSFJPTkla
RVIgMQorI2VuZGlmCisKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
QyBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHByaXZhdGUgTWVk
aWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlciwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZTo6T2JzZXJ2ZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQyhNZWRpYVBsYXllciopOwpAQCAtNzUsNiArODEsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBlbnN1cmVMYXllcigpOwogICAgIHZvaWQgZGVzdHJveUxheWVyKCk7CiAKKyAg
ICB2b2lkIHJlbmRlcmVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJl
ciosIE5TTnVtYmVyKik7CisgICAgdm9pZCBsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciosIE5TTnVtYmVyKik7CisKIHByaXZhdGU6CiAgICAgLy8gTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAKQEAgLTk3LDcgKzEwNiw2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBwYXVzZWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0
KSBvdmVycmlkZTsKLSAgICB2b2lkIGludGVybmFsU2V0Vm9sdW1lKGZsb2F0LCBib29sKTsKICAg
ICB2b2lkIHNldE11dGVkKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNNdXRpbmco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTEyMiwxMyArMTMwLDI1IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlIHsg
LyogTm8tb3AgKi8gfQogCi0gICAgdm9pZCBlbnF1ZXVlQXVkaW9TYW1wbGVCdWZmZXJGcm9tVHJh
Y2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBNZWRpYVNhbXBsZSYpOworICAgIHZvaWQgZmx1
c2hSZW5kZXJlcnMoKTsKIAotICAgIHZvaWQgcHJlcGFyZVZpZGVvU2FtcGxlQnVmZmVyRnJvbVRy
YWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgTWVkaWFTYW1wbGUmKTsKLSAgICB2b2lkIGVu
cXVldWVWaWRlb1NhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYpOworICAgIHVzaW5nIFBlbmRpbmdT
YW1wbGVRdWV1ZSA9IERlcXVlPFJlZjxNZWRpYVNhbXBsZT4+OworICAgIHZvaWQgYWRkU2FtcGxl
VG9QZW5kaW5nUXVldWUoUGVuZGluZ1NhbXBsZVF1ZXVlJiwgTWVkaWFTYW1wbGUmKTsKKyAgICB2
b2lkIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGVRdWV1ZSYp
OworCisgICAgdm9pZCB1cGRhdGVTYW1wbGVUaW1lcyhNZWRpYVNhbXBsZSYsIGNvbnN0IE1lZGlh
VGltZSYsIGNvbnN0IGNoYXIqKTsKKyAgICBNZWRpYVRpbWUgY2FsY3VsYXRlVGltZWxpbmVPZmZz
ZXQoY29uc3QgTWVkaWFTYW1wbGUmLCBkb3VibGUpOworICAgIAorICAgIHZvaWQgZW5xdWV1ZVZp
ZGVvU2FtcGxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgTWVkaWFTYW1wbGUmKTsKICAgICBi
b29sIHNob3VsZEVucXVldWVWaWRlb1NhbXBsZUJ1ZmZlcigpIGNvbnN0OwogICAgIHZvaWQgZmx1
c2hBbmRSZW1vdmVWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKLSAgICB2b2lkIHJlcXVlc3ROb3RpZmlj
YXRpb25XaGVuUmVhZHlGb3JNZWRpYURhdGEoKTsKKyAgICB2b2lkIHJlcXVlc3ROb3RpZmljYXRp
b25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKKworICAgIHZvaWQgZW5xdWV1ZUF1ZGlvU2FtcGxl
KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgTWVkaWFTYW1wbGUmKTsKKyAgICB2b2lkIGNyZWF0
ZUF1ZGlvUmVuZGVyZXIoQXRvbWljU3RyaW5nKTsKKyAgICB2b2lkIGRlc3Ryb3lBdWRpb1JlbmRl
cmVyKEF0b21pY1N0cmluZyk7CisgICAgdm9pZCBkZXN0cm95QXVkaW9SZW5kZXJlcnMoKTsKKyAg
ICB2b2lkIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEoQXRvbWljU3Ry
aW5nKTsKIAogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTE1NSw2ICsxNzUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlSW50cmluc2ljU2l6ZShjb25zdCBGbG9hdFNpemUm
KTsKICAgICB2b2lkIHVwZGF0ZVRyYWNrcygpOwogICAgIHZvaWQgcmVuZGVyaW5nTW9kZUNoYW5n
ZWQoKTsKKyAgICB2b2lkIGNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNrKCk7CiAKICAgICB2b2lkIHNj
aGVkdWxlRGVmZXJyZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCkBAIC0xODYsMjYgKzIw
NywzNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRS
ZWN0KSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgYm9vbCBoYXZlVmlkZW9MYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHx8IG1fdmlkZW9QcmV2aWV3UGxh
eWVyOyB9CisgICAgTWVkaWFUaW1lIHN0cmVhbVRpbWUoKSBjb25zdDsKKworI2lmIFVTRShSRU5E
RVJfU1lOQ0hST05JWkVSKQorICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJv
dmlkZXIoKSBmaW5hbDsKKyNlbmRpZgogCiAgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyIHsgbnVs
bHB0ciB9OwogICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQz4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRl
PiBtX21lZGlhU3RyZWFtUHJpdmF0ZTsKIAotICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
UHJldmlldz4gbV92aWRlb1ByZXZpZXdQbGF5ZXI7Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlPiBtX3ZpZGVvVHJhY2s7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlPiBtX2FjdGl2ZVZpZGVvVHJhY2s7CiAKKyAgICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZm
ZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4gbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcjsKICAgICBSZXRh
aW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKKyAg
ICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4+
IG1fYXVkaW9SZW5kZXJlcnM7CiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyUmVuZGVyU3lu
Y2hyb25pemVyPiBtX3N5bmNocm9uaXplcjsKKyNlbHNlCisgICAgc3RkOjp1bmlxdWVfcHRyPENs
b2NrPiBtX2Nsb2NrOwogI2VuZGlmCisKKyAgICBNZWRpYVRpbWUgbV9wYXVzZWRUaW1lOwogICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BhdXNlZEltYWdlOwotICAgIGRvdWJsZSBtX3BhdXNl
ZFRpbWUgeyAwIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBtX2Nsb2NrOwogCiAgICAg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV9h
dWRpb1RyYWNrTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKLSAgICBEZXF1ZTxSZWY8TWVkaWFTYW1w
bGU+PiBtX3NhbXBsZVF1ZXVlOworICAgIFBlbmRpbmdTYW1wbGVRdWV1ZSBtX3BlbmRpbmdWaWRl
b1NhbXBsZVF1ZXVlOworI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQorICAgIFBlbmRpbmdT
YW1wbGVRdWV1ZSBtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlOworI2VuZGlmCiAKICAgICBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRlIHsgTWVkaWFQbGF5ZXI6OkVtcHR5
IH07CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlIHsgTWVkaWFQbGF5
ZXI6OkhhdmVOb3RoaW5nIH07CkBAIC0yMTksNiArMjUwLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Jl
Y2VpdmVkTWVkaWEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0ZyYW1lRGlzcGxheWVkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fcGVuZGluZ1NlbGVjdGVkVHJhY2tDaGVjayB7IGZhbHNlIH07CiAK
ICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyPiBtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0JKHJl
dmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTUyLDkgKzUyLDEzMyBAQAogCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09Q
VElPTkFMKEFWRm91bmRhdGlvbikKIAorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRh
dGlvbiwgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyKQogU09GVF9MSU5LX0NMQVNTX09QVElP
TkFMKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiBTT0ZUX0xJTktf
Q0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9u
aXplcikKIAorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1RpbWVQaXRj
aEFsZ29yaXRobVNwZWN0cmFsLCBOU1N0cmluZyopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3Vu
ZGF0aW9uLCBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNwZWVkLCBOU1N0cmluZyopCisK
KyNkZWZpbmUgQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVNwZWN0cmFsIGdldEFWQXVkaW9UaW1l
UGl0Y2hBbGdvcml0aG1TcGVjdHJhbCgpCisjZGVmaW5lIEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0
aG1WYXJpc3BlZWQgZ2V0QVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCgpCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50ZXJmYWNlIFdlYkFWU2FtcGxlQnVmZmVyU3Rh
dHVzQ2hhbmdlTGlzdGVuZXIgOiBOU09iamVjdCB7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDKiBfcGFyZW50OworICAgIFZlY3RvcjxSZXRhaW5QdHI8QVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI+PiBfbGF5ZXJzOworICAgIFZlY3RvcjxSZXRhaW5QdHI8QVZTYW1w
bGVCdWZmZXJBdWRpb1JlbmRlcmVyPj4gX3JlbmRlcmVyczsKK30KKworLSAoaWQpaW5pdFdpdGhQ
YXJlbnQ6KE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyopY2FsbGJhY2s7Cist
ICh2b2lkKWludmFsaWRhdGU7CistICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXI6KEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyICopbGF5ZXI7CistICh2b2lkKXN0b3BPYnNlcnZpbmdMYXllcjoo
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilsYXllcjsKKy0gKHZvaWQpYmVnaW5PYnNlcnZp
bmdSZW5kZXJlcjooQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyICopcmVuZGVyZXI7CistICh2
b2lkKXN0b3BPYnNlcnZpbmdSZW5kZXJlcjooQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyICop
cmVuZGVyZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1
c0NoYW5nZUxpc3RlbmVyCisKKy0gKGlkKWluaXRXaXRoUGFyZW50OihNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMqKXBhcmVudAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3BhcmVudCA9IHBhcmVudDsKKyAg
ICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW3NlbGYgaW52YWxp
ZGF0ZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWludmFsaWRhdGUKK3sK
KyAgICBmb3IgKGF1dG8mIGxheWVyIDogX2xheWVycykKKyAgICAgICAgW2xheWVyIHJlbW92ZU9i
c2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOworICAgIF9sYXllcnMuY2xlYXIoKTsK
KworICAgIGZvciAoYXV0byYgcmVuZGVyZXIgOiBfcmVuZGVyZXJzKQorICAgICAgICBbcmVuZGVy
ZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVzIl07CisgICAgX3JlbmRl
cmVycy5jbGVhcigpOworCisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKKworICAgIF9wYXJlbnQgPSBudWxscHRyOworfQorCist
ICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXI6KEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKils
YXllcgoreworICAgIEFTU0VSVChfcGFyZW50KTsKKyAgICBBU1NFUlQoIV9sYXllcnMuY29udGFp
bnMobGF5ZXIpKTsKKworICAgIF9sYXllcnMuYXBwZW5kKGxheWVyKTsKKyAgICBbbGF5ZXIgYWRk
T2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVzIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNl
cnZpbmdPcHRpb25OZXcgY29udGV4dDpudWxscHRyXTsKK30KKworLSAodm9pZClzdG9wT2JzZXJ2
aW5nTGF5ZXI6KEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKilsYXllcgoreworICAgIEFTU0VS
VChfcGFyZW50KTsKKyAgICBBU1NFUlQoX2xheWVycy5jb250YWlucyhsYXllcikpOworCisgICAg
W2xheWVyIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOworICAgIF9s
YXllcnMucmVtb3ZlKF9sYXllcnMuZmluZChsYXllcikpOworfQorCistICh2b2lkKWJlZ2luT2Jz
ZXJ2aW5nUmVuZGVyZXI6KEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciopcmVuZGVyZXIKK3sK
KyAgICBBU1NFUlQoX3BhcmVudCk7CisgICAgQVNTRVJUKCFfcmVuZGVyZXJzLmNvbnRhaW5zKHJl
bmRlcmVyKSk7CisKKyAgICBfcmVuZGVyZXJzLmFwcGVuZChyZW5kZXJlcik7CisgICAgW3JlbmRl
cmVyIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyIgb3B0aW9uczpOU0tleVZh
bHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07Cit9CisKKy0gKHZvaWQpc3Rv
cE9ic2VydmluZ1JlbmRlcmVyOihBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqKXJlbmRlcmVy
Cit7CisgICAgQVNTRVJUKF9wYXJlbnQpOworICAgIEFTU0VSVChfcmVuZGVyZXJzLmNvbnRhaW5z
KHJlbmRlcmVyKSk7CisKKyAgICBbcmVuZGVyZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQ
YXRoOkAic3RhdHVzIl07CisgICAgX3JlbmRlcmVycy5yZW1vdmUoX3JlbmRlcmVycy5maW5kKHJl
bmRlcmVyKSk7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcg
KilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFu
Z2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKK3sKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7
CisgICAgVU5VU0VEX1BBUkFNKGtleVBhdGgpOworICAgIEFTU0VSVChfcGFyZW50KTsKKworICAg
IFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPiBwcm90ZWN0
ZWRTZWxmID0gc2VsZjsKKyAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOmdldEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKV0pIHsKKyAgICAgICAgUmV0YWluUHRyPEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyPiBsYXllciA9IChBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAq
KW9iamVjdDsKKyAgICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBzdGF0dXMgPSBbY2hhbmdlIHZh
bHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOworCisgICAgICAgIEFTU0VSVChfbGF5
ZXJzLmNvbnRhaW5zKGxheWVyLmdldCgpKSk7CisgICAgICAgIEFTU0VSVChba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJzdGF0dXMiXSk7CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkU2VsZiA9IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIGxheWVyID0gV1RGTW92ZShsYXll
ciksIHN0YXR1cyA9IFdURk1vdmUoc3RhdHVzKV0geworICAgICAgICAgICAgcHJvdGVjdGVkU2Vs
Zi0+X3BhcmVudC0+bGF5ZXJTdGF0dXNEaWRDaGFuZ2UobGF5ZXIuZ2V0KCksIHN0YXR1cy5nZXQo
KSk7CisgICAgICAgIH0pOworCisgICAgfSBlbHNlIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6
Z2V0QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyQ2xhc3MoKV0pIHsKKyAgICAgICAgUmV0YWlu
UHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4gcmVuZGVyZXIgPSAoQVZTYW1wbGVCdWZm
ZXJBdWRpb1JlbmRlcmVyICopb2JqZWN0OworICAgICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHN0
YXR1cyA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisKKyAg
ICAgICAgQVNTRVJUKF9yZW5kZXJlcnMuY29udGFpbnMocmVuZGVyZXIuZ2V0KCkpKTsKKyAgICAg
ICAgQVNTRVJUKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInN0YXR1cyJdKTsKKworICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRTZWxm
KSwgcmVuZGVyZXIgPSBXVEZNb3ZlKHJlbmRlcmVyKSwgc3RhdHVzID0gV1RGTW92ZShzdGF0dXMp
XSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5yZW5kZXJlclN0YXR1c0Rp
ZENoYW5nZShyZW5kZXJlci5nZXQoKSwgc3RhdHVzLmdldCgpKTsKKyAgICAgICAgfSk7CisgICAg
fSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorQGVuZAorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICNwcmFnbWEgbWFyayAtCkBAIC02Myw3ICsxODcsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAg
ICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKKyAgICAs
IG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVz
Q2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKKyNpZiBVU0UoUkVO
REVSX1NZTkNIUk9OSVpFUikKKyAgICAsIG1fc3luY2hyb25pemVyKGFkb3B0TlMoW2FsbG9jQVZT
YW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXJJbnN0YW5jZSgpIGluaXRdKSkKKyNlbHNlCiAg
ICAgLCBtX2Nsb2NrKENsb2NrOjpjcmVhdGUoKSkKKyNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgICwgbV92aWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXIoVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpjcmVhdGUoKSkKICNl
bmRpZgpAQCAtODEsMTAgKzIxMCwxMyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6On5NCiAgICAgICAgICAgICB0cmFjay0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogICAg
IH0KIAorICAgIGRlc3Ryb3lMYXllcigpOworI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQor
ICAgIGRlc3Ryb3lBdWRpb1JlbmRlcmVycygpOworI2VuZGlmCisKICAgICBtX2F1ZGlvVHJhY2tN
YXAuY2xlYXIoKTsKICAgICBtX3ZpZGVvVHJhY2tNYXAuY2xlYXIoKTsKLQotICAgIGRlc3Ryb3lM
YXllcigpOwogfQogCiAjcHJhZ21hIG1hcmsgLQpAQCAtMTI3LDM0ICsyNTksMTA2IEBAIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcmkKICNwcmFnbWEgbWFyayAtCiAjcHJh
Z21hIG1hcmsgQVZTYW1wbGVCdWZmZXIgTWV0aG9kcwogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUF1ZGlvU2FtcGxlQnVmZmVyRnJvbVRyYWNrKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgTWVkaWFTYW1wbGUmKQordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVl
KFBlbmRpbmdTYW1wbGVRdWV1ZSYgcXVldWUpCiB7Ci0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4MzYKKyAgICBNZWRpYVRpbWUgbm93ID0g
c3RyZWFtVGltZSgpOworICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlm
IChxdWV1ZS5maXJzdCgpLT5kZWNvZGVUaW1lKCkgPiBub3cpCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgcXVldWUucmVtb3ZlRmlyc3QoKTsKKyAgICB9OwogfQogCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFk
eUZvck1lZGlhRGF0YSgpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6YWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoUGVuZGluZ1NhbXBsZVF1ZXVlJiBxdWV1ZSwgTWVk
aWFTYW1wbGUmIHNhbXBsZSkKIHsKLSAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgcmVx
dWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1
c2luZ0Jsb2NrOl4gewotICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJl
cXVlc3RpbmdNZWRpYURhdGFdOworICAgIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVl
KHF1ZXVlKTsKKyAgICBxdWV1ZS5hcHBlbmQoc2FtcGxlKTsKK30KIAotICAgICAgICB3aGlsZSAo
IW1fc2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAoIVttX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgICAg
ICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yTWVkaWFEYXRhKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQordm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVNhbXBsZVRpbWVzKE1lZGlhU2FtcGxlJiBzYW1wbGUs
IGNvbnN0IE1lZGlhVGltZSYgdGltZWxpbmVPZmZzZXQsIGNvbnN0IGNoYXIqIGxvZ2dpbmdQcmVm
aXgpCit7CisgICAgTE9HKE1lZGlhQ2FwdHVyZVNhbXBsZXMsICIlcyglcCk6IG9yaWdpbmFsIHNh
bXBsZSA9ICVzIiwgbG9nZ2luZ1ByZWZpeCwgdGhpcywgdG9TdHJpbmcoc2FtcGxlKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBzYW1wbGUub2Zmc2V0VGltZXN0YW1wc0J5KHRpbWVsaW5lT2Zmc2V0KTsK
KyAgICBMT0coTWVkaWFDYXB0dXJlU2FtcGxlcywgIiVzKCVwKTogYWRqdXN0ZWQgc2FtcGxlID0g
JXMiLCBsb2dnaW5nUHJlZml4LCB0aGlzLCB0b1N0cmluZyhzYW1wbGUpLnV0ZjgoKS5kYXRhKCkp
OworCisjaWYgIUxPR19ESVNBQkxFRAorICAgIE1lZGlhVGltZSBub3cgPSBzdHJlYW1UaW1lKCk7
CisgICAgZG91YmxlIGRlbHRhID0gKHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCkgLSBub3cpLnRv
RG91YmxlKCk7CisgICAgaWYgKGRlbHRhIDwgMCkKKyAgICAgICAgTE9HKE1lZGlhLCAiJXMoJXAp
OiAqTk9URSogYXVkaW8gc2FtcGxlIGF0IHRpbWUgJXMgaXMgJWYgc2Vjb25kcyBsYXRlIiwgbG9n
Z2luZ1ByZWZpeCwgdGhpcywgdG9TdHJpbmcobm93KS51dGY4KCkuZGF0YSgpLCAtZGVsdGEpOwor
ICAgIGVsc2UgaWYgKGRlbHRhIDwgLjAxKQorICAgICAgICBMT0coTWVkaWEsICIlcyglcCk6ICpO
T1RFKiBhdWRpbyBzYW1wbGUgYXQgdGltZSAlcyBpcyBvbmx5ICVzIHNlY29uZHMgZWFybHkiLCBs
b2dnaW5nUHJlZml4LCB0aGlzLCB0b1N0cmluZyhub3cpLnV0ZjgoKS5kYXRhKCksIGRlbHRhKTsK
KyAgICBlbHNlIGlmIChkZWx0YSA+IC4zKQorICAgICAgICBMT0coTWVkaWEsICIlcyglcCk6ICpO
T1RFKiBhdWRpbyBzYW1wbGUgYXQgdGltZSAlcyBpcyAlcyBzZWNvbmRzIGVhcmx5ISIsIGxvZ2dp
bmdQcmVmaXgsIHRoaXMsIHRvU3RyaW5nKG5vdykudXRmOCgpLmRhdGEoKSwgZGVsdGEpOworI2Vu
ZGlmCiAKLSAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gbV9zYW1wbGVRdWV1ZS50YWtlRmlyc3Qo
KTsKLSAgICAgICAgICAgIGVucXVldWVWaWRlb1NhbXBsZUJ1ZmZlcihzYW1wbGUuZ2V0KCkpOwot
ICAgICAgICB9Ci0gICAgfV07CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkK
K01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNhbGN1bGF0
ZVRpbWVsaW5lT2Zmc2V0KGNvbnN0IE1lZGlhU2FtcGxlJiBzYW1wbGUsIGRvdWJsZSBsYXRlbmN5
KQogeworICAgIE1lZGlhVGltZSBzYW1wbGVUaW1lID0gc2FtcGxlLm91dHB1dFByZXNlbnRhdGlv
blRpbWUoKTsKKyAgICBpZiAoIXNhbXBsZVRpbWUgfHwgIXNhbXBsZVRpbWUuaXNWYWxpZCgpKQor
ICAgICAgICBzYW1wbGVUaW1lID0gc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKTsKKyAgICBNZWRp
YVRpbWUgdGltZWxpbmVPZmZzZXQgPSBzdHJlYW1UaW1lKCkgLSBzYW1wbGVUaW1lICsgTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKGxhdGVuY3kpOworICAgIGlmICh0aW1lbGluZU9mZnNldC50
aW1lU2NhbGUoKSAhPSBzYW1wbGVUaW1lLnRpbWVTY2FsZSgpKQorICAgICAgICB0aW1lbGluZU9m
ZnNldCA9IHRvTWVkaWFUaW1lKENNVGltZUNvbnZlcnRTY2FsZSh0b0NNVGltZSh0aW1lbGluZU9m
ZnNldCksIHNhbXBsZVRpbWUudGltZVNjYWxlKCksIGtDTVRpbWVSb3VuZGluZ01ldGhvZF9EZWZh
dWx0KSk7CisgICAgcmV0dXJuIHRpbWVsaW5lT2Zmc2V0OworfQorCisjaWYgVVNFKFJFTkRFUl9T
WU5DSFJPTklaRVIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
ZW5xdWV1ZUF1ZGlvU2FtcGxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaywgTWVkaWFT
YW1wbGUmIHNhbXBsZSkKK3sKKyAgICBBU1NFUlQobV9hdWRpb1RyYWNrTWFwLmNvbnRhaW5zKHRy
YWNrLmlkKCkpKTsKKyAgICBBU1NFUlQobV9hdWRpb1JlbmRlcmVycy5jb250YWlucyhzYW1wbGUu
dHJhY2tJRCgpKSk7CisKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIGF1ZGlvUmVuZGVyZXJMYXRl
bmN5ID0gMC4yOworICAgIGF1dG8gYXVkaW9UcmFjayA9IG1fYXVkaW9UcmFja01hcC5nZXQodHJh
Y2suaWQoKSk7CisgICAgTWVkaWFUaW1lIHRpbWVsaW5lT2Zmc2V0ID0gYXVkaW9UcmFjay0+dGlt
ZWxpbmVPZmZzZXQoKTsKKyAgICBpZiAodGltZWxpbmVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpKSB7CisgICAgICAgIHRpbWVsaW5lT2Zmc2V0ID0gY2FsY3VsYXRlVGltZWxpbmVP
ZmZzZXQoc2FtcGxlLCBhdWRpb1JlbmRlcmVyTGF0ZW5jeSk7CisgICAgICAgIGF1ZGlvVHJhY2st
PnNldFRpbWVsaW5lT2Zmc2V0KHRpbWVsaW5lT2Zmc2V0KTsKKyAgICAgICAgTE9HKE1lZGlhQ2Fw
dHVyZVNhbXBsZXMsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVl
dWVBdWRpb1NhbXBsZTogdGltZWxpbmUgb2Zmc2V0IGZvciB0cmFjayAlcyBzZXQgdG8gKCVsbGQv
JWQpIiwgdHJhY2suaWQoKS51dGY4KCkuZGF0YSgpLCB0aW1lbGluZU9mZnNldC50aW1lVmFsdWUo
KSwgdGltZWxpbmVPZmZzZXQudGltZVNjYWxlKCkpOworICAgIH0KKworICAgIHVwZGF0ZVNhbXBs
ZVRpbWVzKHNhbXBsZSwgdGltZWxpbmVPZmZzZXQsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmVucXVldWVBdWRpb1NhbXBsZSIpOworCisgICAgYXV0byByZW5kZXJlciA9
IG1fYXVkaW9SZW5kZXJlcnMuZ2V0KHNhbXBsZS50cmFja0lEKCkpOworICAgIGlmICghW3JlbmRl
cmVyIGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgeworICAgICAgICBhZGRTYW1wbGVUb1BlbmRp
bmdRdWV1ZShtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlLCBzYW1wbGUpOworICAgICAgICByZXF1
ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yQXVkaW9EYXRhKHNhbXBsZS50cmFja0lEKCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW3JlbmRlcmVyIGVucXVldWVTYW1wbGVCdWZm
ZXI6c2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyXTsKK30KKyNl
bmRpZgorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1
ZVZpZGVvU2FtcGxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaywgTWVkaWFTYW1wbGUm
IHNhbXBsZSkKK3sKKyAgICBBU1NFUlQobV92aWRlb1RyYWNrTWFwLmNvbnRhaW5zKHRyYWNrLmlk
KCkpKTsKKworICAgIGlmICgmdHJhY2sgIT0gbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZp
ZGVvVHJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYXNSZWNlaXZlZE1lZGlhID0g
dHJ1ZTsKKyAgICB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgaWYgKG1fZGlzcGxheU1vZGUgIT0g
TGl2ZVByZXZpZXcgfHwgKG1fZGlzcGxheU1vZGUgPT0gUGF1c2VkSW1hZ2UgJiYgbV9pc0ZyYW1l
RGlzcGxheWVkKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB2aWRlb1RyYWNrID0gbV92
aWRlb1RyYWNrTWFwLmdldCh0cmFjay5pZCgpKTsKKyAgICBNZWRpYVRpbWUgdGltZWxpbmVPZmZz
ZXQgPSB2aWRlb1RyYWNrLT50aW1lbGluZU9mZnNldCgpOworICAgIGlmICh0aW1lbGluZU9mZnNl
dCA9PSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpIHsKKyAgICAgICAgdGltZWxpbmVPZmZzZXQg
PSBjYWxjdWxhdGVUaW1lbGluZU9mZnNldChzYW1wbGUsIDAuMDEpOworICAgICAgICB2aWRlb1Ry
YWNrLT5zZXRUaW1lbGluZU9mZnNldCh0aW1lbGluZU9mZnNldCk7CisgICAgICAgIExPRyhNZWRp
YUNhcHR1cmVTYW1wbGVzLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpl
bnF1ZXVlVmlkZW9TYW1wbGU6IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICVm
IiwgdHJhY2suaWQoKS51dGY4KCkuZGF0YSgpLCB0aW1lbGluZU9mZnNldC50b0RvdWJsZSgpKTsK
KyAgICB9CisKKyAgICB1cGRhdGVTYW1wbGVUaW1lcyhzYW1wbGUsIHRpbWVsaW5lT2Zmc2V0LCAi
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGUi
KTsKKwogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgewogICAgICAgICBpZiAo
IVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsK
LSAgICAgICAgICAgIG1fc2FtcGxlUXVldWUuYXBwZW5kKHNhbXBsZSk7Ci0gICAgICAgICAgICBy
ZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yTWVkaWFEYXRhKCk7CisgICAgICAgICAgICBh
ZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLCBzYW1wbGUp
OworICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE2NCwxNyArMzY4LDE0NCBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgbV9pc0ZyYW1l
RGlzcGxheWVkID0gdHJ1ZTsKICAgICBpZiAoIW1faGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSkg
ewogICAgICAgICBtX2hhc0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUgPSB0cnVlOworICAgICAgICBp
ZiAobV9kaXNwbGF5TW9kZSA9PSBQYXVzZWRJbWFnZSkKKyAgICAgICAgICAgIHVwZGF0ZVBhdXNl
ZEltYWdlKCk7CiAgICAgICAgIG1fcGxheWVyLT5maXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKTsK
LSAgICAgICAgdXBkYXRlUGF1c2VkSW1hZ2UoKTsKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwcmVwYXJlVmlkZW9TYW1wbGVCdWZmZXJGcm9t
VHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBNZWRpYVNhbXBsZSYgc2FtcGxl
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlcXVlc3ROb3Rp
ZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKQoreworICAgIFttX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6XiB7CisgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciBzdG9wUmVxdWVzdGluZ01lZGlhRGF0YV07CisKKyAgICAgICAgd2hpbGUgKCFtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCFbbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAg
ICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0
byBzYW1wbGUgPSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOworICAgICAg
ICAgICAgZW5xdWV1ZVZpZGVvU2FtcGxlKCptX2FjdGl2ZVZpZGVvVHJhY2suZ2V0KCksIHNhbXBs
ZS5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9XTsKK30KKworI2lmIFVTRShSRU5ERVJfU1lOQ0hS
T05JWkVSKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlcXVl
c3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEoQXRvbWljU3RyaW5nIHRyYWNrSUQp
CiB7Ci0gICAgaWYgKCZ0cmFjayAhPSBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlkZW9U
cmFjaygpIHx8ICFzaG91bGRFbnF1ZXVlVmlkZW9TYW1wbGVCdWZmZXIoKSkKKyAgICBpZiAoIW1f
YXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGVucXVldWVWaWRlb1NhbXBsZUJ1ZmZlcihzYW1wbGUpOworICAgIGF1dG8gcmVuZGVyZXIgPSBt
X2F1ZGlvUmVuZGVyZXJzLmdldCh0cmFja0lEKTsKKyAgICBbcmVuZGVyZXIgcmVxdWVzdE1lZGlh
RGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2Nr
Ol4geworICAgICAgICBbcmVuZGVyZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOworCisgICAg
ICAgIGF1dG8gYXVkaW9UcmFjayA9IG1fYXVkaW9UcmFja01hcC5nZXQodHJhY2tJRCk7CisgICAg
ICAgIHdoaWxlICghbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIGlmICghW3JlbmRlcmVyIGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgeworICAgICAg
ICAgICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEodHJhY2tJ
RCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBhdXRvIHNhbXBsZSA9IG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUudGFrZUZpcnN0KCk7Cisg
ICAgICAgICAgICBlbnF1ZXVlQXVkaW9TYW1wbGUoYXVkaW9UcmFjay0+c3RyZWFtVHJhY2soKSwg
c2FtcGxlLmdldCgpKTsKKyAgICAgICAgfQorICAgIH1dOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlQXVkaW9SZW5kZXJlcihBdG9taWNTdHJp
bmcgdHJhY2tJRCkKK3sKKyAgICBBU1NFUlQoIW1fYXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJh
Y2tJRCkpOworICAgIGF1dG8gcmVuZGVyZXIgPSBhZG9wdE5TKFthbGxvY0FWU2FtcGxlQnVmZmVy
QXVkaW9SZW5kZXJlckluc3RhbmNlKCkgaW5pdF0pOworICAgIFtyZW5kZXJlciBzZXRBdWRpb1Rp
bWVQaXRjaEFsZ29yaXRobToobV9wbGF5ZXItPnByZXNlcnZlc1BpdGNoKCkgPyBBVkF1ZGlvVGlt
ZVBpdGNoQWxnb3JpdGhtU3BlY3RyYWwgOiBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNw
ZWVkKV07CisgICAgbV9hdWRpb1JlbmRlcmVycy5zZXQodHJhY2tJRCwgcmVuZGVyZXIpOworICAg
IFttX3N5bmNocm9uaXplciBhZGRSZW5kZXJlcjpyZW5kZXJlci5nZXQoKV07CisgICAgW21fc3Rh
dHVzQ2hhbmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdSZW5kZXJlcjpyZW5kZXJlci5nZXQoKV07
CisgICAgaWYgKG1fYXVkaW9SZW5kZXJlcnMuc2l6ZSgpID09IDEpCisgICAgICAgIHJlbmRlcmlu
Z01vZGVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpkZXN0cm95QXVkaW9SZW5kZXJlcihBdG9taWNTdHJpbmcgdHJhY2tJRCkKK3sKKyAg
ICBpZiAoIW1fYXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gcmVuZGVyZXIgPSBtX2F1ZGlvUmVuZGVyZXJzLmdldCh0cmFja0lEKTsK
KyAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nUmVuZGVyZXI6cmVuZGVy
ZXIuZ2V0KCldOworICAgIFtyZW5kZXJlciBmbHVzaF07CisgICAgW3JlbmRlcmVyIHN0b3BSZXF1
ZXN0aW5nTWVkaWFEYXRhXTsKKworICAgIENNVGltZSBub3cgPSBDTVRpbWViYXNlR2V0VGltZShb
bV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKTsKKyAgICBbbV9zeW5jaHJvbml6ZXIgcmVtb3ZlUmVu
ZGVyZXI6cmVuZGVyZXIuZ2V0KCkgYXRUaW1lOm5vdyB3aXRoQ29tcGxldGlvbkhhbmRsZXI6XihC
T09MKSB7IH1dOworCisgICAgbV9hdWRpb1JlbmRlcmVycy5yZW1vdmUodHJhY2tJRCk7CisgICAg
aWYgKCFtX2F1ZGlvUmVuZGVyZXJzLnNpemUoKSkKKyAgICAgICAgcmVuZGVyaW5nTW9kZUNoYW5n
ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRl
c3Ryb3lBdWRpb1JlbmRlcmVycygpCit7CisgICAgbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZS5j
bGVhcigpOworICAgIGZvciAoYXV0byYgcmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJzLnZhbHVl
cygpKSB7CisgICAgICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIHN0b3BPYnNlcnZpbmdSZW5k
ZXJlcjpyZW5kZXJlci5nZXQoKV07CisgICAgICAgIFtyZW5kZXJlciBmbHVzaF07CisgICAgICAg
IFtyZW5kZXJlciBzdG9wUmVxdWVzdGluZ01lZGlhRGF0YV07CisgICAgfQorICAgIG1fYXVkaW9S
ZW5kZXJlcnMuY2xlYXIoKTsKKworICAgIEFTU0VSVChtX2F1ZGlvUmVuZGVyZXJzLmlzRW1wdHko
KSk7Cit9CisKK0F1ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCit7CisgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIHJldHVybiBhIG1peCBvZiBhbGwgYXVkaW8gdHJhY2tzIC0gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDMwNQorICAgIGZvciAoY29uc3QgYXV0byYgdHJh
Y2sgOiBtX2F1ZGlvVHJhY2tNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHRyYWNrLT5zdHJl
YW1UcmFjaygpLmVuZGVkKCkgfHwgIXRyYWNrLT5zdHJlYW1UcmFjaygpLmVuYWJsZWQoKSB8fCB0
cmFjay0+c3RyZWFtVHJhY2soKS5tdXRlZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgcmV0dXJuIHRyYWNrLT5zdHJlYW1UcmFjaygpLmF1ZGlvU291cmNlUHJvdmlkZXIoKTsK
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwordm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlbmRlcmVyU3RhdHVzRGlkQ2hhbmdlKEFWU2Ft
cGxlQnVmZmVyQXVkaW9SZW5kZXJlciogcmVuZGVyZXIsIE5TTnVtYmVyKiBzdGF0dXMpCit7Cisj
aWYgVVNFKFJFTkRFUl9TWU5DSFJPTklaRVIpCisgICAgU3RyaW5nIHRyYWNrSUQ7CisgICAgZm9y
IChhdXRvJiBwYWlyIDogbV9hdWRpb1JlbmRlcmVycykgeworICAgICAgICBpZiAocGFpci52YWx1
ZSA9PSByZW5kZXJlcikgeworICAgICAgICAgICAgdHJhY2tJRCA9IHBhaXIua2V5OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKCF0cmFja0lELmlzRW1w
dHkoKSk7CisgICAgaWYgKHN0YXR1cy5pbnRlZ2VyVmFsdWUgPT0gQVZRdWV1ZWRTYW1wbGVCdWZm
ZXJSZW5kZXJpbmdTdGF0dXNSZW5kZXJpbmcpCisgICAgICAgIG1fYXVkaW9UcmFja01hcC5nZXQo
dHJhY2tJRCktPnNldFRpbWVsaW5lT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZW5kZXJlcik7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1
cyk7CisjZW5kaWYKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmxheWVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKiBsYXll
ciwgTlNOdW1iZXIqIHN0YXR1cykKK3sKKyAgICBBU1NFUlQobGF5ZXIgPT0gbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIpOworICAgIEFTU0VSVChtX2FjdGl2ZVZpZGVvVHJhY2spOworICAgIGlm
IChzdGF0dXMuaW50ZWdlclZhbHVlID09IEFWUXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nU3Rh
dHVzUmVuZGVyaW5nKQorICAgICAgICBtX3ZpZGVvVHJhY2tNYXAuZ2V0KG1fYWN0aXZlVmlkZW9U
cmFjay0+aWQoKSktPnNldFRpbWVsaW5lT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpmbHVzaFJl
bmRlcmVycygpCit7CisgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgICAg
ICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworCisjaWYgVVNFKFJFTkRFUl9T
WU5DSFJPTklaRVIpCisgICAgZm9yIChhdXRvJiByZW5kZXJlciA6IG1fYXVkaW9SZW5kZXJlcnMu
dmFsdWVzKCkpCisgICAgICAgIFtyZW5kZXJlciBmbHVzaF07CisjZW5kaWYKIH0KIAogYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNob3VsZEVucXVldWVWaWRlb1Nh
bXBsZUJ1ZmZlcigpIGNvbnN0CkBAIC0xOTYsNDggKzUyNywzOCBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjplbnN1cmVMYXllcigpCiB7Ci0gICAgaWYgKCFtX21lZGlhU3RyZWFtUHJp
dmF0ZSB8fCBoYXZlVmlkZW9MYXllcigpKQorICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0FMYXllciAqdmlkZW9MYXllciA9IG5pbDsK
LSAgICBpZiAobV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKSkgewotICAg
ICAgICBtX3ZpZGVvUHJldmlld1BsYXllciA9IG1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmVW
aWRlb1RyYWNrKCktPnByZXZpZXcoKTsKLSAgICAgICAgaWYgKG1fdmlkZW9QcmV2aWV3UGxheWVy
KQotICAgICAgICAgICAgdmlkZW9MYXllciA9IG1fdmlkZW9QcmV2aWV3UGxheWVyLT5wbGF0Zm9y
bUxheWVyKCk7Ci0gICAgfQotCi0gICAgaWYgKCF2aWRlb0xheWVyKSB7Ci0gICAgICAgIG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllckluc3RhbmNlKCkgaW5pdF0pOwotICAgICAgICB2aWRlb0xheWVyID0gbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
PSBhZG9wdE5TKFthbGxvY0FWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySW5zdGFuY2UoKSBpbml0
XSk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
c2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciJdOworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXRO
YW1lOkAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyIl07CiAjZW5kaWYKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spOwor
ICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNh
Y2hlZENHQ29sb3IoQ29sb3I6OmJsYWNrKTsKKyAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBi
ZWdpbk9ic2VydmluZ0xheWVyOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKIAot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgbV9zeW5jaHJvbml6ZXIgPSBhZG9wdE5TKFthbGxv
Y0FWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVySW5zdGFuY2UoKSBpbml0XSk7Ci0gICAg
ICAgIFttX3N5bmNocm9uaXplciBhZGRSZW5kZXJlcjptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5nZXQoKV07CisjaWYgVVNFKFJFTkRFUl9TWU5DSFJPTklaRVIpCisgICAgW21fc3luY2hyb25p
emVyIGFkZFJlbmRlcmVyOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKICNlbmRp
ZgotICAgIH0KIAogICAgIHJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiAgICAgCiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgbV92aWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIodmlkZW9MYXllciwgc25hcHBlZElu
dFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6
ZSgpKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllciht
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKSwgc25hcHBlZEludFJlY3QobV9wbGF5ZXIt
PmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsKICNlbmRpZgog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxh
eWVyKCkKIHsKLSAgICBpZiAoIWhhdmVWaWRlb0xheWVyKCkpCisgICAgaWYgKCFtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb1ByZXZpZXdQ
bGF5ZXIgPSBudWxscHRyOwotCiAgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKSB7
CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKKyAgICAgICAgW21f
c3RhdHVzQ2hhbmdlTGlzdGVuZXIgc3RvcE9ic2VydmluZ0xheWVyOm1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmdldCgpXTsKICAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0
b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKICAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIGZsdXNoXTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgVVNFKFJFTkRFUl9TWU5DSFJPTkla
RVIpCiAgICAgICAgIENNVGltZSBjdXJyZW50VGltZSA9IENNVGltZWJhc2VHZXRUaW1lKFttX3N5
bmNocm9uaXplciB0aW1lYmFzZV0pOwogICAgICAgICBbbV9zeW5jaHJvbml6ZXIgcmVtb3ZlUmVu
ZGVyZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkgYXRUaW1lOmN1cnJlbnRUaW1l
IHdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wpIHsKICAgICAgICAgICAgIC8vIE5vLW9wLgpA
QCAtMzA1LDE0ICs2MjYsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iagogCiBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIGlmICghaGF2ZVZpZGVvTGF5ZXIoKSB8
fCBtX2Rpc3BsYXlNb2RlID09IE5vbmUpCisgICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciB8fCBtX2Rpc3BsYXlNb2RlID09IE5vbmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAg
ICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT52aWRlb0lubGluZUxheWVy
KCk7CiAjZWxzZQotICAgIGlmIChtX3ZpZGVvUHJldmlld1BsYXllcikKLSAgICAgICAgcmV0dXJu
IG1fdmlkZW9QcmV2aWV3UGxheWVyLT5wbGF0Zm9ybUxheWVyKCk7CiAKICAgICByZXR1cm4gbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7CiAjZW5kaWYKQEAgLTMyMCw3ICs2MzksNyBA
QCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0CiAKIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6RGlzcGxheU1vZGUgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50RGlzcGxheU1vZGUoKSBjb25zdAogewotICAgIGlm
IChtX2VuZGVkIHx8IG1faW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgfHwgIW1ldGFEYXRhQXZhaWxh
YmxlKCkgfHwgIWhhdmVWaWRlb0xheWVyKCkpCisgICAgaWYgKG1fZW5kZWQgfHwgbV9pbnRyaW5z
aWNTaXplLmlzRW1wdHkoKSB8fCAhbWV0YURhdGFBdmFpbGFibGUoKSB8fCAhbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIHJldHVybiBOb25lOwogCiAgICAgaWYgKG1fbWVkaWFT
dHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCkgJiYgIW1fbWVkaWFTdHJlYW1Qcml2YXRl
LT5hY3RpdmVWaWRlb1RyYWNrKCktPmVuYWJsZWQoKSkKQEAgLTM2OCwyMyArNjg3LDE1IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICBpZiAoIW1ldGFEYXRh
QXZhaWxhYmxlKCkgfHwgbV9wbGF5aW5nIHx8IG1fZW5kZWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY2xvY2stPnN0YXJ0KCk7CiAgICAgbV9wbGF5aW5nID0gdHJ1ZTsKLQotICAgIGlmICht
X3ZpZGVvUHJldmlld1BsYXllcikKLSAgICAgICAgbV92aWRlb1ByZXZpZXdQbGF5ZXItPnBsYXko
KTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgZWxzZQotICAgICAgICBbbV9zeW5jaHJvbml6ZXIg
c2V0UmF0ZToxXTsKKyNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKKyAgICBpZiAoIW1fc3lu
Y2hyb25pemVyLmdldCgpLnJhdGUpCisgICAgICAgIFttX3N5bmNocm9uaXplciBzZXRSYXRlOjEg
XTsgLy8gc3RyZWFtdGltZQorI2Vsc2UKKyAgICBpZiAoIW1fY2xvY2stPmlzUnVubmluZygpKQor
ICAgICAgICBtX2Nsb2NrLT5zdGFydCgpOwogI2VuZGlmCiAKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICghdHJhY2st
PmVuYWJsZWQoKSB8fCAhdHJhY2stPnN0cmVhbVRyYWNrKCkucHJldmlldygpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCkucHJldmlldygpLT5w
bGF5KCk7Ci0gICAgfQotCiAgICAgbV9oYXZlRXZlclBsYXllZCA9IHRydWU7CiAgICAgc2NoZWR1
bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKICAgICAgICAgdXBkYXRlRGlzcGxheU1vZGUoKTsKQEAg
LTM5OSwyNSArNzEwLDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmoKICAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgIW1fcGxheWluZyB8fCBtX2VuZGVk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhdXNlZFRpbWUgPSBtX2Nsb2NrLT5jdXJyZW50
VGltZSgpOworICAgIG1fcGF1c2VkVGltZSA9IGN1cnJlbnRNZWRpYVRpbWUoKTsKICAgICBtX3Bs
YXlpbmcgPSBmYWxzZTsKIAotICAgIGlmIChtX3ZpZGVvUHJldmlld1BsYXllcikKLSAgICAgICAg
bV92aWRlb1ByZXZpZXdQbGF5ZXItPnBhdXNlKCk7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGVs
c2UKLSAgICAgICAgW21fc3luY2hyb25pemVyIHNldFJhdGU6MF07Ci0jZW5kaWYKLQotICAgIGZv
ciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tNYXAudmFsdWVzKCkpIHsKLSAgICAg
ICAgaWYgKCF0cmFjay0+ZW5hYmxlZCgpIHx8ICF0cmFjay0+c3RyZWFtVHJhY2soKS5wcmV2aWV3
KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICB0cmFjay0+c3RyZWFtVHJhY2so
KS5wcmV2aWV3KCktPnBhdXNlKCk7Ci0gICAgfQotCiAgICAgdXBkYXRlRGlzcGxheU1vZGUoKTsK
ICAgICB1cGRhdGVQYXVzZWRJbWFnZSgpOworICAgIGZsdXNoUmVuZGVyZXJzKCk7CiB9CiAKIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYXVzZWQoKSBjb25zdApA
QCAtNDI1LDI1ICs3MjMsMTkgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iagogICAgIHJldHVybiAhbV9wbGF5aW5nOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6aW50ZXJuYWxTZXRWb2x1bWUoZmxvYXQgdm9sdW1lLCBib29s
IGludGVybmFsKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNl
dFZvbHVtZShmbG9hdCB2b2x1bWUpCiB7Ci0gICAgaWYgKCFpbnRlcm5hbCkKLSAgICAgICAgbV92
b2x1bWUgPSB2b2x1bWU7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpzZXRWb2x1bWUoJXApIiwgdGhpcyk7CiAKLSAgICBpZiAoIW1ldGFEYXRh
QXZhaWxhYmxlKCkpCisgICAgaWYgKG1fdm9sdW1lID09IHZvbHVtZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZm9yIChjb25zdCBhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja01hcC52YWx1ZXMo
KSkgewotICAgICAgICBpZiAoIXRyYWNrLT5lbmFibGVkKCkgfHwgIXRyYWNrLT5zdHJlYW1UcmFj
aygpLnByZXZpZXcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIG1fdm9sdW1lID0gdm9s
dW1lOwogCi0gICAgICAgIHRyYWNrLT5zdHJlYW1UcmFjaygpLnByZXZpZXcoKS0+c2V0Vm9sdW1l
KHZvbHVtZSk7Ci0gICAgfQotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKLXsKLSAgICBpbnRlcm5hbFNldFZvbHVt
ZSh2b2x1bWUsIGZhbHNlKTsKKyNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKKyAgICBmb3Ig
KGF1dG8mIHJlbmRlcmVyIDogbV9hdWRpb1JlbmRlcmVycy52YWx1ZXMoKSkKKyAgICAgICAgW3Jl
bmRlcmVyIHNldFZvbHVtZTp2b2x1bWVdOworI2VuZGlmCiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRNdXRlZChib29sIG11dGVkKQpAQCAtNDU1LDcg
Kzc0NywxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAKICAg
ICBtX211dGVkID0gbXV0ZWQ7CiAgICAgCi0gICAgaW50ZXJuYWxTZXRWb2x1bWUobXV0ZWQgPyAw
IDogbV92b2x1bWUsIHRydWUpOworI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQorICAgIGZv
ciAoYXV0byYgcmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJzLnZhbHVlcygpKQorICAgICAgICBb
cmVuZGVyZXIgc2V0TXV0ZWQ6bXV0ZWRdOworI2VuZGlmCiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpoYXNWaWRlbygpIGNvbnN0CkBAIC00ODEsNyArNzc2
LDE5IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUEKIAogTWVkaWFU
aW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3VycmVudE1lZGlhVGlt
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3Bs
YXlpbmcgPyBtX2Nsb2NrLT5jdXJyZW50VGltZSgpIDogbV9wYXVzZWRUaW1lKTsKKyAgICBpZiAo
IW1fcGxheWluZykKKyAgICAgICAgcmV0dXJuIG1fcGF1c2VkVGltZTsKKworICAgIHJldHVybiBz
dHJlYW1UaW1lKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnN0cmVhbVRpbWUoKSBjb25zdAoreworI2lmIFVTRShSRU5ERVJfU1lOQ0hST05J
WkVSKQorICAgIHJldHVybiB0b01lZGlhVGltZShDTVRpbWViYXNlR2V0VGltZShbbV9zeW5jaHJv
bml6ZXIgdGltZWJhc2VdKSk7CisjZWxzZQorICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUobV9jbG9jay0+Y3VycmVudFRpbWUoKSk7CisjZW5kaWYKIH0KIAogTWVkaWFQbGF5
ZXI6Ok5ldHdvcmtTdGF0ZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Om5l
dHdvcmtTdGF0ZSgpIGNvbnN0CkBAIC01OTgsMjUgKzkwNSwzNiBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgQVNTRVJUKG1lZGlhU2FtcGxlLnBsYXRmb3Jt
U2FtcGxlKCkudHlwZSA9PSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKICAg
ICBBU1NFUlQobV9tZWRpYVN0cmVhbVByaXZhdGUpOwogCisgICAgaWYgKCFtX2hhc1JlY2VpdmVk
TWVkaWEpIHsKKyAgICAgICAgbV9oYXNSZWNlaXZlZE1lZGlhID0gdHJ1ZTsKKyAgICAgICAgdXBk
YXRlUmVhZHlTdGF0ZSgpOworICAgIH0KKworICAgIGlmICghbV9wbGF5aW5nIHx8IHN0cmVhbVRp
bWUoKS50b0RvdWJsZSgpIDwgMCkKKyAgICAgICAgcmV0dXJuOworCisjaWYgVVNFKFJFTkRFUl9T
WU5DSFJPTklaRVIpCisgICAgaWYgKCFDTVRpbWViYXNlR2V0RWZmZWN0aXZlUmF0ZShbbV9zeW5j
aHJvbml6ZXIgdGltZWJhc2VdKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBzd2l0
Y2ggKHRyYWNrLnR5cGUoKSkgewogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9uZToK
ICAgICAgICAgLy8gRG8gbm90aGluZy4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpbzoKLSAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4MzYKKyNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpF
UikKKyAgICAgICAgZW5xdWV1ZUF1ZGlvU2FtcGxlKHRyYWNrLCBtZWRpYVNhbXBsZSk7CisjZW5k
aWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzoK
LSAgICAgICAgcHJlcGFyZVZpZGVvU2FtcGxlQnVmZmVyRnJvbVRyYWNrKHRyYWNrLCBtZWRpYVNh
bXBsZSk7Ci0gICAgICAgIG1faGFzUmVjZWl2ZWRNZWRpYSA9IHRydWU7Ci0gICAgICAgIHNjaGVk
dWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7Ci0gICAgICAgICAgICB1cGRhdGVSZWFkeVN0YXRlKCk7
Ci0gICAgICAgIH0pOworICAgICAgICBpZiAoJnRyYWNrID09IG1fYWN0aXZlVmlkZW9UcmFjay5n
ZXQoKSkKKyAgICAgICAgICAgIGVucXVldWVWaWRlb1NhbXBsZSh0cmFjaywgbWVkaWFTYW1wbGUp
OwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZp
ZGVvRnVsbHNjcmVlbkxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBjb21wbGV0aW9uSGFuZGxlcik7CkBAIC02
MjYsMTEgKzk0NCwxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
CiB7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVl
bkZyYW1lKGZyYW1lKTsKIH0KLQogI2VuZGlmCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBSZWZULCB0
eXBlbmFtZSBQYXNzUmVmVD4KLXZvaWQgdXBkYXRlVHJhY2tzT2ZUeXBlKEhhc2hNYXA8U3RyaW5n
LCBSZWZUPiYgdHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHJhY2tUeXBlLCBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZVZlY3RvciYgY3VycmVudFRyYWNrcywgUmVmVCAoKml0ZW1G
YWN0b3J5KShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpLCBNZWRpYVBsYXllciogcGxheWVyLCB2
b2lkIChNZWRpYVBsYXllcjo6KnJlbW92ZWRGdW5jdGlvbikoUGFzc1JlZlQpLCB2b2lkIChNZWRp
YVBsYXllcjo6KmFkZGVkRnVuY3Rpb24pKFBhc3NSZWZUKSwgc3RkOjpmdW5jdGlvbjx2b2lkKFJl
ZlQsIGludCk+IGNvbmZpZ3VyZUNhbGxiYWNrLCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2Jz
ZXJ2ZXIqIHRyYWNrT2JzZXJ2ZXIpCit0eXBlZGVmIGVudW0geworICAgIEFkZCwKKyAgICBSZW1v
dmUsCisgICAgQ29uZmlndXJlCit9IFRyYWNrU3RhdGU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBS
ZWZUPgordm9pZCB1cGRhdGVUcmFja3NPZlR5cGUoSGFzaE1hcDxTdHJpbmcsIFJlZlQ+JiB0cmFj
a01hcCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0cmFja1R5cGUsIE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlVmVjdG9yJiBjdXJyZW50VHJhY2tzLCBSZWZUICgqaXRlbUZhY3RvcnkpKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiksIGNvbnN0IEZ1bmN0aW9uPHZvaWQoUmVmVCwgaW50LCBUcmFj
a1N0YXRlKT4mIGNvbmZpZ3VyZVRyYWNrKQogewogICAgIFZlY3RvcjxSZWZUPiByZW1vdmVkVHJh
Y2tzOwogICAgIFZlY3RvcjxSZWZUPiBhZGRlZFRyYWNrczsKQEAgLTY2MCw0MSArOTgzLDk2IEBA
IHZvaWQgdXBkYXRlVHJhY2tzT2ZUeXBlKEhhc2hNYXA8U3RyaW5nLCAKICAgICB9CiAKICAgICBp
bnQgaW5kZXggPSAwOworICAgIGZvciAoYXV0byYgdHJhY2sgOiByZW1vdmVkVHJhY2tzKQorICAg
ICAgICBjb25maWd1cmVUcmFjayh0cmFjaywgaW5kZXgrKywgVHJhY2tTdGF0ZTo6UmVtb3ZlKTsK
KworICAgIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogYWRkZWRUcmFja3MpCisg
ICAgICAgIGNvbmZpZ3VyZVRyYWNrKHRyYWNrLCBpbmRleCsrLCBUcmFja1N0YXRlOjpBZGQpOwor
CisgICAgaW5kZXggPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiB0cmFja01hcC52
YWx1ZXMoKSkKLSAgICAgICAgY29uZmlndXJlQ2FsbGJhY2sodHJhY2ssIGluZGV4KyspOworICAg
ICAgICBjb25maWd1cmVUcmFjayh0cmFjaywgaW5kZXgrKywgVHJhY2tTdGF0ZTo6Q29uZmlndXJl
KTsKK30KIAotICAgIGZvciAoYXV0byYgdHJhY2sgOiByZW1vdmVkVHJhY2tzKSB7Ci0gICAgICAg
IChwbGF5ZXItPipyZW1vdmVkRnVuY3Rpb24pKCp0cmFjayk7Ci0gICAgICAgIHRyYWNrLT5zdHJl
YW1UcmFjaygpLnJlbW92ZU9ic2VydmVyKCp0cmFja09ic2VydmVyKTsKLSAgICB9Cit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2hlY2tTZWxlY3RlZFZpZGVvVHJh
Y2soKQoreworICAgIGlmIChtX3BlbmRpbmdTZWxlY3RlZFRyYWNrQ2hlY2spCisgICAgICAgIHJl
dHVybjsKIAotICAgIGZvciAoYXV0byYgdHJhY2sgOiBhZGRlZFRyYWNrcykgewotICAgICAgICAo
cGxheWVyLT4qYWRkZWRGdW5jdGlvbikoKnRyYWNrKTsKLSAgICAgICAgdHJhY2stPnN0cmVhbVRy
YWNrKCkuYWRkT2JzZXJ2ZXIoKnRyYWNrT2JzZXJ2ZXIpOwotICAgIH0KKyAgICBtX3BlbmRpbmdT
ZWxlY3RlZFRyYWNrQ2hlY2sgPSB0cnVlOworICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlz
XSB7CisgICAgICAgIGJvb2wgaGlkZVZpZGVvTGF5ZXIgPSB0cnVlOworICAgICAgICBtX2FjdGl2
ZVZpZGVvVHJhY2sgPSBudWxscHRyOworICAgICAgICBpZiAobV9tZWRpYVN0cmVhbVByaXZhdGUt
PmFjdGl2ZVZpZGVvVHJhY2soKSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFj
ayA6IG1fdmlkZW9UcmFja01hcC52YWx1ZXMoKSkgeworICAgICAgICAgICAgICAgIGlmICgmdHJh
Y2stPnN0cmVhbVRyYWNrKCkgPT0gbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJh
Y2soKSkgeworICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZVZpZGVvVHJhY2sgPSBtX21lZGlh
U3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlkZW9UcmFjaygpOworICAgICAgICAgICAgICAgICAgICBp
ZiAodHJhY2stPnNlbGVjdGVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBoaWRlVmlkZW9M
YXllciA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBlbnN1cmVMYXllcigpOwor
ICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlVmlk
ZW9MYXllcjsKKyAgICAgICAgbV9wZW5kaW5nU2VsZWN0ZWRUcmFja0NoZWNrID0gZmFsc2U7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVUcmFja3MoKQogewogICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yIGN1cnJl
bnRUcmFja3MgPSBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+dHJhY2tzKCk7CiAKLSAgICBzdGQ6OmZ1
bmN0aW9uPHZvaWQoUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+LCBpbnQpPiBl
bmFibGVBdWRpb1RyYWNrID0gW3RoaXNdKGF1dG8gdHJhY2ssIGludCBpbmRleCkKKyAgICBGdW5j
dGlvbjx2b2lkKFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiwgaW50LCBUcmFj
a1N0YXRlKT4gIHNldEF1ZGlvVHJhY2tTdGF0ZSA9IFt0aGlzXShhdXRvIHRyYWNrLCBpbnQgaW5k
ZXgsIFRyYWNrU3RhdGUgc3RhdGUpCiAgICAgewotICAgICAgICB0cmFjay0+c2V0VHJhY2tJbmRl
eChpbmRleCk7Ci0gICAgICAgIHRyYWNrLT5zZXRFbmFibGVkKHRyYWNrLT5zdHJlYW1UcmFjaygp
LmVuYWJsZWQoKSAmJiAhdHJhY2stPnN0cmVhbVRyYWNrKCkubXV0ZWQoKSk7CisgICAgICAgIHN3
aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBUcmFja1N0YXRlOjpSZW1vdmU6CisgICAgICAg
ICAgICB0cmFjay0+c3RyZWFtVHJhY2soKS5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CisgICAgICAg
ICAgICBtX3BsYXllci0+cmVtb3ZlQXVkaW9UcmFjaygqdHJhY2spOworICAgICAgICAgICAgZGVz
dHJveUF1ZGlvUmVuZGVyZXIodHJhY2stPmlkKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVHJhY2tTdGF0ZTo6QWRkOgorICAgICAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNr
KCkuYWRkT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICAgICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJh
Y2soKnRyYWNrKTsKKyAgICAgICAgICAgIGNyZWF0ZUF1ZGlvUmVuZGVyZXIodHJhY2stPmlkKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhY2tTdGF0ZTo6Q29uZmlndXJl
OgorICAgICAgICAgICAgdHJhY2stPnNldFRyYWNrSW5kZXgoaW5kZXgpOworICAgICAgICAgICAg
Ym9vbCBlbmFibGVkID0gdHJhY2stPnN0cmVhbVRyYWNrKCkuZW5hYmxlZCgpICYmICF0cmFjay0+
c3RyZWFtVHJhY2soKS5tdXRlZCgpOworICAgICAgICAgICAgdHJhY2stPnNldEVuYWJsZWQoZW5h
YmxlZCk7CisjaWYgVVNFKFJFTkRFUl9TWU5DSFJPTklaRVIpCisgICAgICAgICAgICBhdXRvIHJl
bmRlcmVyID0gbV9hdWRpb1JlbmRlcmVycy5nZXQodHJhY2stPmlkKCkpOworICAgICAgICAgICAg
QVNTRVJUKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIHJlbmRlcmVyLmdldCgpLm11dGVkID0gIWVu
YWJsZWQ7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfTsKLSAg
ICB1cGRhdGVUcmFja3NPZlR5cGUobV9hdWRpb1RyYWNrTWFwLCBSZWFsdGltZU1lZGlhU291cmNl
OjpBdWRpbywgY3VycmVudFRyYWNrcywgJkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OmNy
ZWF0ZSwgbV9wbGF5ZXIsICZNZWRpYVBsYXllcjo6cmVtb3ZlQXVkaW9UcmFjaywgJk1lZGlhUGxh
eWVyOjphZGRBdWRpb1RyYWNrLCBlbmFibGVBdWRpb1RyYWNrLCAoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGU6Ok9ic2VydmVyKikgdGhpcyk7CisgICAgdXBkYXRlVHJhY2tzT2ZUeXBlKG1fYXVkaW9U
cmFja01hcCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGN1cnJlbnRUcmFja3MsICZBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUsIHNldEF1ZGlvVHJhY2tTdGF0ZSk7CiAK
LSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW0+LCBpbnQpPiBlbmFibGVWaWRlb1RyYWNrID0gW3RoaXNdKGF1dG8gdHJhY2ssIGludCBpbmRl
eCkKKyAgICBGdW5jdGlvbjx2b2lkKFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
PiwgaW50LCBUcmFja1N0YXRlKT4gc2V0VmlkZW9UcmFja1N0YXRlID0gWyZdKGF1dG8gdHJhY2ss
IGludCBpbmRleCwgVHJhY2tTdGF0ZSBzdGF0ZSkKICAgICB7Ci0gICAgICAgIHRyYWNrLT5zZXRU
cmFja0luZGV4KGluZGV4KTsKLSAgICAgICAgYm9vbCBzZWxlY3RlZCA9ICZ0cmFjay0+c3RyZWFt
VHJhY2soKSA9PSBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlkZW9UcmFjaygpOwotICAg
ICAgICB0cmFjay0+c2V0U2VsZWN0ZWQoc2VsZWN0ZWQpOwotCi0gICAgICAgIGlmIChzZWxlY3Rl
ZCkKLSAgICAgICAgICAgIGVuc3VyZUxheWVyKCk7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsK
KyAgICAgICAgY2FzZSBUcmFja1N0YXRlOjpSZW1vdmU6CisgICAgICAgICAgICB0cmFjay0+c3Ry
ZWFtVHJhY2soKS5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICBtX3BsYXllci0+
cmVtb3ZlVmlkZW9UcmFjaygqdHJhY2spOworICAgICAgICAgICAgY2hlY2tTZWxlY3RlZFZpZGVv
VHJhY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYWNrU3RhdGU6OkFk
ZDoKKyAgICAgICAgICAgIHRyYWNrLT5zdHJlYW1UcmFjaygpLmFkZE9ic2VydmVyKCp0aGlzKTsK
KyAgICAgICAgICAgIG1fcGxheWVyLT5hZGRWaWRlb1RyYWNrKCp0cmFjayk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFja1N0YXRlOjpDb25maWd1cmU6CisgICAgICAgICAg
ICB0cmFjay0+c2V0VHJhY2tJbmRleChpbmRleCk7CisgICAgICAgICAgICBib29sIHNlbGVjdGVk
ID0gJnRyYWNrLT5zdHJlYW1UcmFjaygpID09IG1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmVW
aWRlb1RyYWNrKCk7CisgICAgICAgICAgICB0cmFjay0+c2V0U2VsZWN0ZWQoc2VsZWN0ZWQpOwor
ICAgICAgICAgICAgY2hlY2tTZWxlY3RlZFZpZGVvVHJhY2soKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgfTsKLSAgICB1cGRhdGVUcmFja3NPZlR5cGUobV92aWRlb1RyYWNr
TWFwLCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgY3VycmVudFRyYWNrcywgJlZpZGVvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OmNyZWF0ZSwgbV9wbGF5ZXIsICZNZWRpYVBsYXllcjo6cmVt
b3ZlVmlkZW9UcmFjaywgJk1lZGlhUGxheWVyOjphZGRWaWRlb1RyYWNrLCBlbmFibGVWaWRlb1Ry
YWNrLCAoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyKikgdGhpcyk7CisgICAgdXBk
YXRlVHJhY2tzT2ZUeXBlKG1fdmlkZW9UcmFja01hcCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW8sIGN1cnJlbnRUcmFja3MsICZWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUs
IHNldFZpZGVvVHJhY2tTdGF0ZSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2Vla2FibGUoKSBj
b25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5t
bQkocmV2aXNpb24gMjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNywxMSBAQCBNZWRpYVRpbWUgTWVkaWFTYW1wbGVBVkZPYmpDOjpwcmVzZW50YXRp
CiAgICAgcmV0dXJuIHRvTWVkaWFUaW1lKENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGlt
ZVN0YW1wKG1fc2FtcGxlLmdldCgpKSk7CiB9CiAKK01lZGlhVGltZSBNZWRpYVNhbXBsZUFWRk9i
akM6Om91dHB1dFByZXNlbnRhdGlvblRpbWUoKSBjb25zdAoreworICAgIHJldHVybiB0b01lZGlh
VGltZShDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChtX3NhbXBs
ZS5nZXQoKSkpOworfQorCiBNZWRpYVRpbWUgTWVkaWFTYW1wbGVBVkZPYmpDOjpkZWNvZGVUaW1l
KCkgY29uc3QKIHsKICAgICByZXR1cm4gdG9NZWRpYVRpbWUoQ01TYW1wbGVCdWZmZXJHZXREZWNv
ZGVUaW1lU3RhbXAobV9zYW1wbGUuZ2V0KCkpKTsKQEAgLTQ3LDYgKzUyLDExIEBAIE1lZGlhVGlt
ZSBNZWRpYVNhbXBsZUFWRk9iakM6OmR1cmF0aW9uKCkKICAgICByZXR1cm4gdG9NZWRpYVRpbWUo
Q01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihtX3NhbXBsZS5nZXQoKSkpOwogfQogCitNZWRpYVRp
bWUgTWVkaWFTYW1wbGVBVkZPYmpDOjpvdXRwdXREdXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHRvTWVkaWFUaW1lKENNU2FtcGxlQnVmZmVyR2V0T3V0cHV0RHVyYXRpb24obV9zYW1wbGUu
Z2V0KCkpKTsKK30KKwogc2l6ZV90IE1lZGlhU2FtcGxlQVZGT2JqQzo6c2l6ZUluQnl0ZXMoKSBj
b25zdAogewogICAgIHJldHVybiBDTVNhbXBsZUJ1ZmZlckdldFRvdGFsU2FtcGxlU2l6ZShtX3Nh
bXBsZS5nZXQoKSk7CkBAIC0xMTEsNyArMTIxLDcgQEAgRmxvYXRTaXplIE1lZGlhU2FtcGxlQVZG
T2JqQzo6cHJlc2VudGF0aQogCiB2b2lkIE1lZGlhU2FtcGxlQVZGT2JqQzo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludCgie1BUUygiLCBwcmVzZW50YXRpb25U
aW1lKCksICIpLCBEVFMoIiwgZGVjb2RlVGltZSgpLCAiKSwgZHVyYXRpb24oIiwgZHVyYXRpb24o
KSwgIiksIGZsYWdzKCIsIChpbnQpZmxhZ3MoKSwgIiksIHByZXNlbnRhdGlvblNpemUoIiwgcHJl
c2VudGF0aW9uU2l6ZSgpLndpZHRoKCksICJ4IiwgcHJlc2VudGF0aW9uU2l6ZSgpLmhlaWdodCgp
LCAiKX0iKTsKKyAgICBvdXQucHJpbnQoIntQVFMoIiwgcHJlc2VudGF0aW9uVGltZSgpLCAiKSwg
T1BUUygiLCBvdXRwdXRQcmVzZW50YXRpb25UaW1lKCksICIpLCwgRFRTKCIsIGRlY29kZVRpbWUo
KSwgIiksIGR1cmF0aW9uKCIsIGR1cmF0aW9uKCksICIpLCBmbGFncygiLCAoaW50KWZsYWdzKCks
ICIpLCBwcmVzZW50YXRpb25TaXplKCIsIHByZXNlbnRhdGlvblNpemUoKS53aWR0aCgpLCAieCIs
IHByZXNlbnRhdGlvblNpemUoKS5oZWlnaHQoKSwgIil9Iik7CiB9CiAKIHZvaWQgTWVkaWFTYW1w
bGVBVkZPYmpDOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJiBvZmZzZXQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oCShyZXZpc2lvbiAyMTAzNTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDExICs1MCwxNSBAQCBwdWJsaWM6
CiAKICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc3RyZWFtVHJhY2soKSB7IHJldHVybiBt
X3N0cmVhbVRyYWNrLmdldCgpOyB9CiAKKyAgICBNZWRpYVRpbWUgdGltZWxpbmVPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX3RpbWVsaW5lT2Zmc2V0OyB9CisgICAgdm9pZCBzZXRUaW1lbGluZU9m
ZnNldChjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkgeyBtX3RpbWVsaW5lT2Zmc2V0ID0gb2Zmc2V0
OyB9CisKIHByaXZhdGU6CiAgICAgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbShNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spCiAgICAgICAgIDogbV9zdHJlYW1UcmFjayh0cmFjaykK
ICAgICAgICAgLCBtX2lkKHRyYWNrLmlkKCkpCiAgICAgICAgICwgbV9sYWJlbCh0cmFjay5sYWJl
bCgpKQorICAgICAgICAsIG1fdGltZWxpbmVPZmZzZXQoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
KQogICAgIHsKICAgICB9CiAKQEAgLTYyLDYgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBBdG9taWNT
dHJpbmcgbV9pZDsKICAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKICAgICBpbnQgbV9pbmRleCB7
IDAgfTsKKyAgICBNZWRpYVRpbWUgbV90aW1lbGluZU9mZnNldDsKIH07CiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDkgKzEwMCw2IEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGU6OnNldEVuYWJsZWQKICAgICAvLyBBbHdheXMgdXBkYXRlIHRoZSBlbmFibGVkIHN0YXRl
IHJlZ2FyZGxlc3Mgb2YgdGhlIHRyYWNrIGJlaW5nIGVuZGVkLgogICAgIG1faXNFbmFibGVkID0g
ZW5hYmxlZDsKIAotICAgIGlmIChtX3ByZXZpZXcpCi0gICAgICAgIG1fcHJldmlldy0+c2V0RW5h
YmxlZChlbmFibGVkKTsKLQogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykK
ICAgICAgICAgb2JzZXJ2ZXItPnRyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOwogfQpAQCAtMTE3
LDcgKzExNCw2IEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmVuZFRyYWNrKCkKICAg
ICAvLyB0cmFja0VuZGVkIG1ldGhvZCBvbmNlLgogICAgIG1faXNFbmRlZCA9IHRydWU7CiAKLSAg
ICBtX3ByZXZpZXcgPSBudWxscHRyOwogICAgIG1fc291cmNlLT5yZXF1ZXN0U3RvcCh0aGlzKTsK
IAogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKQEAgLTE2MywxNSArMTU5
LDYgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cGFpbnRDdXJyZQogICAgIH0KIH0K
IAotUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcqIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpw
cmV2aWV3KCkKLXsKLSAgICBpZiAobV9wcmV2aWV3KQotICAgICAgICByZXR1cm4gbV9wcmV2aWV3
LmdldCgpOwotCi0gICAgbV9wcmV2aWV3ID0gbV9zb3VyY2UtPnByZXZpZXcoKTsKLSAgICByZXR1
cm4gbV9wcmV2aWV3LmdldCgpOwotfQotCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjph
cHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBSZWFs
dGltZU1lZGlhU291cmNlOjpTdWNjZXNzSGFuZGxlciBzdWNjZXNzSGFuZGxlciwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6RmFpbHVyZUhhbmRsZXIgZmFpbHVyZUhhbmRsZXIpCiB7CiAgICAgbV9zb3Vy
Y2UtPmFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMsIHN1Y2Nlc3NIYW5kbGVyLCBmYWlsdXJl
SGFuZGxlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgJKHJldmlzaW9uIDIxMDM1
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDYgQEAgcHVibGljOgogICAg
IEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKIAogICAgIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0Jik7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcqIHByZXZpZXcoKTsKIAogcHJp
dmF0ZToKICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4mJiwgU3RyaW5nJiYgaWQpOwpAQCAtMTA1LDcgKzEwNCw2IEBAIHByaXZhdGU6CiAKICAgICBW
ZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICAgICBSZWY8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4gbV9zb3VyY2U7Ci0gICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3PiBtX3By
ZXZpZXc7CiAKICAgICBTdHJpbmcgbV9pZDsKICAgICBib29sIG1faXNFbmFibGVkOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuaAkocmV2aXNpb24gMjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5o
IgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KQEAgLTEyOSw3ICsxMjgsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlZlB0
cjxJbWFnZT4gY3VycmVudEZyYW1lSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYpIHsgfQotICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VQcmV2aWV3PiBwcmV2aWV3KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdm9pZCBzZXRX
aWR0aChpbnQpOwogICAgIHZvaWQgc2V0SGVpZ2h0KGludCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlUHJldmlldy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VQcmV2aWV3LmgJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogICAgZGlzdHJpYnV0aW9uLgotICogMy4gTmVpdGhl
ciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMK
LSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcwotICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCi0KLSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCi0jaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcgOiBwdWJsaWMgUmVmQ291bnRl
ZDxSZWFsdGltZU1lZGlhU291cmNlUHJldmlldz4gewotcHVibGljOgotICAgIHZpcnR1YWwgflJl
YWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGxheSgp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCkgPSAwOwotCi0gICAgdmlydHVhbCBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1
bWUoZG91YmxlKSBjb25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsg
bV93ZWFrUHRyRmFjdG9yeS5yZXZva2VBbGwoKTsgfQotCi0gICAgV2Vha1B0cjxSZWFsdGltZU1l
ZGlhU291cmNlUHJldmlldz4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3Rv
cnkuY3JlYXRlV2Vha1B0cigpOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBSZWFsdGltZU1lZGlhU291
cmNlUHJldmlldygpCi0gICAgICAgIDogbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQotICAgIHsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgV2Vha1B0ckZhY3Rvcnk8UmVhbHRpbWVNZWRpYVNvdXJjZVBy
ZXZpZXc+IG1fd2Vha1B0ckZhY3Rvcnk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbS5oCShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDI4ICs0MCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0oc3RyZWFtVHJhY2spKTsKICAg
ICB9CiAKLSAgICBLaW5kIGtpbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBLaW5kOjpNYWlu
OyB9Ci0gICAgQXRvbWljU3RyaW5nIGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsg
fQotICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFi
ZWw7IH0KLSAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBlbXB0eUF0b207IH0KLSAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faW5kZXg7IH0KLQogICAgIHZvaWQgc2V0VHJhY2tJbmRleChpbnQgaW5kZXgpIHsgbV9p
bmRleCA9IGluZGV4OyB9CiAKICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc3RyZWFtVHJh
Y2soKSB7IHJldHVybiBtX3N0cmVhbVRyYWNrLmdldCgpOyB9CiAKKyAgICBNZWRpYVRpbWUgdGlt
ZWxpbmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5lT2Zmc2V0OyB9CisgICAgdm9p
ZCBzZXRUaW1lbGluZU9mZnNldChjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkgeyBtX3RpbWVsaW5l
T2Zmc2V0ID0gb2Zmc2V0OyB9CisKIHByaXZhdGU6CiAgICAgVmlkZW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spCiAgICAgICAgIDogbV9zdHJl
YW1UcmFjayh0cmFjaykKICAgICAgICAgLCBtX2lkKHRyYWNrLmlkKCkpCiAgICAgICAgICwgbV9s
YWJlbCh0cmFjay5sYWJlbCgpKQorICAgICAgICAsIG1fdGltZWxpbmVPZmZzZXQoTWVkaWFUaW1l
OjppbnZhbGlkVGltZSgpKQogICAgIHsKICAgICB9CiAKKyAgICBLaW5kIGtpbmQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBLaW5kOjpNYWluOyB9CisgICAgQXRvbWljU3RyaW5nIGlkKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9pZDsgfQorICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faW5kZXg7IH0KKwogICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4gbV9zdHJlYW1UcmFjazsKICAgICBBdG9taWNTdHJpbmcgbV9pZDsKICAgICBBdG9taWNT
dHJpbmcgbV9sYWJlbDsKICAgICBpbnQgbV9pbmRleCB7IDAgfTsKKyAgICBNZWRpYVRpbWUgbV90
aW1lbGluZU9mZnNldDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5o
CShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY3LDcgKzY3
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNodXRkb3duQ2FwdHVyZVNlc3Npb24oKSBvdmVycmlk
ZTsKICAgICB2b2lkIHVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYp
IG92ZXJyaWRlOwogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIo
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IGNyZWF0ZVByZXZp
ZXcoKSBmaW5hbDsKIAogICAgIFJldGFpblB0cjxBVkNhcHR1cmVDb25uZWN0aW9uPiBtX2F1ZGlv
Q29ubmVjdGlvbjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNp
b24gMjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
QXVkaW9DYXB0dXJlU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNyArMzAsNyBAQAog
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCi0jaW1w
b3J0ICJOb3RJbXBsZW1lbnRlZC5oIgorI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAj
aW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvZnRMaW5r
aW5nLmgiCiAjaW1wb3J0ICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgpAQCAtNDks
MjIgKzQ5LDE1IEBAIHR5cGVkZWYgQVZDYXB0dXJlRGV2aWNlIEFWQ2FwdHVyZURldmljZVQKIHR5
cGVkZWYgQVZDYXB0dXJlRGV2aWNlSW5wdXQgQVZDYXB0dXJlRGV2aWNlSW5wdXRUeXBlOwogdHlw
ZWRlZiBBVkNhcHR1cmVPdXRwdXQgQVZDYXB0dXJlT3V0cHV0VHlwZTsKIAotI2lmICFQTEFURk9S
TShJT1MpCi10eXBlZGVmIEFWQ2FwdHVyZUF1ZGlvUHJldmlld091dHB1dCBBVkNhcHR1cmVBdWRp
b1ByZXZpZXdPdXRwdXRUeXBlOwotI2VuZGlmCi0KIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9O
QUwoQVZGb3VuZGF0aW9uKQogCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1
cmVBdWRpb0NoYW5uZWwpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVB
dWRpb0RhdGFPdXRwdXQpCi1TT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVB
dWRpb1ByZXZpZXdPdXRwdXQpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1
cmVDb25uZWN0aW9uKQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2
aWNlKQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNlSW5wdXQp
CiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVPdXRwdXQpCiAKLSNkZWZp
bmUgQVZDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0IGdldEFWQ2FwdHVyZUF1ZGlvUHJldmlld091
dHB1dENsYXNzKCkKLQogI2RlZmluZSBBVkNhcHR1cmVBdWRpb0NoYW5uZWwgZ2V0QVZDYXB0dXJl
QXVkaW9DaGFubmVsQ2xhc3MoKQogI2RlZmluZSBBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQgZ2V0
QVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0Q2xhc3MoKQogI2RlZmluZSBBVkNhcHR1cmVDb25uZWN0
aW9uIGdldEFWQ2FwdHVyZUNvbm5lY3Rpb25DbGFzcygpCkBAIC04MCw3OSArNzMsNiBAQCBTT0ZU
X0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFUCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotI2lmICFQTEFURk9STShJT1MpCi1jbGFzcyBBVkF1ZGlvU291cmNlUHJldmlldzogcHVi
bGljIEFWTWVkaWFTb3VyY2VQcmV2aWV3IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEFW
TWVkaWFTb3VyY2VQcmV2aWV3PiBjcmVhdGUoQVZDYXB0dXJlU2Vzc2lvbiAqLCBBVkF1ZGlvQ2Fw
dHVyZVNvdXJjZSopOwotCi1wcml2YXRlOgotICAgIEFWQXVkaW9Tb3VyY2VQcmV2aWV3KEFWQ2Fw
dHVyZVNlc3Npb24gKiwgQVZBdWRpb0NhcHR1cmVTb3VyY2UqKTsKLQotICAgIHZvaWQgaW52YWxp
ZGF0ZSgpIGZpbmFsOwotCi0gICAgdm9pZCBwbGF5KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBw
YXVzZSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSkgY29uc3QgZmlu
YWw7Ci0gICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpIGZpbmFsOwotICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Ci0KLSAgICB2
b2lkIHVwZGF0ZVN0YXRlKCkgY29uc3Q7Ci0KLSAgICBSZXRhaW5QdHI8QVZDYXB0dXJlQXVkaW9Q
cmV2aWV3T3V0cHV0VHlwZT4gbV9hdWRpb1ByZXZpZXdPdXRwdXQ7Ci0gICAgbXV0YWJsZSBkb3Vi
bGUgbV92b2x1bWUgeyAxIH07Ci0gICAgbXV0YWJsZSBib29sIG1fcGF1c2VkIHsgZmFsc2UgfTsK
LSAgICBtdXRhYmxlIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OwotfTsKLQotUmVmUHRyPEFWTWVk
aWFTb3VyY2VQcmV2aWV3PiBBVkF1ZGlvU291cmNlUHJldmlldzo6Y3JlYXRlKEFWQ2FwdHVyZVNl
c3Npb24gKnNlc3Npb24sIEFWQXVkaW9DYXB0dXJlU291cmNlKiBwYXJlbnQpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBBVkF1ZGlvU291cmNlUHJldmlldyhzZXNzaW9uLCBwYXJlbnQpKTsK
LX0KLQotQVZBdWRpb1NvdXJjZVByZXZpZXc6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3KEFWQ2FwdHVy
ZVNlc3Npb24gKnNlc3Npb24sIEFWQXVkaW9DYXB0dXJlU291cmNlKiBwYXJlbnQpCi0gICAgOiBB
Vk1lZGlhU291cmNlUHJldmlldyhwYXJlbnQpCi17Ci0gICAgbV9hdWRpb1ByZXZpZXdPdXRwdXQg
PSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZUF1ZGlvUHJldmlld091dHB1dEluc3RhbmNlKCkgaW5p
dF0pOwotICAgIHNldFZvbHVtZSgxKTsKLSAgICBbc2Vzc2lvbiBhZGRPdXRwdXQ6bV9hdWRpb1By
ZXZpZXdPdXRwdXQuZ2V0KCldOwotfQotCi12b2lkIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OjppbnZh
bGlkYXRlKCkKLXsKLSAgICBtX2F1ZGlvUHJldmlld091dHB1dCA9IG51bGxwdHI7Ci0gICAgQVZN
ZWRpYVNvdXJjZVByZXZpZXc6OmludmFsaWRhdGUoKTsKLX0KLQotdm9pZCBBVkF1ZGlvU291cmNl
UHJldmlldzo6cGxheSgpIGNvbnN0Ci17Ci0gICAgbV9wYXVzZWQgPSBmYWxzZTsKLSAgICB1cGRh
dGVTdGF0ZSgpOwotfQotCi12b2lkIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpwYXVzZSgpIGNvbnN0
Ci17Ci0gICAgbV9wYXVzZWQgPSB0cnVlOwotICAgIHVwZGF0ZVN0YXRlKCk7Ci19Ci0KLXZvaWQg
QVZBdWRpb1NvdXJjZVByZXZpZXc6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1f
ZW5hYmxlZCA9IGVuYWJsZWQ7Ci0gICAgdXBkYXRlU3RhdGUoKTsKLX0KLQotdm9pZCBBVkF1ZGlv
U291cmNlUHJldmlldzo6c2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpIGNvbnN0Ci17Ci0gICAgbV92
b2x1bWUgPSB2b2x1bWU7Ci0gICAgbV9hdWRpb1ByZXZpZXdPdXRwdXQuZ2V0KCkudm9sdW1lID0g
dm9sdW1lOwotfQotCi12b2lkIEFWQXVkaW9Tb3VyY2VQcmV2aWV3Ojp1cGRhdGVTdGF0ZSgpIGNv
bnN0Ci17Ci0gICAgbV9hdWRpb1ByZXZpZXdPdXRwdXQuZ2V0KCkudm9sdW1lID0gKCFtX2VuYWJs
ZWQgfHwgbV9wYXVzZWQpID8gMCA6IG1fdm9sdW1lOwotfQotI2VuZGlmCi0KIFJlZlB0cjxBVk1l
ZGlhQ2FwdHVyZVNvdXJjZT4gQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShBVkNhcHR1cmVE
ZXZpY2VUeXBlZGVmKiBkZXZpY2UsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IE1lZGlh
Q29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQogewog
ICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYobmV3IEFWQXVkaW9DYXB0dXJlU291cmNlKGRldmlj
ZSwgaWQpKTsKQEAgLTE5MCw3ICsxMTAsNyBAQCB2b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjpp
bml0aWFsaXplU3VwCiAKIHZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmdz
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgLy8gRklYTUU6
IHVzZSBbQVZDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0IHZvbHVtZV0gZm9yIHZvbHVtZQorICAg
IC8vIEZJWE1FOiBzdXBwb3J0IHZvbHVtZQogCiAgICAgc2V0dGluZ3Muc2V0RGV2aWNlSWQoaWQo
KSk7CiB9CkBAIC0yNzYsNiArMTk2LDExIEBAIHZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNh
cHR1cmVPdXRwdXQKICAgICBpZiAoIWZvcm1hdERlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm47
CiAKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGJ1ZmZlciA9IHNhbXBsZUJ1ZmZl
cjsKKyAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpcywgYnVmZmVyXSB7CisgICAgICAgIG1l
ZGlhRGF0YVVwZGF0ZWQoTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoYnVmZmVyLmdldCgpKSk7
CisgICAgfSk7CisKICAgICBzdGQ6OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2sobV9sb2NrLCBzdGQ6
OnRyeV90b19sb2NrKTsKICAgICBpZiAoIWxvY2sub3duc19sb2NrKCkpIHsKICAgICAgICAgLy8g
RmFpbGVkIHRvIGFjcXVpcmUgdGhlIGxvY2ssIGp1c3QgcmV0dXJuIGluc3RlYWQgb2YgYmxvY2tp
bmcuCkBAIC0zMDQsMTUgKzIyOSw2IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIEFWQXVkaW9DYXB0
dXJlU291cmMKICAgICByZXR1cm4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyLmdldCgpOwogfQogCi1S
ZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IEFWQXVkaW9DYXB0dXJlU291cmNlOjpjcmVhdGVQ
cmV2aWV3KCkKLXsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBBVkF1ZGlvU291cmNl
UHJldmlldzo6Y3JlYXRlKHNlc3Npb24oKSwgdGhpcyk7Ci0jZWxzZQotICAgIHJldHVybiBudWxs
cHRyOwotI2VuZGlmCi19Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgJ
KHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsMTkgKzQ3
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBVk1lZGlhQ2FwdHVyZVNvdXJjZTsK
IAotY2xhc3MgQVZNZWRpYVNvdXJjZVByZXZpZXc6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNl
UHJldmlldyB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+QVZNZWRpYVNvdXJjZVByZXZpZXcoKTsK
LQotICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwotCi1wcm90ZWN0ZWQ6Ci0gICAgQVZN
ZWRpYVNvdXJjZVByZXZpZXcoQVZNZWRpYUNhcHR1cmVTb3VyY2UqKTsKLQotcHJpdmF0ZToKLSAg
ICBXZWFrUHRyPEFWTWVkaWFDYXB0dXJlU291cmNlPiBtX3BhcmVudDsKLX07Ci0KIGNsYXNzIEFW
TWVkaWFDYXB0dXJlU291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfkFWTWVkaWFDYXB0dXJlU291cmNlKCk7CkBAIC03NiwxMCArNjMsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIGJvb2wg
aXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1J1bm5pbmc7IH0KIAot
ICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlUHJldmlldz4gcHJldmlldygpIGZpbmFsOwot
ICAgIHZvaWQgcmVtb3ZlUHJldmlldyhBVk1lZGlhU291cmNlUHJldmlldyopOwotICAgIFdlYWtQ
dHI8QVZNZWRpYUNhcHR1cmVTb3VyY2U+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQ
dHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQotCiBwcm90ZWN0ZWQ6CiAgICAgQVZNZWRpYUNh
cHR1cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlKiwgY29uc3QgQXRvbWljU3RyaW5nJiwgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSk7CiAKQEAgLTk5LDggKzgyLDYgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgc2V0VmlkZW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVWaWRlb0RhdGFPdXRw
dXQqKTsKICAgICB2b2lkIHNldEF1ZGlvU2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlQXVk
aW9EYXRhT3V0cHV0Kik7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxBVk1lZGlhU291cmNlUHJldmll
dz4gY3JlYXRlUHJldmlldygpID0gMDsKLQogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwU2Vzc2lv
bigpOwogICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKQEAgLTExNyw4ICs5OCw2IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0
aWVzOwogICAgIFJldGFpblB0cjxBVkNhcHR1cmVTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgUmV0
YWluUHRyPEFWQ2FwdHVyZURldmljZT4gbV9kZXZpY2U7Ci0gICAgVmVjdG9yPFdlYWtQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZVByZXZpZXc+PiBtX3ByZXZpZXdzOwotICAgIFdlYWtQdHJGYWN0b3J5
PEFWTWVkaWFDYXB0dXJlU291cmNlPiBtX3dlYWtQdHJGYWN0b3J5OwogICAgIGJvb2wgbV9pc1J1
bm5pbmcgeyBmYWxzZX07CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1t
CShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsx
MjksNiBAQCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1cmVTb3VyCiAgICAgOiBS
ZWFsdGltZU1lZGlhU291cmNlKGlkLCB0eXBlLCBlbXB0eVN0cmluZygpKQogICAgICwgbV9vYmpj
T2JzZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGFs
bG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKSkKICAgICAsIG1fZGV2aWNlKGRldmljZSkKLSAg
ICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKIHsKICAgICBzZXROYW1lKGRldmljZS5sb2NhbGl6
ZWROYW1lKTsKICAgICBzZXRQZXJzaXN0ZW50SUQoZGV2aWNlLnVuaXF1ZUlEKTsKQEAgLTI0MCwx
MiArMjM5LDYgQEAgdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6cmVzZXQoKQogICAgIGZvciAo
TlNTdHJpbmcgKmtleU5hbWUgaW4gc2Vzc2lvbktWT1Byb3BlcnRpZXMoKSkKICAgICAgICAgW21f
c2Vzc2lvbiByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOmtl
eU5hbWVdOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBwcmV2aWV3IDogbV9wcmV2aWV3cykgewot
ICAgICAgICBpZiAocHJldmlldykKLSAgICAgICAgICAgIHByZXZpZXctPmludmFsaWRhdGUoKTsK
LSAgICB9Ci0gICAgbV9wcmV2aWV3cy5jbGVhcigpOwotCiAgICAgc2h1dGRvd25DYXB0dXJlU2Vz
c2lvbigpOwogICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7CiB9CkBAIC0yNzcsNDUgKzI3MCw2IEBA
IEF1ZGlvU291cmNlUHJvdmlkZXIqIEFWTWVkaWFDYXB0dXJlU291cmMKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3PiBBVk1lZGlhQ2Fw
dHVyZVNvdXJjZTo6cHJldmlldygpCi17Ci0gICAgUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3
PiBwcmV2aWV3ID0gY3JlYXRlUHJldmlldygpOwotICAgIGlmICghcHJldmlldykKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBtX3ByZXZpZXdzLmFwcGVuZChwcmV2aWV3LT5jcmVhdGVX
ZWFrUHRyKCkpOwotICAgIHJldHVybiBwcmV2aWV3LmxlYWtSZWYoKTsKLX0KLQotdm9pZCBBVk1l
ZGlhQ2FwdHVyZVNvdXJjZTo6cmVtb3ZlUHJldmlldyhBVk1lZGlhU291cmNlUHJldmlldyogcHJl
dmlldykKLXsKLSAgICBzaXplX3QgaW5kZXg7Ci0gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwg
bV9wcmV2aWV3cy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKG1fcHJldmlld3NbaW5k
ZXhdLmdldCgpID09IHByZXZpZXcpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBp
ZiAoaW5kZXggPCBtX3ByZXZpZXdzLnNpemUoKSkKLSAgICAgICAgbV9wcmV2aWV3cy5yZW1vdmUo
aW5kZXgpOwotfQotCi1BVk1lZGlhU291cmNlUHJldmlldzo6QVZNZWRpYVNvdXJjZVByZXZpZXco
QVZNZWRpYUNhcHR1cmVTb3VyY2UqIHBhcmVudCkKLSAgICA6IG1fcGFyZW50KHBhcmVudC0+Y3Jl
YXRlV2Vha1B0cigpKQotewotfQotCi1BVk1lZGlhU291cmNlUHJldmlldzo6fkFWTWVkaWFTb3Vy
Y2VQcmV2aWV3KCkKLXsKLSAgICBpZiAobV9wYXJlbnQpCi0gICAgICAgIG1fcGFyZW50LT5yZW1v
dmVQcmV2aWV3KHRoaXMpOwotfQotCi12b2lkIEFWTWVkaWFTb3VyY2VQcmV2aWV3OjppbnZhbGlk
YXRlKCkKLXsKLSAgICBtX3BhcmVudCA9IG51bGxwdHI7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZVByZXZpZXc6OmludmFsaWRhdGUoKTsKLX0KLQogTlNBcnJheSogc2Vzc2lvbktWT1Byb3BlcnRp
ZXMoKQogewogICAgIHN0YXRpYyBOU0FycmF5KiBrZXlzID0gW0BbQCJydW5uaW5nIl0gcmV0YWlu
XTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMTAzNTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNiBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKSBmaW5hbDsKIAotICAgIFJlZlB0cjxBVk1lZGlhU291cmNlUHJldmlldz4gY3Jl
YXRlUHJldmlldygpIGZpbmFsOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjdXJyZW50RnJh
bWVDR0ltYWdlKCk7CiAgICAgUmVmUHRyPEltYWdlPiBjdXJyZW50RnJhbWVJbWFnZSgpIGZpbmFs
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMTAzNTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw2IEBACiAjaW1wb3J0ICJO
b3RJbXBsZW1lbnRlZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1MYXllci5oIgogI2ltcG9ydCAiUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgotI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVBy
ZXZpZXcuaCIKICNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2ltcG9y
dCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmgiCiAjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZDYXB0dXJlRGV2aWNlLmg+CkBAIC0xMDEsMTEwICsxMDAsOCBAQCBTT0ZUX0xJTktf
UE9JTlRFUihBVkZvdW5kYXRpb24sIEFWQ2FwdHVyCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1AaW50ZXJmYWNlIFdlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIDogTlNP
YmplY3Q8Q0FMYXllckRlbGVnYXRlPiB7Ci0gICAgQVZWaWRlb1NvdXJjZVByZXZpZXcgKl9wYXJl
bnQ7Ci0gICAgQk9PTCBfaGFzT2JzZXJ2ZXI7Ci19Ci0KLS0gKHZvaWQpc2V0UGFyZW50OihBVlZp
ZGVvU291cmNlUHJldmlldyAqKXBhcmVudDsKLS0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFu
Z2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQ7Ci1AZW5kCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgQVZWaWRlb1NvdXJjZVByZXZpZXc6IHB1YmxpYyBBVk1lZGlhU291cmNlUHJldmll
dyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBVk1lZGlhU291cmNlUHJldmlldz4gY3Jl
YXRlKEFWQ2FwdHVyZVNlc3Npb24qLCBBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiwgQVZWaWRlb0Nh
cHR1cmVTb3VyY2UqKTsKLQotICAgIHZvaWQgYmFja2dyb3VuZExheWVyQm91bmRzQ2hhbmdlZCgp
OwotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBBVlZp
ZGVvU291cmNlUHJldmlldyhBVkNhcHR1cmVTZXNzaW9uKiwgQVZDYXB0dXJlRGV2aWNlVHlwZWRl
ZiosIEFWVmlkZW9DYXB0dXJlU291cmNlKik7Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoKSBmaW5h
bDsKLQotICAgIHZvaWQgcGxheSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgcGF1c2UoKSBjb25z
dCBmaW5hbDsKLSAgICB2b2lkIHNldFZvbHVtZShkb3VibGUpIGNvbnN0IGZpbmFsIHsgfTsKLSAg
ICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBzZXRQYXVzZWQoYm9vbCkg
Y29uc3Q7Ci0KLSAgICBSZXRhaW5QdHI8QVZDYXB0dXJlVmlkZW9QcmV2aWV3TGF5ZXJUeXBlPiBt
X3ByZXZpZXdMYXllcjsKLSAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wcmV2aWV3QmFj
a2dyb3VuZExheWVyOwotICAgIFJldGFpblB0cjxBVkNhcHR1cmVEZXZpY2VUeXBlZGVmPiBtX2Rl
dmljZTsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXI+
IG1fb2JqY09ic2VydmVyOwotfTsKLQotUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBBVlZp
ZGVvU291cmNlUHJldmlldzo6Y3JlYXRlKEFWQ2FwdHVyZVNlc3Npb24gKnNlc3Npb24sIEFWQ2Fw
dHVyZURldmljZVR5cGVkZWYqIGRldmljZSwgQVZWaWRlb0NhcHR1cmVTb3VyY2UqIHBhcmVudCkK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFWVmlkZW9Tb3VyY2VQcmV2aWV3KHNlc3Npb24s
IGRldmljZSwgcGFyZW50KSk7Ci19Ci0KLUFWVmlkZW9Tb3VyY2VQcmV2aWV3OjpBVlZpZGVvU291
cmNlUHJldmlldyhBVkNhcHR1cmVTZXNzaW9uICpzZXNzaW9uLCBBVkNhcHR1cmVEZXZpY2VUeXBl
ZGVmKiBkZXZpY2UsIEFWVmlkZW9DYXB0dXJlU291cmNlKiBwYXJlbnQpCi0gICAgOiBBVk1lZGlh
U291cmNlUHJldmlldyhwYXJlbnQpCi0gICAgLCBtX29iamNPYnNlcnZlcihhZG9wdE5TKFtbV2Vi
Q29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKSkKLXsKLSAgICBt
X2RldmljZSA9IGRldmljZTsKLSAgICBtX3ByZXZpZXdMYXllciA9IGFkb3B0TlMoW2FsbG9jQVZD
YXB0dXJlVmlkZW9QcmV2aWV3TGF5ZXJJbnN0YW5jZSgpIGluaXRXaXRoU2Vzc2lvbjpzZXNzaW9u
XSk7Ci0gICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuY29udGVudHNHcmF2aXR5ID0ga0NBR3Jhdml0
eVJlc2l6ZTsKLSAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5hbmNob3JQb2ludCA9IENHUG9pbnRa
ZXJvOwotICAgIFttX3ByZXZpZXdMYXllci5nZXQoKSBzZXREZWxlZ2F0ZTpbV2ViQWN0aW9uRGlz
YWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwotCi0gICAgbV9wcmV2aWV3QmFja2dyb3Vu
ZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICBtX3ByZXZpZXdC
YWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuY29udGVudHNHcmF2aXR5ID0ga0NBR3Jhdml0eVJlc2l6ZUFz
cGVjdDsKLSAgICBtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSBD
R1BvaW50WmVybzsKLSAgICBtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkubmVlZHNEaXNw
bGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7Ci0gICAgW21fcHJldmlld0JhY2tncm91bmRMYXllci5n
ZXQoKSBzZXREZWxlZ2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJl
ZF1dOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIG1fcHJldmlld0xheWVyLmdldCgpLm5hbWUgPSBA
IkFWVmlkZW9DYXB0dXJlU291cmNlIHByZXZpZXcgbGF5ZXIiOwotICAgIG1fcHJldmlld0JhY2tn
cm91bmRMYXllci5nZXQoKS5uYW1lID0gQCJBVlZpZGVvU291cmNlUHJldmlldyBwYXJlbnQgbGF5
ZXIiOwotI2VuZGlmCi0KLSAgICBbbV9wcmV2aWV3QmFja2dyb3VuZExheWVyIGFkZFN1YmxheWVy
Om1fcHJldmlld0xheWVyLmdldCgpXTsKLQotICAgIFttX29iamNPYnNlcnZlci5nZXQoKSBzZXRQ
YXJlbnQ6dGhpc107Ci19Ci0KLXZvaWQgQVZWaWRlb1NvdXJjZVByZXZpZXc6OmJhY2tncm91bmRM
YXllckJvdW5kc0NoYW5nZWQoKQotewotICAgIGlmIChtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIg
JiYgbV9wcmV2aWV3TGF5ZXIpCi0gICAgICAgIFttX3ByZXZpZXdMYXllci5nZXQoKSBzZXRCb3Vu
ZHM6bV9wcmV2aWV3QmFja2dyb3VuZExheWVyLmdldCgpLmJvdW5kc107Ci19Ci0KLXZvaWQgQVZW
aWRlb1NvdXJjZVByZXZpZXc6OmludmFsaWRhdGUoKQotewotICAgIFttX29iamNPYnNlcnZlci5n
ZXQoKSBzZXRQYXJlbnQ6bmlsXTsKLSAgICBtX29iamNPYnNlcnZlciA9IG51bGxwdHI7Ci0gICAg
bV9wcmV2aWV3TGF5ZXIgPSBudWxscHRyOwotICAgIG1fcHJldmlld0JhY2tncm91bmRMYXllciA9
IG51bGxwdHI7Ci0gICAgbV9kZXZpY2UgPSBudWxscHRyOwotICAgIEFWTWVkaWFTb3VyY2VQcmV2
aWV3OjppbnZhbGlkYXRlKCk7Ci19Ci0KLXZvaWQgQVZWaWRlb1NvdXJjZVByZXZpZXc6OnBsYXko
KSBjb25zdAotewotICAgIHNldFBhdXNlZChmYWxzZSk7Ci19Ci0KLXZvaWQgQVZWaWRlb1NvdXJj
ZVByZXZpZXc6OnBhdXNlKCkgY29uc3QKLXsKLSAgICBzZXRQYXVzZWQodHJ1ZSk7Ci19Ci0KLXZv
aWQgQVZWaWRlb1NvdXJjZVByZXZpZXc6OnNldFBhdXNlZChib29sIHBhdXNlZCkgY29uc3QKLXsK
LSAgICBbbV9kZXZpY2UgbG9ja0ZvckNvbmZpZ3VyYXRpb246bmlsXTsKLSAgICBtX3ByZXZpZXdM
YXllci5nZXQoKS5jb25uZWN0aW9uLmVuYWJsZWQgPSAhcGF1c2VkOwotICAgIFttX2RldmljZSB1
bmxvY2tGb3JDb25maWd1cmF0aW9uXTsKLX0KLQotdm9pZCBBVlZpZGVvU291cmNlUHJldmlldzo6
c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCi17Ci0gICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuaGlk
ZGVuID0gIWVuYWJsZWQ7Ci19Ci0KIGNvbnN0IE9TVHlwZSB2aWRlb0NhcHR1cmVGb3JtYXQgPSBr
Q1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBOwogCiBSZWZQdHI8QVZNZWRpYUNhcHR1cmVTb3VyY2U+
IEFWVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGUoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2
aWNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25z
dHJhaW50cywgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkKQEAgLTUxMiwyMCArNDA5LDcgQEAg
dm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYQogICAgICAgICByZXR1cm47
CiAKICAgICB1cGRhdGVGcmFtZXJhdGUoc2FtcGxlQnVmZmVyLmdldCgpKTsKLQotICAgIENNU2Ft
cGxlQnVmZmVyUmVmIG5ld1NhbXBsZUJ1ZmZlciA9IDA7Ci0gICAgQ01TYW1wbGVCdWZmZXJDcmVh
dGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHNhbXBsZUJ1ZmZlci5nZXQoKSwgJm5ld1NhbXBs
ZUJ1ZmZlcik7Ci0gICAgQVNTRVJUKG5ld1NhbXBsZUJ1ZmZlcik7Ci0KLSAgICBDRkFycmF5UmVm
IGF0dGFjaG1lbnRzQXJyYXkgPSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJy
YXkobmV3U2FtcGxlQnVmZmVyLCB0cnVlKTsKLSAgICBpZiAoYXR0YWNobWVudHNBcnJheSkgewot
ICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBDRkFycmF5R2V0Q291bnQoYXR0YWNobWVu
dHNBcnJheSk7ICsraSkgewotICAgICAgICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBhdHRh
Y2htZW50cyA9IChDRk11dGFibGVEaWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
YXR0YWNobWVudHNBcnJheSwgaSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShh
dHRhY2htZW50cywga0NNU2FtcGxlQXR0YWNobWVudEtleV9EaXNwbGF5SW1tZWRpYXRlbHksIGtD
RkJvb2xlYW5UcnVlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fYnVmZmVyID0gYWRvcHRD
RihuZXdTYW1wbGVCdWZmZXIpOworICAgIG1fYnVmZmVyID0gc2FtcGxlQnVmZmVyOwogICAgIG1f
bGFzdEltYWdlID0gbnVsbHB0cjsKIAogICAgIGJvb2wgc2V0dGluZ3NDaGFuZ2VkID0gZmFsc2U7
CkBAIC02MDUsMTEgKzQ4OSw2IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnBhaW50Q3Vy
cmVudEYKICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwg
Q0dSZWN0TWFrZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwg
bV9sYXN0SW1hZ2UuZ2V0KCkpOwogfQogCi1SZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IEFW
VmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3KCkKLXsKLSAgICByZXR1cm4gQVZWaWRl
b1NvdXJjZVByZXZpZXc6OmNyZWF0ZShzZXNzaW9uKCksIGRldmljZSgpLCB0aGlzKTsKLX0KLQog
TlNTdHJpbmcqIEFWVmlkZW9DYXB0dXJlU291cmNlOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVv
RGltZW5zaW9ucyhzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBo
ZWlnaHQpIGNvbnN0CiB7CiAgICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0KQpAQCAtNjU2LDQ2ICs1
MzUsNCBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzdXBwb3J0c1NpemVBCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotQGltcGxlbWVudGF0aW9uIFdlYkNvcmVBVlZpZGVvQ2FwdHVy
ZVNvdXJjZU9ic2VydmVyCi0KLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IEtleVZhbHVlQm91bmRz
Q2hhbmdlS2V5ID0gQCJib3VuZHMiOwotCi0tICh2b2lkKXNldFBhcmVudDooQVZWaWRlb1NvdXJj
ZVByZXZpZXcgKilwYXJlbnQKLXsKLSAgICBpZiAoX3BhcmVudCAmJiBfaGFzT2JzZXJ2ZXIgJiYg
X3BhcmVudC0+cGxhdGZvcm1MYXllcigpKSB7Ci0gICAgICAgIF9oYXNPYnNlcnZlciA9IGZhbHNl
OwotICAgICAgICBbX3BhcmVudC0+cGxhdGZvcm1MYXllcigpIHJlbW92ZU9ic2VydmVyOnNlbGYg
Zm9yS2V5UGF0aDpLZXlWYWx1ZUJvdW5kc0NoYW5nZUtleV07Ci0gICAgfQotCi0gICAgX3BhcmVu
dCA9IHBhcmVudDsKLQotICAgIGlmIChfcGFyZW50ICYmIF9wYXJlbnQtPnBsYXRmb3JtTGF5ZXIo
KSkgewotICAgICAgICBfaGFzT2JzZXJ2ZXIgPSB0cnVlOwotICAgICAgICBbX3BhcmVudC0+cGxh
dGZvcm1MYXllcigpIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpLZXlWYWx1ZUJvdW5kc0No
YW5nZUtleSBvcHRpb25zOjAgY29udGV4dDpudWxscHRyXTsKLSAgICB9Ci19Ci0KLS0gKHZvaWQp
b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdl
OihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKLXsKLSAgICBV
TlVTRURfUEFSQU0oY29udGV4dCk7Ci0KLSAgICBpZiAoIV9wYXJlbnQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChbW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTm90aWZp
Y2F0aW9uSXNQcmlvcktleV0gYm9vbFZhbHVlXSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgUExB
VEZPUk0oSU9TKQotICAgIFdlYlRocmVhZFJ1biheIHsKLSAgICAgICAgaWYgKFtrZXlQYXRoIGlz
RXF1YWw6S2V5VmFsdWVCb3VuZHNDaGFuZ2VLZXldICYmIG9iamVjdCA9PSBfcGFyZW50LT5wbGF0
Zm9ybUxheWVyKCkpCi0gICAgICAgICAgICBfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXJCb3VuZHND
aGFuZ2VkKCk7Ci0gICAgfSk7Ci0jZWxzZQotICAgIGlmIChba2V5UGF0aCBpc0VxdWFsOktleVZh
bHVlQm91bmRzQ2hhbmdlS2V5XSAmJiBvYmplY3QgPT0gX3BhcmVudC0+cGxhdGZvcm1MYXllcigp
KQotICAgICAgICBfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXJCb3VuZHNDaGFuZ2VkKCk7Ci0jZW5k
aWYKLX0KLQotQGVuZAotCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0JKHJldmlzaW9uIDIxMDM1NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCBpbnQgdmlkZW9TYW1wbGVSYXRlID0gOTAw
MDA7CisKIFJlZlB0cjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMq
IGNvbnN0cmFpbnRzKQogewogICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYobmV3IE1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjKG5hbWUpKTsKQEAgLTc0LDExICs3Niw4IEBAIFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gTW9ja1JlYWx0aW0KICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZv
OwotCi0gICAgdGltaW5nSW5mby5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVRpbWVNYWtlKGVs
YXBzZWRUaW1lKCkgKiAxMDAwLCAxMDAwKTsKLSAgICB0aW1pbmdJbmZvLmRlY29kZVRpbWVTdGFt
cCA9IGtDTVRpbWVJbnZhbGlkOwotICAgIHRpbWluZ0luZm8uZHVyYXRpb24gPSBrQ01UaW1lSW52
YWxpZDsKKyAgICBDTVRpbWUgc2FtcGxlVGltZSA9IENNVGltZU1ha2UoKGVsYXBzZWRUaW1lKCkg
KyAuMSkgKiB2aWRlb1NhbXBsZVJhdGUsIHZpZGVvU2FtcGxlUmF0ZSk7CisgICAgQ01TYW1wbGVU
aW1pbmdJbmZvIHRpbWluZ0luZm8gPSB7IGtDTVRpbWVJbnZhbGlkLCBzYW1wbGVUaW1lLCBzYW1w
bGVUaW1lIH07CiAKICAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3Jp
cHRpb24gPSBudWxscHRyOwogICAgIE9TU3RhdHVzIHN0YXR1cyA9IENNVmlkZW9Gb3JtYXREZXNj
cmlwdGlvbkNyZWF0ZUZvckltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdl
QnVmZmVyUmVmKXBpeGVsQnVmZmVyLCAmZm9ybWF0RGVzY3JpcHRpb24pOwpAQCAtMTAwLDYgKzk5
LDggQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBNb2NrUmVhbHRpbQogCiBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnBpeGVsQnVm
ZmVyRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkgY29uc3QKIHsKKyAgICBzdGF0aWMgQ0dD
b2xvclNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZp
Y2VSR0IoKTsKKwogICAgIENHU2l6ZSBmcmFtZVNpemUgPSBDR1NpemVNYWtlKENHSW1hZ2VHZXRX
aWR0aChpbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKICAgICBDRkRpY3Rpb25hcnlS
ZWYgb3B0aW9ucyA9IChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpIEB7CiAgICAgICAgIChfX2Jy
aWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyQ0dJbWFnZUNvbXBhdGliaWxpdHlLZXk6IEAo
Tk8pLApAQCAtMTEyLDggKzExMyw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBNb2Nr
UmVhbHRpbWUKIAogICAgIENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocGl4ZWxCdWZmZXIs
IDApOwogICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3MocGl4ZWxC
dWZmZXIpOwotICAgIGF1dG8gcmdiQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3Jl
YXRlRGV2aWNlUkdCKCkpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKGRhdGEsIGZyYW1lU2l6ZS53aWR0aCwgZnJhbWVTaXplLmhlaWdodCwgOCwgQ1ZQ
aXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93KHBpeGVsQnVmZmVyKSwgcmdiQ29sb3JTcGFjZS5nZXQo
KSwgKENHQml0bWFwSW5mbykga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKKyAgICBhdXRv
IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBmcmFtZVNpemUu
d2lkdGgsIGZyYW1lU2l6ZS5oZWlnaHQsIDgsIENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvdyhw
aXhlbEJ1ZmZlciksIGRldmljZVJHQkNvbG9yU3BhY2UsIChDR0JpdG1hcEluZm8pIGtDR0ltYWdl
QWxwaGFOb25lU2tpcEZpcnN0KSk7CiAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0
KCksIENHUmVjdE1ha2UoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSwgQ0dJbWFnZUdldEhl
aWdodChpbWFnZSkpLCBpbWFnZSk7CiAgICAgQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNz
KHBpeGVsQnVmZmVyLCAwKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHAJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw4ICs1NSwxMCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3gucHJlc2VudGF0aW9u
VGltZXN0YW1wKCk7IH0KKyAgICBNZWRpYVRpbWUgb3V0cHV0UHJlc2VudGF0aW9uVGltZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LnByZXNlbnRhdGlvblRpbWVzdGFtcCgpOyB9CiAg
ICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5k
ZWNvZGVUaW1lc3RhbXAoKTsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fYm94LmR1cmF0aW9uKCk7IH0KKyAgICBNZWRpYVRpbWUgb3V0cHV0RHVy
YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5kdXJhdGlvbigpOyB9CiAgICAg
QXRvbWljU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9CiAg
ICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlk
OyB9CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2l6
ZW9mKG1fYm94KTsgfQo=
</data>
<flag name="review"
          id="320721"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298646</attachid>
            <date>2017-01-11 17:58:29 -0800</date>
            <delta_ts>2017-01-11 19:50:09 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>audio_renderer_patch_4.txt</filename>
            <type>text/plain</type>
            <size>98596</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDQ5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NiBAQAorMjAxNy0wMS0xMSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0s
IE1hY10gUmVuZGVyIG1lZGlhIHN0cmVhbSBhdWRpbyBidWZmZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4MzYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI3MzgwMzkwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGl0IGlzbid0IHBvc3NpYmxlIHRvIHRlc3QgYXVkaW8gcmVuZGVy
aW5nIGRpcmVjdGx5LiBBIGZvbGxvdy11cCBwYXRjaCB3aWxsCisgICAgICAgIGFkZCBhIG1vY2sg
YXVkaW8gc291cmNlIHRoYXQgd2lsbCBlbmFibGUgYXVkaW8gdGVzdGluZy4KKworICAgICAgICAq
IHBsYXRmb3JtL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcDogSW5jbHVkZSBuZXcgZnVuY3Rpb25z
IHVzZWQuCisgICAgICAgICogcGxhdGZvcm0vY2YvQ29yZU1lZGlhU29mdExpbmsuaDoKKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3ZlIHJlZmVyZW5j
ZXMgdG8gdGhlIGRlbGV0ZWQgcHJldmlld3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2dnaW5n
Lmg6IEFkZCBNZWRpYUNhcHR1cmVTYW1wbGVzLgorCisgICAgICAgICogcGxhdGZvcm0vTWVkaWFT
YW1wbGUuaDogQWRkIG91dHB1dFByZXNlbnRhdGlvblRpbWUgYW5kIG91dHB1dER1cmF0aW9uLgor
CisgICAgICAgICogcGxhdGZvcm0vY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwOiBBZGQgQ01TYW1w
bGVCdWZmZXJHZXRPdXRwdXREdXJhdGlvbiwgQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50
YXRpb25UaW1lU3RhbXAsCisgICAgICAgIENNVGltZUNvbnZlcnRTY2FsZSwgQ01UaW1lYmFzZUdl
dEVmZmVjdGl2ZVJhdGUsIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3Jp
cHRpb25zLCAKKyAgICAgICAgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVm
ZmVyTGlzdCwgQ01TYW1wbGVCdWZmZXJTZXREYXRhUmVhZHksIAorICAgICAgICBDTUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb25DcmVhdGUsIENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrLCBhbmQgQ01DbG9j
a0dldFRpbWUuCisgICAgICAgICogcGxhdGZvcm0vY2YvQ29yZU1lZGlhU29mdExpbmsuaDoKKwor
ICAgICAgICBDcmVhdGUgYW5kIHVzZSBhbiBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIgZWFj
aCBhdWRpbyBzdHJlYW0gdHJhY2ssIHdoZW4gaXQgaXMgYXZhaWxhYmxlLAorICAgICAgICB0byBy
ZW5kZXIgZm9yIGF1ZGlvIHNhbXBsZXMuIFN0b3JlIHRoZSBvZmZzZXQgYmV0d2VlbiB0aGUgZmly
c3Qgc2FtcGxlIHJlY2VpdmVkIGZyb20gYSB0cmFjaydzCisgICAgICAgIG91dHB1dCBwcmVzZW50
YXRpb24gYW5kIHRoZSBzeW5jaHJvbml6ZXIgdGltZSBzbyB3ZSBjYW4gYWRqdXN0IHNhbXBsZSB0
aW1lc3RhbXBzIHRvIGJlIAorICAgICAgICByZWxhdGl2ZSB0byB0aGUgc3luY2hyb25pemVyJ3Mg
dGltZWxpbmUgcmVnYXJkbGVzcyBvZiB0aGVpciBzb3VyY2UuIFJlbW92ZSB0aGUgdXNlIG9mIHNv
dXJjZQorICAgICAgICBwcmV2aWV3cyBiZWNhdXNlIG5vdCBhbGwgc291cmNlcyB3aWxsIGhhdmUg
dGhlbS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNh
bXBsZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIAorICAgICAgICBBZGQgYW4gT2JqQyBoZWxwZXIg
dG8gY2F0Y2ggcmVuZGVyZXIgc3RhdHVzIGNoYW5nZXMuCisgICAgICAgICgtW1dlYkFWU2FtcGxl
QnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgaW5pdFdpdGhQYXJlbnQ6XSk6IAorICAgICAgICAo
LVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGRlYWxsb2NdKToKKyAgICAg
ICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBpbnZhbGlkYXRlXSk6
CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYmVnaW5P
YnNlcnZpbmdMYXllcjpdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFu
Z2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXI6XSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxl
QnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdSZW5kZXJlcjpdKToKKyAg
ICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2
aW5nUmVuZGVyZXI6XSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdl
TGlzdGVuZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpd
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6YWRkU2FtcGxlVG9QZW5kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVTYW1wbGVUaW1lcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVB
dWRpb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVu
UmVhZHlGb3JWaWRlb0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yQXVkaW9E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6Y3JlYXRlQXVkaW9SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lBdWRpb1JlbmRlcmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJv
eUF1ZGlvUmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6YXVkaW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlbmRlcmVyU3RhdHVzRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6bGF5ZXJTdGF0dXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpmbHVzaFJlbmRlcmVycyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6ZGVzdHJveUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmN1cnJlbnREaXNwbGF5TW9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjplbnF1ZXVlQXVkaW9TYW1wbGVCdWZmZXJGcm9tVHJhY2spOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZXF1
ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yTWVkaWFEYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZp
ZGVvU2FtcGxlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cHJlcGFyZVZpZGVvU2FtcGxlQnVmZmVyRnJvbVRy
YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6aW50ZXJuYWxTZXRWb2x1bWUpOiBEZWxldGVkLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpvdXRwdXRQcmVzZW50YXRp
b25UaW1lKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpvdXRw
dXREdXJhdGlvbik6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6
ZHVtcCk6IExvZyBvdXRwdXRQcmVzZW50YXRpb25UaW1lLgorCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oOiBBZGQgdGltZWxpbmVP
ZmZzZXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
c2V0RW5hYmxlZCk6IE5vIG1vcmUgbV9wcmV2aWV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU6OmVuZFRyYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cHJldmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaDoKKworICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnByZXZpZXcpOiBEZWxldGVkLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaDogUmVt
b3ZlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0uaDogQWRkIHRpbWVsaW5lT2Zmc2V0LgorCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmdzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxl
QnVmZmVyRnJvbUNvbm5lY3Rpb24pOiBQYXNzIHRoZQorICAgICAgICBzYW1wbGUgYnVmZmVyIHVw
IHRoZSBjaGFpbi4KKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpjcmVh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVByZXZpZXc6OkFW
QXVkaW9Tb3VyY2VQcmV2aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9T
b3VyY2VQcmV2aWV3OjppbnZhbGlkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFW
QXVkaW9Tb3VyY2VQcmV2aWV3OjpwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFW
QXVkaW9Tb3VyY2VQcmV2aWV3OjpwYXVzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
VkF1ZGlvU291cmNlUHJldmlldzo6c2V0RW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBVkF1ZGlvU291cmNlUHJldmlldzo6c2V0Vm9sdW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3Ojp1cGRhdGVTdGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlUHJldmlldyk6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1
cmVTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFTb3VyY2VQcmV2aWV3KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpjcmVhdGVXZWFr
UHRyKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1l
ZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291
cmNlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZSk6IE5vIG1vcmUgcHJldmlldy4KKyAgICAgICAgKFdl
YkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpB
Vk1lZGlhQ2FwdHVyZVNvdXJjZTo6cHJldmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6cmVtb3ZlUHJldmlldyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBVk1lZGlhU291cmNlUHJldmlldzo6QVZNZWRpYVNvdXJjZVByZXZpZXcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYVNvdXJjZVByZXZpZXc6On5BVk1lZGlh
U291cmNlUHJldmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhU291cmNl
UHJldmlldzo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3Jl
OjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1lKTogRG9uJ3Qgc2V0IHRoZSAi
ZGlzcGxheSBpbW1lZGlhdGVseSIgYXR0YWNobWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlk
ZW9Tb3VyY2VQcmV2aWV3OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZW
aWRlb1NvdXJjZVByZXZpZXc6OkFWVmlkZW9Tb3VyY2VQcmV2aWV3KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFWVmlkZW9Tb3VyY2VQcmV2aWV3OjpiYWNrZ3JvdW5kTGF5ZXJCb3VuZHND
aGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9Tb3VyY2VQcmV2aWV3
OjppbnZhbGlkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9Tb3VyY2VQ
cmV2aWV3OjpwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9Tb3VyY2VQ
cmV2aWV3OjpwYXVzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNl
UHJldmlldzo6c2V0UGF1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9T
b3VyY2VQcmV2aWV3OjpzZXRFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFW
VmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgc2V0UGFyZW50Ol0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVkLgorCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OkNN
U2FtcGxlQnVmZmVyRnJvbVBpeGVsQnVmZmVyKTogVXNlIGEgbW9yZSB0eXBpY2FsIHZpZGVvCisg
ICAgICAgIHRpbWUgc2NhbGUuIFNldCB0aGUgc2FtcGxlIGRlY29kZSB0aW1lLgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnBpeGVsQnVmZmVyRnJvbUNHSW1h
Z2UpOiBVc2UgYSBzdGF0aWMgZm9yIGNvbG9yc3BhY2UKKyAgICAgICAgaW5zdGVhZCBvZiBmZXRj
aGluZyBpdCBmb3IgZXZlcnkgZnJhbWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDogQWRkIG91dHB1dFByZXNlbnRhdGlv
blRpbWUgYW5kIG91dHB1dER1cmF0aW9uLgorCiAyMDE3LTAxLTA4ICBLb25zdGFudGluIFRva2Fy
ZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBJbnRyb2R1Y2UgQ1BVKFg4Nl9TU0Uy
KSBpbnN0ZWFkIG9mIHZhcmlvdXMgU1NFMiBjaGVja3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAkocmV2
aXNpb24gMjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDYgKzIxMyw5IEBAIHZvaWQg
U2NyaXB0UHJvY2Vzc29yTm9kZTo6cHJvY2VzcyhzaXplX3QKICAgICAgICAgICAgIG1faXNSZXF1
ZXN0T3V0c3RhbmRpbmcgPSB0cnVlOwogCiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzXSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX2hhc0F1ZGlvUHJvY2Vzc0xpc3RlbmVyKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vz
c0V2ZW50KCk7CiAKICAgICAgICAgICAgICAgICAvLyBEZS1yZWZlcmVuY2UgdG8gbWF0Y2ggdGhl
IHJlZigpIGNhbGwgaW4gcHJvY2VzcygpLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEwMzU2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzksNyArMjc5LDYgQEAKIAkJMDdDMUMwRTIxQkZCNjAwMTAwQkQyMjU2IC8qIE1l
ZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovOyB9OwogCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIy
NTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0MxQzBFNDFCRkI2MEVEMDBC
RDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDRTc3RDUxNjcx
MkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Q0U3N0Q0MTY3MTJBNkEwMEM1
NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDdEMTUwM0IxRERCNjk2NTAwOEY3NTk4
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0QxNTAzQTFEREI2Njg4MDA4Rjc1OTggLyogUmVhbHRp
bWVNZWRpYVNvdXJjZVByZXZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwN0Q2Mzc0MDFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3RDYzNzNFMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQy5oICovOyB9OwogCQkwN0Q2Mzc0MTFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0Q2MzczRjFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMubW0gKi87IH07CiAJCTA3RDZBNEVGMUJFQ0YyRDIwMDE3NDE0NiAv
KiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2QTRFRDFCRUNGMkQyMDAxNzQxNDYgLyogTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwICovOyB9OwpAQCAtNzI0OCw3ICs3MjQ3LDYgQEAKIAkJMDdDOEFE
MTExRDA3M0Q2MzAwODdDNUNFIC8qIEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVkZvdW5kYXRpb25NSU1FVHlwZUNh
Y2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M4QUQxMjFEMDczRDYzMDA4
N0M1Q0UgLyogQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFu
ZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MDdEMTUwM0ExRERCNjY4ODAwOEY3NTk4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2
aWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RDYzNzNFMUJCMEIxMTMwMDI1
NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Q2MzczRjFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDdENkE0RUQxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE1MTg3LDcgKzE1MTg1LDYgQEAKIAkJCQk0QTRGNjU2RDFBQTk5N0YxMDBFMzhDREQgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oICovLAogCQkJCTRBMEZGQTlGMUFBRjVFQTIw
MDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCAqLywKIAkJCQk0QTBGRkFB
MDFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovLAotCQkJ
CTA3RDE1MDNBMUREQjY2ODgwMDhGNzU5OCAvKiBSZWFsdGltZU1lZGlhU291cmNlUHJldmlldy5o
ICovLAogCQkJCTRBNEY2NTZFMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MuY3BwICovLAogCQkJCTRBNEY2NTZGMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MuaCAqLywKIAkJCQkyRUM0MURFMjFDMDQxMEEzMDBEMjk0RkUg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmNwcCAqLywKQEAgLTI3
MTk3LDcgKzI3MTk0LDYgQEAKIAkJCQk0QTRGNjU3MjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEEwRkZBQTIx
QUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTRBMEZGQUE2MUFBRjVFRjYwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQkwN0QxNTAzQjFEREI2OTY1MDA4Rjc1OTgg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY2
NTc0MUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3QzFDMEU1MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGltZU1lZGlh
U291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4
MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2dnaW5nLmgJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvZ2dpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgTShNZWRpYSkgXAogICAgIE0oTWVkaWFTb3VyY2UpIFwKICAgICBN
KE1lZGlhU291cmNlU2FtcGxlcykgXAorICAgIE0oTWVkaWFDYXB0dXJlU2FtcGxlcykgXAogICAg
IE0oTWVtb3J5UHJlc3N1cmUpIFwKICAgICBNKE5ldHdvcmspIFwKICAgICBNKE5vdFlldEltcGxl
bWVudGVkKSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgJKHJldmlz
aW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRp
YVNhbXBsZSgpIHsgfQogCiAgICAgdmlydHVhbCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIE1lZGlhVGltZSBvdXRwdXRQcmVzZW50YXRpb25UaW1l
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBNZWRpYVRpbWUgb3V0cHV0RHVyYXRpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBB
dG9taWNTdHJpbmcgdHJhY2tJRCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VHJh
Y2tJRChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBzaXplX3Qgc2l6ZUluQnl0ZXMo
KSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9Db3JlTWVkaWFT
b2Z0TGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ29y
ZU1lZGlhU29mdExpbmsuY3BwCShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDE0
ICs4NSwxOCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVm
ZmVyR2V0RHVyYXRpb24sIENNVGltZSwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1Zikp
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2Ft
cGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIsIENWSW1hZ2VCdWZmZXJSZWYsIChDTVNhbXBsZUJ1ZmZl
clJlZiBzYnVmKSwgKHNidWYpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01U
aW1lLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRE
dXJhdGlvbiwgQ01UaW1lLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZm
ZXJHZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSwgKENNU2FtcGxlQnVmZmVy
UmVmIHNidWYpLCAoc2J1ZikpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3Jl
LCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheSwgQ0ZB
cnJheVJlZiwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIEJvb2xlYW4gY3JlYXRlSWZOZWNlc3Nh
cnkpLCAoc2J1ZiwgY3JlYXRlSWZOZWNlc3NhcnkpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0lu
Zm9BcnJheSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDTUl0ZW1Db3VudCB0
aW1pbmdBcnJheUVudHJpZXMsIENNU2FtcGxlVGltaW5nSW5mbyAqdGltaW5nQXJyYXlPdXQsIENN
SXRlbUNvdW50ICp0aW1pbmdBcnJheUVudHJpZXNOZWVkZWRPdXQpLCAoc2J1ZiwgdGltaW5nQXJy
YXlFbnRyaWVzLCB0aW1pbmdBcnJheU91dCwgdGltaW5nQXJyYXlFbnRyaWVzTmVlZGVkT3V0KSkK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1l
Q29udmVydFNjYWxlLCBDTVRpbWUsIChDTVRpbWUgdGltZSwgaW50MzJfdCBuZXdUaW1lc2NhbGUs
IENNVGltZVJvdW5kaW5nTWV0aG9kIG1ldGhvZCksICh0aW1lLCBuZXdUaW1lc2NhbGUsIG1ldGhv
ZCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENN
U2FtcGxlQnVmZmVyR2V0VG90YWxTYW1wbGVTaXplLCBzaXplX3QsIChDTVNhbXBsZUJ1ZmZlclJl
ZiBzYnVmKSwgKHNidWYpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwg
Q29yZU1lZGlhLCBDTVNldEF0dGFjaG1lbnQsIHZvaWQsIChDTUF0dGFjaG1lbnRCZWFyZXJSZWYg
dGFyZ2V0LCBDRlN0cmluZ1JlZiBrZXksIENGVHlwZVJlZiB2YWx1ZSwgQ01BdHRhY2htZW50TW9k
ZSBhdHRhY2htZW50TW9kZSksICh0YXJnZXQsIGtleSwgdmFsdWUsIGF0dGFjaG1lbnRNb2RlKSkK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1l
YmFzZUNyZWF0ZVdpdGhNYXN0ZXJDbG9jaywgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxv
Y2F0b3IsIENNQ2xvY2tSZWYgbWFzdGVyQ2xvY2ssIENNVGltZWJhc2VSZWYgKnRpbWViYXNlT3V0
KSwgKGFsbG9jYXRvciwgbWFzdGVyQ2xvY2ssIHRpbWViYXNlT3V0KSkKIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lYmFzZUdldFRpbWUsIENN
VGltZSwgKENNVGltZWJhc2VSZWYgdGltZWJhc2UpLCAodGltZWJhc2UpKQogU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWViYXNlU2V0UmF0ZSwg
T1NTdGF0dXMsIChDTVRpbWViYXNlUmVmIHRpbWViYXNlLCBGbG9hdDY0IHJhdGUpLCAodGltZWJh
c2UsIHJhdGUpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1l
ZGlhLCBDTVRpbWViYXNlU2V0VGltZSwgT1NTdGF0dXMsIChDTVRpbWViYXNlUmVmIHRpbWViYXNl
LCBDTVRpbWUgdGltZSksICh0aW1lYmFzZSwgdGltZSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZWJhc2VHZXRFZmZlY3RpdmVSYXRlLCBG
bG9hdDY0LCAoQ01UaW1lYmFzZVJlZiB0aW1lYmFzZSksICh0aW1lYmFzZSkpCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZUNvcHlBc0RpY3Rp
b25hcnksIENGRGljdGlvbmFyeVJlZiwgKENNVGltZSB0aW1lLCBDRkFsbG9jYXRvclJlZiBhbGxv
Y2F0b3IpLCAodGltZSwgYWxsb2NhdG9yKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFdlYkNvcmUsIENvcmVNZWRpYSwgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1h
Z2VCdWZmZXIsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDVkltYWdlQnVm
ZmVyUmVmIGltYWdlQnVmZmVyLCBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYqIG91dERlc2Mp
LCAoYWxsb2NhdG9yLCBpbWFnZUJ1ZmZlciwgb3V0RGVzYykpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdl
dERpbWVuc2lvbnMsIENNVmlkZW9EaW1lbnNpb25zLCAoQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9u
UmVmIHZpZGVvRGVzYyksICh2aWRlb0Rlc2MpKQpAQCAtMTE0LDYgKzExOCwxMyBAQCBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ2FsbEJsb2NrRm9yRWFj
aFNhbXBsZSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBPU1N0YXR1cyAoXmhh
bmRsZXIpKENNU2FtcGxlQnVmZmVyUmVmLCBDTUl0ZW1Db3VudCkpLCAoc2J1ZiwgaGFuZGxlcikp
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2Ft
cGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9y
UmVmIGFsbG9jYXRvciwgQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZSYW5nZSBzYW1wbGVSYW5n
ZSwgQ01TYW1wbGVCdWZmZXJSZWYqIHNCdWZPdXQpLCAoYWxsb2NhdG9yLCBzYnVmLCBzYW1wbGVS
YW5nZSwgc0J1Zk91dCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBD
b3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlU2l6ZUFycmF5LCBPU1N0YXR1cywgKENN
U2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUNvdW50IHNpemVBcnJheUVudHJpZXMsIHNpemVf
dCogc2l6ZUFycmF5T3V0LCBDTUl0ZW1Db3VudCogc2l6ZUFycmF5RW50cmllc05lZWRlZE91dCks
IChzYnVmLCBzaXplQXJyYXlFbnRyaWVzLCBzaXplQXJyYXlPdXQsIHNpemVBcnJheUVudHJpZXNO
ZWVkZWRPdXQpKQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3Jl
TWVkaWEsIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zLCBP
U1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01CbG9ja0J1ZmZlclJlZiBkYXRh
QnVmZmVyLCBCb29sZWFuIGRhdGFSZWFkeSwgQ01TYW1wbGVCdWZmZXJNYWtlRGF0YVJlYWR5Q2Fs
bGJhY2sgbWFrZURhdGFSZWFkeUNhbGxiYWNrLCB2b2lkICptYWtlRGF0YVJlYWR5UmVmY29uLCBD
TUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uLCBDTUl0ZW1Db3VudCBudW1T
YW1wbGVzLCBDTVRpbWUgc2J1ZlBUUywgY29uc3QgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlv
biAqcGFja2V0RGVzY3JpcHRpb25zLCBDTVNhbXBsZUJ1ZmZlclJlZiAqc0J1Zk91dCksIChhbGxv
Y2F0b3IsIGRhdGFCdWZmZXIsIGRhdGFSZWFkeSwgbWFrZURhdGFSZWFkeUNhbGxiYWNrLCBtYWtl
RGF0YVJlYWR5UmVmY29uLCBmb3JtYXREZXNjcmlwdGlvbiwgbnVtU2FtcGxlcywgc2J1ZlBUUywg
cGFja2V0RGVzY3JpcHRpb25zLCBzQnVmT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1
ZGlvQnVmZmVyTGlzdCwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDRkFsbG9j
YXRvclJlZiBiYnVmU3RydWN0QWxsb2NhdG9yLCBDRkFsbG9jYXRvclJlZiBiYnVmTWVtb3J5QWxs
b2NhdG9yLCB1aW50MzJfdCBmbGFncywgY29uc3QgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJMaXN0
KSwgKHNidWYsIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIGJidWZNZW1vcnlBbGxvY2F0b3IsIGZsYWdz
LCBidWZmZXJMaXN0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENv
cmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhUmVhZHksIE9TU3RhdHVzLCAoQ01TYW1wbGVC
dWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdl
YkNvcmUsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlLCBPU1N0YXR1
cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKiBhc2JkLCBzaXplX3QgbGF5b3V0U2l6ZSwgY29uc3QgQXVkaW9DaGFubmVsTGF5b3V0
KiBsYXlvdXQsIHNpemVfdCBtYWdpY0Nvb2tpZVNpemUsIGNvbnN0IHZvaWQqIG1hZ2ljQ29va2ll
LCBDRkRpY3Rpb25hcnlSZWYgZXh0ZW5zaW9ucywgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVm
KiBvdXREZXNjKSwgKGFsbG9jYXRvciwgYXNiZCwgbGF5b3V0U2l6ZSwgbGF5b3V0LCBtYWdpY0Nv
b2tpZVNpemUsIG1hZ2ljQ29va2llLCBleHRlbnNpb25zLCBvdXREZXNjKSkKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01DbG9ja0dldEhvc3RUaW1l
Q2xvY2ssIENNQ2xvY2tSZWYsICh2b2lkKSwgKCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRUaW1lLCBDTVRpbWUsIChDTUNsb2Nr
UmVmIGNsb2NrKSwgKGNsb2NrKSkKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2lmIFBM
QVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ29yZU1l
ZGlhU29mdExpbmsuaAkocmV2aXNpb24gMjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvQ29yZU1lZGlhU29mdExpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBA
QCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDCiAjZGVmaW5lIENNU2Ft
cGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24gc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxl
QnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvLCBP
U1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUluZGV4IHNhbXBsZUluZGV4
LCBDTVNhbXBsZVRpbWluZ0luZm8qIHRpbWluZ0luZm9PdXQpLCAoc2J1Ziwgc2FtcGxlSW5kZXgs
IHRpbWluZ0luZm9PdXQpKQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0lu
Zm8gc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mbwor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWVD
b252ZXJ0U2NhbGUsIENNVGltZSwgKENNVGltZSB0aW1lLCBpbnQzMl90IG5ld1RpbWVzY2FsZSwg
Q01UaW1lUm91bmRpbmdNZXRob2QgbWV0aG9kKSwgKHRpbWUsIG5ld1RpbWVzY2FsZSwgbWV0aG9k
KSkKKyNkZWZpbmUgQ01UaW1lQ29udmVydFNjYWxlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWVD
b252ZXJ0U2NhbGUKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVN
ZWRpYSwgQ01UaW1lQWRkLCBDTVRpbWUsIChDTVRpbWUgdGltZTEsIENNVGltZSB0aW1lMiksICh0
aW1lMSwgdGltZTIpKQogI2RlZmluZSBDTVRpbWVBZGQgc29mdExpbmtfQ29yZU1lZGlhX0NNVGlt
ZUFkZAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBD
TVRpbWVDb21wYXJlLCBpbnQzMl90LCAoQ01UaW1lIHRpbWUxLCBDTVRpbWUgdGltZTIpLCAodGlt
ZTEsIHRpbWUyKSkKQEAgLTEzNyw2ICsxMzksMTAgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoV2ViQ29yZSwgQwogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyIHNv
ZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0
UHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwg
KHNidWYpKQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcCBz
b2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1w
bGVCdWZmZXJHZXRPdXRwdXREdXJhdGlvbiwgQ01UaW1lLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1
ZiksIChzYnVmKSkKKyNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXREdXJhdGlvbiBzb2Z0
TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXREdXJhdGlvbgorU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdl
dE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lLCAoQ01TYW1wbGVCdWZmZXJSZWYg
c2J1ZiksIChzYnVmKSkKKyNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50YXRp
b25UaW1lU3RhbXAgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0T3V0cHV0UHJl
c2VudGF0aW9uVGltZVN0YW1wCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3Jl
LCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheSwgQ0ZB
cnJheVJlZiwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIEJvb2xlYW4gY3JlYXRlSWZOZWNlc3Nh
cnkpLCAoc2J1ZiwgY3JlYXRlSWZOZWNlc3NhcnkpKQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdl
dFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVy
R2V0U2FtcGxlQXR0YWNobWVudHNBcnJheQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
V2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJh
eSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDTUl0ZW1Db3VudCB0aW1pbmdB
cnJheUVudHJpZXMsIENNU2FtcGxlVGltaW5nSW5mbyAqdGltaW5nQXJyYXlPdXQsIENNSXRlbUNv
dW50ICp0aW1pbmdBcnJheUVudHJpZXNOZWVkZWRPdXQpLCAoc2J1ZiwgdGltaW5nQXJyYXlFbnRy
aWVzLCB0aW1pbmdBcnJheU91dCwgdGltaW5nQXJyYXlFbnRyaWVzTmVlZGVkT3V0KSkKQEAgLTE1
Myw2ICsxNTksOCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDCiAj
ZGVmaW5lIENNVGltZWJhc2VTZXRSYXRlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWViYXNlU2V0
UmF0ZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBD
TVRpbWViYXNlU2V0VGltZSwgT1NTdGF0dXMsIChDTVRpbWViYXNlUmVmIHRpbWViYXNlLCBDTVRp
bWUgdGltZSksICh0aW1lYmFzZSwgdGltZSkpCiAjZGVmaW5lIENNVGltZWJhc2VTZXRUaW1lIHNv
ZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWViYXNlU2V0VGltZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWViYXNlR2V0RWZmZWN0aXZlUmF0ZSwg
RmxvYXQ2NCwgKENNVGltZWJhc2VSZWYgdGltZWJhc2UpLCAodGltZWJhc2UpKQorI2RlZmluZSBD
TVRpbWViYXNlR2V0RWZmZWN0aXZlUmF0ZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01UaW1lYmFzZUdl
dEVmZmVjdGl2ZVJhdGUKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENv
cmVNZWRpYSwgQ01UaW1lQ29weUFzRGljdGlvbmFyeSwgQ0ZEaWN0aW9uYXJ5UmVmLCAoQ01UaW1l
IHRpbWUsIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciksICh0aW1lLCBhbGxvY2F0b3IpKQogI2Rl
ZmluZSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5IHNvZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWVDb3B5
QXNEaWN0aW9uYXJ5CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3Jl
TWVkaWEsIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZUZvckltYWdlQnVmZmVyLCBPU1N0
YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ1ZJbWFnZUJ1ZmZlclJlZiBpbWFnZUJ1
ZmZlciwgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmICpvdXREZXNjKSwgKGFsbG9jYXRvciwg
aW1hZ2VCdWZmZXIsIG91dERlc2MpKQpAQCAtMTkzLDYgKzIwMSwxOCBAQCBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlU2l6ZUFycmF5LCBP
U1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUNvdW50IHNpemVBcnJheUVu
dHJpZXMsIHNpemVfdCogc2l6ZUFycmF5T3V0LCBDTUl0ZW1Db3VudCogc2l6ZUFycmF5RW50cmll
c05lZWRlZE91dCksIChzYnVmLCBzaXplQXJyYXlFbnRyaWVzLCBzaXplQXJyYXlPdXQsIHNpemVB
cnJheUVudHJpZXNOZWVkZWRPdXQpKQogI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVNp
emVBcnJheSBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVTaXplQXJy
YXkKIAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBD
TUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucywgT1NTdGF0dXMs
IChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNQmxvY2tCdWZmZXJSZWYgZGF0YUJ1ZmZlciwg
Qm9vbGVhbiBkYXRhUmVhZHksIENNU2FtcGxlQnVmZmVyTWFrZURhdGFSZWFkeUNhbGxiYWNrIG1h
a2VEYXRhUmVhZHlDYWxsYmFjaywgdm9pZCAqbWFrZURhdGFSZWFkeVJlZmNvbiwgQ01Gb3JtYXRE
ZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiwgQ01JdGVtQ291bnQgbnVtU2FtcGxlcywg
Q01UaW1lIHNidWZQVFMsIGNvbnN0IEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24gKnBhY2tl
dERlc2NyaXB0aW9ucywgQ01TYW1wbGVCdWZmZXJSZWYgKnNCdWZPdXQpLCAoYWxsb2NhdG9yLCBk
YXRhQnVmZmVyLCBkYXRhUmVhZHksIG1ha2VEYXRhUmVhZHlDYWxsYmFjaywgbWFrZURhdGFSZWFk
eVJlZmNvbiwgZm9ybWF0RGVzY3JpcHRpb24sIG51bVNhbXBsZXMsIHNidWZQVFMsIHBhY2tldERl
c2NyaXB0aW9ucywgc0J1Zk91dCkpCisjZGVmaW5lIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVX
aXRoUGFja2V0RGVzY3JpcHRpb25zIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUF1ZGlvU2FtcGxlQnVm
ZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9I
RUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9t
QXVkaW9CdWZmZXJMaXN0LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENGQWxs
b2NhdG9yUmVmIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIENGQWxsb2NhdG9yUmVmIGJidWZNZW1vcnlB
bGxvY2F0b3IsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBBdWRpb0J1ZmZlckxpc3QgKmJ1ZmZlckxp
c3QpLCAoc2J1ZiwgYmJ1ZlN0cnVjdEFsbG9jYXRvciwgYmJ1Zk1lbW9yeUFsbG9jYXRvciwgZmxh
Z3MsIGJ1ZmZlckxpc3QpKQorI2RlZmluZSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9t
QXVkaW9CdWZmZXJMaXN0IHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlclNldERhdGFC
dWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihX
ZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyU2V0RGF0YVJlYWR5LCBPU1N0YXR1cywg
KENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCisjZGVmaW5lIENNU2FtcGxlQnVmZmVy
U2V0RGF0YVJlYWR5IHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlclNldERhdGFSZWFk
eQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yLCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGFzYmQsIHNpemVfdCBs
YXlvdXRTaXplLCBjb25zdCBBdWRpb0NoYW5uZWxMYXlvdXQqIGxheW91dCwgc2l6ZV90IG1hZ2lj
Q29va2llU2l6ZSwgY29uc3Qgdm9pZCogbWFnaWNDb29raWUsIENGRGljdGlvbmFyeVJlZiBleHRl
bnNpb25zLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYqIG91dERlc2MpLCAoYWxsb2NhdG9y
LCBhc2JkLCBsYXlvdXRTaXplLCBsYXlvdXQsIG1hZ2ljQ29va2llU2l6ZSwgbWFnaWNDb29raWUs
IGV4dGVuc2lvbnMsIG91dERlc2MpKQorI2RlZmluZSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25D
cmVhdGUgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZQor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTUNsb2Nr
R2V0SG9zdFRpbWVDbG9jaywgQ01DbG9ja1JlZiwgKHZvaWQpLCAoKSkKKyNkZWZpbmUgQ01DbG9j
a0dldEhvc3RUaW1lQ2xvY2sgIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUNsb2NrR2V0SG9zdFRpbWVD
bG9jaworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBD
TUNsb2NrR2V0VGltZSwgQ01UaW1lLCAoQ01DbG9ja1JlZiBjbG9jayksIChjbG9jaykpCisjZGVm
aW5lIENNQ2xvY2tHZXRUaW1lICBzb2Z0TGlua19Db3JlTWVkaWFfQ01DbG9ja0dldFRpbWUKICNl
bmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2lmIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNhbXBsZUFWRk9i
akMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFTYW1wbGVBVkZPYmpDLmgJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNhbXBsZUFWRk9i
akMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIH5NZWRpYVNhbXBsZUFWRk9iakMoKSB7IH0KIAogICAgIE1lZGlhVGltZSBwcmVzZW50YXRp
b25UaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTWVkaWFUaW1lIG91dHB1dFByZXNlbnRhdGlv
blRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAg
IE1lZGlhVGltZSBvdXRwdXREdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXRvbWlj
U3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9CiAgICAgdm9p
ZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAkocmV2aXNpb24gMjEwMzU2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArMzksOCBAQCBP
QkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcjsKIE9CSkNfQ0xBU1MgQVZTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyUmVuZGVyU3lu
Y2hyb25pemVyOwogT0JKQ19DTEFTUyBBVlN0cmVhbVNlc3Npb247CitPQkpDX0NMQVNTIE5TTnVt
YmVyOworT0JKQ19DTEFTUyBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyOwog
dHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Myw2ICs1NSwxMCBAQCBjbGFzcyBWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtOwogY2xhc3MgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOwog
I2VuZGlmCiAKKyNpZiBfX2hhc19pbmNsdWRlKDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJS
ZW5kZXJTeW5jaHJvbml6ZXIuaD4pCisjZGVmaW5lIFVTRV9SRU5ERVJfU1lOQ0hST05JWkVSIDEK
KyNlbmRpZgorCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgZmlu
YWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwcml2YXRlIE1lZGlhU3Ry
ZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIsIHByaXZhdGUgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9i
c2VydmVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMoTWVkaWFQbGF5ZXIqKTsKQEAgLTc1LDYgKzgxLDkgQEAgcHVibGljOgogICAg
IHZvaWQgZW5zdXJlTGF5ZXIoKTsKICAgICB2b2lkIGRlc3Ryb3lMYXllcigpOwogCisgICAgdm9p
ZCByZW5kZXJlclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqLCBO
U051bWJlciopOworICAgIHZvaWQgbGF5ZXJTdGF0dXNEaWRDaGFuZ2UoQVZTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIqLCBOU051bWJlciopOworCiBwcml2YXRlOgogICAgIC8vIE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZQogCkBAIC05Nyw3ICsxMDYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
cGF1c2VkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFZvbHVtZShmbG9hdCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBpbnRlcm5hbFNldFZvbHVtZShmbG9hdCwgYm9vbCk7CiAgICAgdm9p
ZCBzZXRNdXRlZChib29sKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzTXV0aW5nKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0xMjIsMTMgKzEzMCwyNiBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZSB7IC8qIE5v
LW9wICovIH0KIAotICAgIHZvaWQgZW5xdWV1ZUF1ZGlvU2FtcGxlQnVmZmVyRnJvbVRyYWNrKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgTWVkaWFTYW1wbGUmKTsKKyAgICB2b2lkIGZsdXNoUmVu
ZGVyZXJzKCk7CiAKLSAgICB2b2lkIHByZXBhcmVWaWRlb1NhbXBsZUJ1ZmZlckZyb21UcmFjayhN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIE1lZGlhU2FtcGxlJik7Ci0gICAgdm9pZCBlbnF1ZXVl
VmlkZW9TYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmKTsKKyAgICB1c2luZyBQZW5kaW5nU2FtcGxl
UXVldWUgPSBEZXF1ZTxSZWY8TWVkaWFTYW1wbGU+PjsKKyAgICB2b2lkIGFkZFNhbXBsZVRvUGVu
ZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGVRdWV1ZSYsIE1lZGlhU2FtcGxlJik7CisgICAgdm9pZCBy
ZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxlUXVldWUmKTsKKwor
ICAgIHZvaWQgdXBkYXRlU2FtcGxlVGltZXMoTWVkaWFTYW1wbGUmLCBjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBjaGFyKik7CisgICAgTWVkaWFUaW1lIGNhbGN1bGF0ZVRpbWVsaW5lT2Zmc2V0KGNv
bnN0IE1lZGlhU2FtcGxlJiwgZG91YmxlKTsKKyAgICAKKyAgICB2b2lkIGVucXVldWVWaWRlb1Nh
bXBsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIE1lZGlhU2FtcGxlJik7CiAgICAgYm9vbCBz
aG91bGRFbnF1ZXVlVmlkZW9TYW1wbGVCdWZmZXIoKSBjb25zdDsKICAgICB2b2lkIGZsdXNoQW5k
UmVtb3ZlVmlkZW9TYW1wbGVCdWZmZXJzKCk7Ci0gICAgdm9pZCByZXF1ZXN0Tm90aWZpY2F0aW9u
V2hlblJlYWR5Rm9yTWVkaWFEYXRhKCk7CisgICAgdm9pZCByZXF1ZXN0Tm90aWZpY2F0aW9uV2hl
blJlYWR5Rm9yVmlkZW9EYXRhKCk7CisKKyAgICB2b2lkIGVucXVldWVBdWRpb1NhbXBsZShNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSYsIE1lZGlhU2FtcGxlJik7CisgICAgdm9pZCBjcmVhdGVBdWRp
b1JlbmRlcmVyKEF0b21pY1N0cmluZyk7CisgICAgdm9pZCBkZXN0cm95QXVkaW9SZW5kZXJlcihB
VlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqKTsKKyAgICB2b2lkIGRlc3Ryb3lBdWRpb1JlbmRl
cmVyKEF0b21pY1N0cmluZyk7CisgICAgdm9pZCBkZXN0cm95QXVkaW9SZW5kZXJlcnMoKTsKKyAg
ICB2b2lkIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEoQXRvbWljU3Ry
aW5nKTsKIAogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTE1NSw2ICsxNzYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlSW50cmluc2ljU2l6ZShjb25zdCBGbG9hdFNpemUm
KTsKICAgICB2b2lkIHVwZGF0ZVRyYWNrcygpOwogICAgIHZvaWQgcmVuZGVyaW5nTW9kZUNoYW5n
ZWQoKTsKKyAgICB2b2lkIGNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNrKCk7CiAKICAgICB2b2lkIHNj
aGVkdWxlRGVmZXJyZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCkBAIC0xODYsMjYgKzIw
OCwzNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRS
ZWN0KSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgYm9vbCBoYXZlVmlkZW9MYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHx8IG1fdmlkZW9QcmV2aWV3UGxh
eWVyOyB9CisgICAgTWVkaWFUaW1lIHN0cmVhbVRpbWUoKSBjb25zdDsKKworI2lmIFVTRShSRU5E
RVJfU1lOQ0hST05JWkVSKQorICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJv
dmlkZXIoKSBmaW5hbDsKKyNlbmRpZgogCiAgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyIHsgbnVs
bHB0ciB9OwogICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQz4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRl
PiBtX21lZGlhU3RyZWFtUHJpdmF0ZTsKIAotICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
UHJldmlldz4gbV92aWRlb1ByZXZpZXdQbGF5ZXI7Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlPiBtX3ZpZGVvVHJhY2s7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlPiBtX2FjdGl2ZVZpZGVvVHJhY2s7CiAKKyAgICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZm
ZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4gbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcjsKICAgICBSZXRh
aW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKKyAg
ICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4+
IG1fYXVkaW9SZW5kZXJlcnM7CiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyUmVuZGVyU3lu
Y2hyb25pemVyPiBtX3N5bmNocm9uaXplcjsKKyNlbHNlCisgICAgc3RkOjp1bmlxdWVfcHRyPENs
b2NrPiBtX2Nsb2NrOwogI2VuZGlmCisKKyAgICBNZWRpYVRpbWUgbV9wYXVzZWRUaW1lOwogICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BhdXNlZEltYWdlOwotICAgIGRvdWJsZSBtX3BhdXNl
ZFRpbWUgeyAwIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBtX2Nsb2NrOwogCiAgICAg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV9h
dWRpb1RyYWNrTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKLSAgICBEZXF1ZTxSZWY8TWVkaWFTYW1w
bGU+PiBtX3NhbXBsZVF1ZXVlOworICAgIFBlbmRpbmdTYW1wbGVRdWV1ZSBtX3BlbmRpbmdWaWRl
b1NhbXBsZVF1ZXVlOworI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQorICAgIFBlbmRpbmdT
YW1wbGVRdWV1ZSBtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlOworI2VuZGlmCiAKICAgICBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRlIHsgTWVkaWFQbGF5ZXI6OkVtcHR5
IH07CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlIHsgTWVkaWFQbGF5
ZXI6OkhhdmVOb3RoaW5nIH07CkBAIC0yMTksNiArMjUxLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Jl
Y2VpdmVkTWVkaWEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0ZyYW1lRGlzcGxheWVkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fcGVuZGluZ1NlbGVjdGVkVHJhY2tDaGVjayB7IGZhbHNlIH07CiAK
ICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyPiBtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0JKHJl
dmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTUyLDE4ICs1MiwxNDkgQEAKIAogU09GVF9MSU5LX0ZSQU1FV09SS19P
UFRJT05BTChBVkZvdW5kYXRpb24pCiAKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5k
YXRpb24sIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcikKIFNPRlRfTElOS19DTEFTU19PUFRJ
T05BTChBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQogU09GVF9MSU5L
X0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJv
bml6ZXIpCiAKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWQXVkaW9UaW1lUGl0
Y2hBbGdvcml0aG1TcGVjdHJhbCwgTlNTdHJpbmcqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91
bmRhdGlvbiwgQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCwgTlNTdHJpbmcqKQor
CisjZGVmaW5lIEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1TcGVjdHJhbCBnZXRBVkF1ZGlvVGlt
ZVBpdGNoQWxnb3JpdGhtU3BlY3RyYWwoKQorI2RlZmluZSBBVkF1ZGlvVGltZVBpdGNoQWxnb3Jp
dGhtVmFyaXNwZWVkIGdldEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1WYXJpc3BlZWQoKQorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGludGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZlclN0
YXR1c0NoYW5nZUxpc3RlbmVyIDogTlNPYmplY3QgeworICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQyogX3BhcmVudDsKKyAgICBWZWN0b3I8UmV0YWluUHRyPEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyPj4gX2xheWVyczsKKyAgICBWZWN0b3I8UmV0YWluUHRyPEFWU2Ft
cGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4+IF9yZW5kZXJlcnM7Cit9CisKKy0gKGlkKWluaXRXaXRo
UGFyZW50OihNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMqKWNhbGxiYWNrOwor
LSAodm9pZClpbnZhbGlkYXRlOworLSAodm9pZCliZWdpbk9ic2VydmluZ0xheWVyOihBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciAqKWxheWVyOworLSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXI6
KEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICopbGF5ZXI7CistICh2b2lkKWJlZ2luT2JzZXJ2
aW5nUmVuZGVyZXI6KEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciAqKXJlbmRlcmVyOworLSAo
dm9pZClzdG9wT2JzZXJ2aW5nUmVuZGVyZXI6KEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciAq
KXJlbmRlcmVyOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZTYW1wbGVCdWZmZXJTdGF0
dXNDaGFuZ2VMaXN0ZW5lcgorCistIChpZClpbml0V2l0aFBhcmVudDooTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDKilwYXJlbnQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9wYXJlbnQgPSBwYXJlbnQ7Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtzZWxmIGludmFs
aWRhdGVdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClpbnZhbGlkYXRlCit7
CisgICAgZm9yIChhdXRvJiBsYXllciA6IF9sYXllcnMpCisgICAgICAgIFtsYXllciByZW1vdmVP
YnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiXTsKKyAgICBfbGF5ZXJzLmNsZWFyKCk7
CisKKyAgICBmb3IgKGF1dG8mIHJlbmRlcmVyIDogX3JlbmRlcmVycykKKyAgICAgICAgW3JlbmRl
cmVyIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOworICAgIF9yZW5k
ZXJlcnMuY2xlYXIoKTsKKworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CisKKyAgICBfcGFyZW50ID0gbnVsbHB0cjsKK30KKwor
LSAodm9pZCliZWdpbk9ic2VydmluZ0xheWVyOihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciop
bGF5ZXIKK3sKKyAgICBBU1NFUlQoX3BhcmVudCk7CisgICAgQVNTRVJUKCFfbGF5ZXJzLmNvbnRh
aW5zKGxheWVyKSk7CisKKyAgICBfbGF5ZXJzLmFwcGVuZChsYXllcik7CisgICAgW2xheWVyIGFk
ZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyIgb3B0aW9uczpOU0tleVZhbHVlT2Jz
ZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07Cit9CisKKy0gKHZvaWQpc3RvcE9ic2Vy
dmluZ0xheWVyOihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciopbGF5ZXIKK3sKKyAgICBBU1NF
UlQoX3BhcmVudCk7CisgICAgQVNTRVJUKF9sYXllcnMuY29udGFpbnMobGF5ZXIpKTsKKworICAg
IFtsYXllciByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiXTsKKyAgICBf
bGF5ZXJzLnJlbW92ZShfbGF5ZXJzLmZpbmQobGF5ZXIpKTsKK30KKworLSAodm9pZCliZWdpbk9i
c2VydmluZ1JlbmRlcmVyOihBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqKXJlbmRlcmVyCit7
CisgICAgQVNTRVJUKF9wYXJlbnQpOworICAgIEFTU0VSVCghX3JlbmRlcmVycy5jb250YWlucyhy
ZW5kZXJlcikpOworCisgICAgX3JlbmRlcmVycy5hcHBlbmQocmVuZGVyZXIpOworICAgIFtyZW5k
ZXJlciBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiIG9wdGlvbnM6TlNLZXlW
YWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om51bGxwdHJdOworfQorCistICh2b2lkKXN0
b3BPYnNlcnZpbmdSZW5kZXJlcjooQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyKilyZW5kZXJl
cgoreworICAgIEFTU0VSVChfcGFyZW50KTsKKyAgICBBU1NFUlQoX3JlbmRlcmVycy5jb250YWlu
cyhyZW5kZXJlcikpOworCisgICAgW3JlbmRlcmVyIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5
UGF0aDpAInN0YXR1cyJdOworICAgIF9yZW5kZXJlcnMucmVtb3ZlKF9yZW5kZXJlcnMuZmluZChy
ZW5kZXJlcikpOworfQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5n
ICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hh
bmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQp
OworICAgIFVOVVNFRF9QQVJBTShrZXlQYXRoKTsKKyAgICBBU1NFUlQoX3BhcmVudCk7CisKKyAg
ICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4gcHJvdGVj
dGVkU2VsZiA9IHNlbGY7CisgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpnZXRBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCldKSB7CisgICAgICAgIFJldGFpblB0cjxBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcj4gbGF5ZXIgPSAoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
KilvYmplY3Q7CisgICAgICAgIFJldGFpblB0cjxOU051bWJlcj4gc3RhdHVzID0gW2NoYW5nZSB2
YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKworICAgICAgICBBU1NFUlQoX2xh
eWVycy5jb250YWlucyhsYXllci5nZXQoKSkpOworICAgICAgICBBU1NFUlQoW2tleVBhdGggaXNF
cXVhbFRvU3RyaW5nOkAic3RhdHVzIl0pOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3By
b3RlY3RlZFNlbGYgPSBXVEZNb3ZlKHByb3RlY3RlZFNlbGYpLCBsYXllciA9IFdURk1vdmUobGF5
ZXIpLCBzdGF0dXMgPSBXVEZNb3ZlKHN0YXR1cyldIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFNl
bGYtPl9wYXJlbnQtPmxheWVyU3RhdHVzRGlkQ2hhbmdlKGxheWVyLmdldCgpLCBzdGF0dXMuZ2V0
KCkpOworICAgICAgICB9KTsKKworICAgIH0gZWxzZSBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNz
OmdldEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckNsYXNzKCldKSB7CisgICAgICAgIFJldGFp
blB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJlbmRlcmVyID0gKEFWU2FtcGxlQnVm
ZmVyQXVkaW9SZW5kZXJlciAqKW9iamVjdDsKKyAgICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBz
dGF0dXMgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOworCisg
ICAgICAgIEFTU0VSVChfcmVuZGVyZXJzLmNvbnRhaW5zKHJlbmRlcmVyLmdldCgpKSk7CisgICAg
ICAgIEFTU0VSVChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMiXSk7CisKKyAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFdURk1vdmUocHJvdGVjdGVkU2Vs
ZiksIHJlbmRlcmVyID0gV1RGTW92ZShyZW5kZXJlciksIHN0YXR1cyA9IFdURk1vdmUoc3RhdHVz
KV0geworICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3BhcmVudC0+cmVuZGVyZXJTdGF0dXNE
aWRDaGFuZ2UocmVuZGVyZXIuZ2V0KCksIHN0YXR1cy5nZXQoKSk7CisgICAgICAgIH0pOworICAg
IH0gZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KK0BlbmQKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQwogCitzdGF0aWMgY29uc3QgZG91YmxlIHJlbmRlcmVy
TGF0ZW5jeSA9IDAuMDI7CisKIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIp
CiAgICAgOiBtX3BsYXllcihwbGF5ZXIpCiAgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCisg
ICAgLCBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlclN0
YXR1c0NoYW5nZUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCisjaWYgVVNF
KFJFTkRFUl9TWU5DSFJPTklaRVIpCisgICAgLCBtX3N5bmNocm9uaXplcihhZG9wdE5TKFthbGxv
Y0FWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVySW5zdGFuY2UoKSBpbml0XSkpCisjZWxz
ZQogICAgICwgbV9jbG9jayhDbG9jazo6Y3JlYXRlKCkpCisjZW5kaWYKICNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICAsIG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyKFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6Y3JlYXRlKCkp
CiAjZW5kaWYKQEAgLTgxLDEwICsyMTIsMTMgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp+TQogICAgICAgICAgICAgdHJhY2stPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsK
ICAgICB9CiAKKyAgICBkZXN0cm95TGF5ZXIoKTsKKyNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpF
UikKKyAgICBkZXN0cm95QXVkaW9SZW5kZXJlcnMoKTsKKyNlbmRpZgorCiAgICAgbV9hdWRpb1Ry
YWNrTWFwLmNsZWFyKCk7CiAgICAgbV92aWRlb1RyYWNrTWFwLmNsZWFyKCk7Ci0KLSAgICBkZXN0
cm95TGF5ZXIoKTsKIH0KIAogI3ByYWdtYSBtYXJrIC0KQEAgLTEyNywzNCArMjYxLDEwNyBAQCBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpCiAjcHJhZ21hIG1hcmsgLQog
I3ByYWdtYSBtYXJrIEFWU2FtcGxlQnVmZmVyIE1ldGhvZHMKIAotdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVBdWRpb1NhbXBsZUJ1ZmZlckZyb21UcmFj
ayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIE1lZGlhU2FtcGxlJikKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdR
dWV1ZShQZW5kaW5nU2FtcGxlUXVldWUmIHF1ZXVlKQogewotICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5ODM2CisgICAgTWVkaWFUaW1lIG5v
dyA9IHN0cmVhbVRpbWUoKTsKKyAgICB3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAg
ICBpZiAocXVldWUuZmlyc3QoKS0+ZGVjb2RlVGltZSgpID4gbm93KQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIHF1ZXVlLnJlbW92ZUZpcnN0KCk7CisgICAgfTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVu
UmVhZHlGb3JNZWRpYURhdGEoKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGVRdWV1ZSYgcXVldWUs
IE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7Ci0gICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCkgdXNpbmdCbG9jazpeIHsKLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0
b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKKyAgICByZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdR
dWV1ZShxdWV1ZSk7CisgICAgcXVldWUuYXBwZW5kKHNhbXBsZSk7Cit9CiAKLSAgICAgICAgd2hp
bGUgKCFtX3NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKCFbbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAgICAg
ICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvck1lZGlhRGF0YSgpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVTYW1wbGVUaW1lcyhNZWRpYVNhbXBsZSYgc2Ft
cGxlLCBjb25zdCBNZWRpYVRpbWUmIHRpbWVsaW5lT2Zmc2V0LCBjb25zdCBjaGFyKiBsb2dnaW5n
UHJlZml4KQoreworICAgIExPRyhNZWRpYUNhcHR1cmVTYW1wbGVzLCAiJXMoJXApOiBvcmlnaW5h
bCBzYW1wbGUgPSAlcyIsIGxvZ2dpbmdQcmVmaXgsIHRoaXMsIHRvU3RyaW5nKHNhbXBsZSkudXRm
OCgpLmRhdGEoKSk7CisgICAgc2FtcGxlLm9mZnNldFRpbWVzdGFtcHNCeSh0aW1lbGluZU9mZnNl
dCk7CisgICAgTE9HKE1lZGlhQ2FwdHVyZVNhbXBsZXMsICIlcyglcCk6IGFkanVzdGVkIHNhbXBs
ZSA9ICVzIiwgbG9nZ2luZ1ByZWZpeCwgdGhpcywgdG9TdHJpbmcoc2FtcGxlKS51dGY4KCkuZGF0
YSgpKTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICBNZWRpYVRpbWUgbm93ID0gc3RyZWFtVGlt
ZSgpOworICAgIGRvdWJsZSBkZWx0YSA9IChzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpIC0gbm93
KS50b0RvdWJsZSgpOworICAgIGlmIChkZWx0YSA8IDApCisgICAgICAgIExPRyhNZWRpYSwgIiVz
KCVwKTogKk5PVEUqIGF1ZGlvIHNhbXBsZSBhdCB0aW1lICVzIGlzICVmIHNlY29uZHMgbGF0ZSIs
IGxvZ2dpbmdQcmVmaXgsIHRoaXMsIHRvU3RyaW5nKG5vdykudXRmOCgpLmRhdGEoKSwgLWRlbHRh
KTsKKyAgICBlbHNlIGlmIChkZWx0YSA8IC4wMSkKKyAgICAgICAgTE9HKE1lZGlhLCAiJXMoJXAp
OiAqTk9URSogYXVkaW8gc2FtcGxlIGF0IHRpbWUgJXMgaXMgb25seSAlcyBzZWNvbmRzIGVhcmx5
IiwgbG9nZ2luZ1ByZWZpeCwgdGhpcywgdG9TdHJpbmcobm93KS51dGY4KCkuZGF0YSgpLCBkZWx0
YSk7CisgICAgZWxzZSBpZiAoZGVsdGEgPiAuMykKKyAgICAgICAgTE9HKE1lZGlhLCAiJXMoJXAp
OiAqTk9URSogYXVkaW8gc2FtcGxlIGF0IHRpbWUgJXMgaXMgJXMgc2Vjb25kcyBlYXJseSEiLCBs
b2dnaW5nUHJlZml4LCB0aGlzLCB0b1N0cmluZyhub3cpLnV0ZjgoKS5kYXRhKCksIGRlbHRhKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxvZ2dpbmdQcmVmaXgpOworI2VuZGlmCiAKLSAgICAg
ICAgICAgIGF1dG8gc2FtcGxlID0gbV9zYW1wbGVRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAg
ICAgIGVucXVldWVWaWRlb1NhbXBsZUJ1ZmZlcihzYW1wbGUuZ2V0KCkpOwotICAgICAgICB9Ci0g
ICAgfV07CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpl
bnF1ZXVlVmlkZW9TYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK01lZGlhVGltZSBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNhbGN1bGF0ZVRpbWVsaW5lT2Zm
c2V0KGNvbnN0IE1lZGlhU2FtcGxlJiBzYW1wbGUsIGRvdWJsZSBsYXRlbmN5KQogeworICAgIE1l
ZGlhVGltZSBzYW1wbGVUaW1lID0gc2FtcGxlLm91dHB1dFByZXNlbnRhdGlvblRpbWUoKTsKKyAg
ICBpZiAoIXNhbXBsZVRpbWUgfHwgIXNhbXBsZVRpbWUuaXNWYWxpZCgpKQorICAgICAgICBzYW1w
bGVUaW1lID0gc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKTsKKyAgICBNZWRpYVRpbWUgdGltZWxp
bmVPZmZzZXQgPSBzdHJlYW1UaW1lKCkgLSBzYW1wbGVUaW1lICsgTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKGxhdGVuY3kpOworICAgIGlmICh0aW1lbGluZU9mZnNldC50aW1lU2NhbGUoKSAh
PSBzYW1wbGVUaW1lLnRpbWVTY2FsZSgpKQorICAgICAgICB0aW1lbGluZU9mZnNldCA9IHRvTWVk
aWFUaW1lKENNVGltZUNvbnZlcnRTY2FsZSh0b0NNVGltZSh0aW1lbGluZU9mZnNldCksIHNhbXBs
ZVRpbWUudGltZVNjYWxlKCksIGtDTVRpbWVSb3VuZGluZ01ldGhvZF9EZWZhdWx0KSk7CisgICAg
cmV0dXJuIHRpbWVsaW5lT2Zmc2V0OworfQorCisjaWYgVVNFKFJFTkRFUl9TWU5DSFJPTklaRVIp
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUF1ZGlv
U2FtcGxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaywgTWVkaWFTYW1wbGUmIHNhbXBs
ZSkKK3sKKyAgICBBU1NFUlQobV9hdWRpb1RyYWNrTWFwLmNvbnRhaW5zKHRyYWNrLmlkKCkpKTsK
KyAgICBBU1NFUlQobV9hdWRpb1JlbmRlcmVycy5jb250YWlucyhzYW1wbGUudHJhY2tJRCgpKSk7
CisKKyAgICBhdXRvIGF1ZGlvVHJhY2sgPSBtX2F1ZGlvVHJhY2tNYXAuZ2V0KHRyYWNrLmlkKCkp
OworICAgIE1lZGlhVGltZSB0aW1lbGluZU9mZnNldCA9IGF1ZGlvVHJhY2stPnRpbWVsaW5lT2Zm
c2V0KCk7CisgICAgaWYgKHRpbWVsaW5lT2Zmc2V0ID09IE1lZGlhVGltZTo6aW52YWxpZFRpbWUo
KSkgeworICAgICAgICB0aW1lbGluZU9mZnNldCA9IGNhbGN1bGF0ZVRpbWVsaW5lT2Zmc2V0KHNh
bXBsZSwgcmVuZGVyZXJMYXRlbmN5KTsKKyAgICAgICAgYXVkaW9UcmFjay0+c2V0VGltZWxpbmVP
ZmZzZXQodGltZWxpbmVPZmZzZXQpOworICAgICAgICBMT0coTWVkaWFDYXB0dXJlU2FtcGxlcywg
Ik1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUF1ZGlvU2FtcGxl
OiB0aW1lbGluZSBvZmZzZXQgZm9yIHRyYWNrICVzIHNldCB0byAoJWxsZC8lZCkiLCB0cmFjay5p
ZCgpLnV0ZjgoKS5kYXRhKCksIHRpbWVsaW5lT2Zmc2V0LnRpbWVWYWx1ZSgpLCB0aW1lbGluZU9m
ZnNldC50aW1lU2NhbGUoKSk7CisgICAgfQorCisgICAgdXBkYXRlU2FtcGxlVGltZXMoc2FtcGxl
LCB0aW1lbGluZU9mZnNldCwgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
ZW5xdWV1ZUF1ZGlvU2FtcGxlIik7CisKKyAgICBhdXRvIHJlbmRlcmVyID0gbV9hdWRpb1JlbmRl
cmVycy5nZXQoc2FtcGxlLnRyYWNrSUQoKSk7CisgICAgaWYgKCFbcmVuZGVyZXIgaXNSZWFkeUZv
ck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKG1fcGVu
ZGluZ0F1ZGlvU2FtcGxlUXVldWUsIHNhbXBsZSk7CisgICAgICAgIHJlcXVlc3ROb3RpZmljYXRp
b25XaGVuUmVhZHlGb3JBdWRpb0RhdGEoc2FtcGxlLnRyYWNrSUQoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBbcmVuZGVyZXIgZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpzYW1wbGUucGxh
dGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXJdOworfQorI2VuZGlmCisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGUo
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBNZWRpYVNhbXBsZSYgc2FtcGxlKQorewor
ICAgIEFTU0VSVChtX3ZpZGVvVHJhY2tNYXAuY29udGFpbnModHJhY2suaWQoKSkpOworCisgICAg
aWYgKCZ0cmFjayAhPSBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlkZW9UcmFjaygpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2hhc1JlY2VpdmVkTWVkaWEgPSB0cnVlOworICAgIHVw
ZGF0ZVJlYWR5U3RhdGUoKTsKKyAgICBpZiAobV9kaXNwbGF5TW9kZSAhPSBMaXZlUHJldmlldyB8
fCAobV9kaXNwbGF5TW9kZSA9PSBQYXVzZWRJbWFnZSAmJiBtX2lzRnJhbWVEaXNwbGF5ZWQpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHZpZGVvVHJhY2sgPSBtX3ZpZGVvVHJhY2tNYXAu
Z2V0KHRyYWNrLmlkKCkpOworICAgIE1lZGlhVGltZSB0aW1lbGluZU9mZnNldCA9IHZpZGVvVHJh
Y2stPnRpbWVsaW5lT2Zmc2V0KCk7CisgICAgaWYgKHRpbWVsaW5lT2Zmc2V0ID09IE1lZGlhVGlt
ZTo6aW52YWxpZFRpbWUoKSkgeworICAgICAgICB0aW1lbGluZU9mZnNldCA9IGNhbGN1bGF0ZVRp
bWVsaW5lT2Zmc2V0KHNhbXBsZSwgcmVuZGVyZXJMYXRlbmN5KTsKKyAgICAgICAgdmlkZW9UcmFj
ay0+c2V0VGltZWxpbmVPZmZzZXQodGltZWxpbmVPZmZzZXQpOworICAgICAgICBMT0coTWVkaWFD
YXB0dXJlU2FtcGxlcywgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5x
dWV1ZVZpZGVvU2FtcGxlOiB0aW1lbGluZSBvZmZzZXQgZm9yIHRyYWNrICVzIHNldCB0byAlZiIs
IHRyYWNrLmlkKCkudXRmOCgpLmRhdGEoKSwgdGltZWxpbmVPZmZzZXQudG9Eb3VibGUoKSk7Cisg
ICAgfQorCisgICAgdXBkYXRlU2FtcGxlVGltZXMoc2FtcGxlLCB0aW1lbGluZU9mZnNldCwgIk1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlIik7
CisKICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpIHsKICAgICAgICAgaWYgKCFb
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7Ci0g
ICAgICAgICAgICBtX3NhbXBsZVF1ZXVlLmFwcGVuZChzYW1wbGUpOwotICAgICAgICAgICAgcmVx
dWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvck1lZGlhRGF0YSgpOworICAgICAgICAgICAgYWRk
U2FtcGxlVG9QZW5kaW5nUXVldWUobV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZSwgc2FtcGxlKTsK
KyAgICAgICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNjQsMTcgKzM3MSwxNDIgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIG1faXNGcmFtZURp
c3BsYXllZCA9IHRydWU7CiAgICAgaWYgKCFtX2hhc0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUpIHsK
ICAgICAgICAgbV9oYXNFdmVyRW5xdWV1ZWRWaWRlb0ZyYW1lID0gdHJ1ZTsKKyAgICAgICAgaWYg
KG1fZGlzcGxheU1vZGUgPT0gUGF1c2VkSW1hZ2UpCisgICAgICAgICAgICB1cGRhdGVQYXVzZWRJ
bWFnZSgpOwogICAgICAgICBtX3BsYXllci0+Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCk7Ci0g
ICAgICAgIHVwZGF0ZVBhdXNlZEltYWdlKCk7CiAgICAgfQogfQogCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cHJlcGFyZVZpZGVvU2FtcGxlQnVmZmVyRnJvbVRy
YWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaywgTWVkaWFTYW1wbGUmIHNhbXBsZSkK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZXF1ZXN0Tm90aWZp
Y2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkKK3sKKyAgICBbbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSB1c2luZ0Jsb2NrOl4geworICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOworCisgICAgICAgIHdoaWxlICghbV9wZW5k
aW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlmICghW21fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgeworICAgICAg
ICAgICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8g
c2FtcGxlID0gbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS50YWtlRmlyc3QoKTsKKyAgICAgICAg
ICAgIGVucXVldWVWaWRlb1NhbXBsZSgqbV9hY3RpdmVWaWRlb1RyYWNrLmdldCgpLCBzYW1wbGUu
Z2V0KCkpOworICAgICAgICB9CisgICAgfV07Cit9CisKKyNpZiBVU0UoUkVOREVSX1NZTkNIUk9O
SVpFUikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZXF1ZXN0
Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yQXVkaW9EYXRhKEF0b21pY1N0cmluZyB0cmFja0lEKQor
eworICAgIGlmICghbV9hdWRpb1JlbmRlcmVycy5jb250YWlucyh0cmFja0lEKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byByZW5kZXJlciA9IG1fYXVkaW9SZW5kZXJlcnMuZ2V0KHRyYWNr
SUQpOworICAgIFtyZW5kZXJlciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6XiB7CisgICAgICAgIFtyZW5kZXJlciBz
dG9wUmVxdWVzdGluZ01lZGlhRGF0YV07CisKKyAgICAgICAgYXV0byBhdWRpb1RyYWNrID0gbV9h
dWRpb1RyYWNrTWFwLmdldCh0cmFja0lEKTsKKyAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdBdWRp
b1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCFbcmVuZGVyZXIgaXNS
ZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNh
dGlvbldoZW5SZWFkeUZvckF1ZGlvRGF0YSh0cmFja0lEKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gbV9wZW5kaW5n
QXVkaW9TYW1wbGVRdWV1ZS50YWtlRmlyc3QoKTsKKyAgICAgICAgICAgIGVucXVldWVBdWRpb1Nh
bXBsZShhdWRpb1RyYWNrLT5zdHJlYW1UcmFjaygpLCBzYW1wbGUuZ2V0KCkpOworICAgICAgICB9
CisgICAgfV07Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpjcmVhdGVBdWRpb1JlbmRlcmVyKEF0b21pY1N0cmluZyB0cmFja0lEKQogewotICAgIGlmICgm
dHJhY2sgIT0gbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKSB8fCAhc2hv
dWxkRW5xdWV1ZVZpZGVvU2FtcGxlQnVmZmVyKCkpCisgICAgQVNTRVJUKCFtX2F1ZGlvUmVuZGVy
ZXJzLmNvbnRhaW5zKHRyYWNrSUQpKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gYWRvcHROUyhbYWxs
b2NBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBbcmVu
ZGVyZXIgc2V0QXVkaW9UaW1lUGl0Y2hBbGdvcml0aG06KG1fcGxheWVyLT5wcmVzZXJ2ZXNQaXRj
aCgpID8gQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVNwZWN0cmFsIDogQVZBdWRpb1RpbWVQaXRj
aEFsZ29yaXRobVZhcmlzcGVlZCldOworICAgIG1fYXVkaW9SZW5kZXJlcnMuc2V0KHRyYWNrSUQs
IHJlbmRlcmVyKTsKKyAgICBbbV9zeW5jaHJvbml6ZXIgYWRkUmVuZGVyZXI6cmVuZGVyZXIuZ2V0
KCldOworICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIGJlZ2luT2JzZXJ2aW5nUmVuZGVyZXI6
cmVuZGVyZXIuZ2V0KCldOworICAgIGlmIChtX2F1ZGlvUmVuZGVyZXJzLnNpemUoKSA9PSAxKQor
ICAgICAgICByZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUF1ZGlvUmVuZGVyZXIoQVZTYW1wbGVCdWZm
ZXJBdWRpb1JlbmRlcmVyKiByZW5kZXJlcikKK3sKKyAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5l
ciBzdG9wT2JzZXJ2aW5nUmVuZGVyZXI6cmVuZGVyZXJdOworICAgIFtyZW5kZXJlciBmbHVzaF07
CisgICAgW3JlbmRlcmVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKKworICAgIENNVGltZSBu
b3cgPSBDTVRpbWViYXNlR2V0VGltZShbbV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKTsKKyAgICBb
bV9zeW5jaHJvbml6ZXIgcmVtb3ZlUmVuZGVyZXI6cmVuZGVyZXIgYXRUaW1lOm5vdyB3aXRoQ29t
cGxldGlvbkhhbmRsZXI6XihCT09MKSB7IH1dOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUF1ZGlvUmVuZGVyZXIoQXRvbWljU3RyaW5nIHRy
YWNrSUQpCit7CisgICAgaWYgKCFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVmlkZW9TYW1wbGVCdWZmZXIoc2FtcGxlKTsK
KyAgICBkZXN0cm95QXVkaW9SZW5kZXJlcihtX2F1ZGlvUmVuZGVyZXJzLmdldCh0cmFja0lEKS5n
ZXQoKSk7CisgICAgbV9hdWRpb1JlbmRlcmVycy5yZW1vdmUodHJhY2tJRCk7CisgICAgaWYgKCFt
X2F1ZGlvUmVuZGVyZXJzLnNpemUoKSkKKyAgICAgICAgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lB
dWRpb1JlbmRlcmVycygpCit7CisgICAgbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZS5jbGVhcigp
OworICAgIGZvciAoYXV0byYgcmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJzLnZhbHVlcygpKQor
ICAgICAgICBkZXN0cm95QXVkaW9SZW5kZXJlcihyZW5kZXJlci5nZXQoKSk7CisgICAgbV9hdWRp
b1JlbmRlcmVycy5jbGVhcigpOworfQorCitBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQoreworICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZXR1cm4gYSBtaXggb2YgYWxsIGF1ZGlvIHRyYWNrcyAt
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAzMDUKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZhbHVlcygpKSB7CisgICAgICAg
IGlmICh0cmFjay0+c3RyZWFtVHJhY2soKS5lbmRlZCgpIHx8ICF0cmFjay0+c3RyZWFtVHJhY2so
KS5lbmFibGVkKCkgfHwgdHJhY2stPnN0cmVhbVRyYWNrKCkubXV0ZWQoKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIHJldHVybiB0cmFjay0+c3RyZWFtVHJhY2soKS5hdWRpb1Nv
dXJjZVByb3ZpZGVyKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZW5kZXJlclN0YXR1
c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqIHJlbmRlcmVyLCBOU051bWJl
ciogc3RhdHVzKQoreworI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQorICAgIFN0cmluZyB0
cmFja0lEOworICAgIGZvciAoYXV0byYgcGFpciA6IG1fYXVkaW9SZW5kZXJlcnMpIHsKKyAgICAg
ICAgaWYgKHBhaXIudmFsdWUgPT0gcmVuZGVyZXIpIHsKKyAgICAgICAgICAgIHRyYWNrSUQgPSBw
YWlyLmtleTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VS
VCghdHJhY2tJRC5pc0VtcHR5KCkpOworICAgIGlmIChzdGF0dXMuaW50ZWdlclZhbHVlID09IEFW
UXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzUmVuZGVyaW5nKQorICAgICAgICBtX2F1
ZGlvVHJhY2tNYXAuZ2V0KHRyYWNrSUQpLT5zZXRUaW1lbGluZU9mZnNldChNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVuZGVyZXIpOworICAgIFVO
VVNFRF9QQVJBTShzdGF0dXMpOworI2VuZGlmCit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciogbGF5ZXIsIE5TTnVtYmVyKiBzdGF0dXMpCit7CisgICAgQVNTRVJUX1VOVVNF
RChsYXllciwgbGF5ZXIgPT0gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOworICAgIEFTU0VS
VChtX2FjdGl2ZVZpZGVvVHJhY2spOworICAgIGlmIChzdGF0dXMuaW50ZWdlclZhbHVlID09IEFW
UXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzUmVuZGVyaW5nKQorICAgICAgICBtX3Zp
ZGVvVHJhY2tNYXAuZ2V0KG1fYWN0aXZlVmlkZW9UcmFjay0+aWQoKSktPnNldFRpbWVsaW5lT2Zm
c2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpmbHVzaFJlbmRlcmVycygpCit7CisgICAgaWYgKG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgZmx1c2hdOworCisjaWYgVVNFKFJFTkRFUl9TWU5DSFJPTklaRVIpCisgICAgZm9yIChhdXRv
JiByZW5kZXJlciA6IG1fYXVkaW9SZW5kZXJlcnMudmFsdWVzKCkpCisgICAgICAgIFtyZW5kZXJl
ciBmbHVzaF07CisjZW5kaWYKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnNob3VsZEVucXVldWVWaWRlb1NhbXBsZUJ1ZmZlcigpIGNvbnN0CkBAIC0xOTYs
NDggKzUyOCwzOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnN1cmVMYXllcigp
CiB7Ci0gICAgaWYgKCFtX21lZGlhU3RyZWFtUHJpdmF0ZSB8fCBoYXZlVmlkZW9MYXllcigpKQor
ICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQ0FMYXllciAqdmlkZW9MYXllciA9IG5pbDsKLSAgICBpZiAobV9tZWRpYVN0cmVhbVByaXZh
dGUtPmFjdGl2ZVZpZGVvVHJhY2soKSkgewotICAgICAgICBtX3ZpZGVvUHJldmlld1BsYXllciA9
IG1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCktPnByZXZpZXcoKTsKLSAg
ICAgICAgaWYgKG1fdmlkZW9QcmV2aWV3UGxheWVyKQotICAgICAgICAgICAgdmlkZW9MYXllciA9
IG1fdmlkZW9QcmV2aWV3UGxheWVyLT5wbGF0Zm9ybUxheWVyKCk7Ci0gICAgfQotCi0gICAgaWYg
KCF2aWRlb0xheWVyKSB7Ci0gICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gYWRv
cHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0pOwot
ICAgICAgICB2aWRlb0xheWVyID0gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7Cisg
ICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBhZG9wdE5TKFthbGxvY0FWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVySW5zdGFuY2UoKSBpbml0XSk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAg
ICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQyBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciJdOworICAgIFtt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIl07CiAjZW5kaWYKLSAg
ICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0g
Y2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29sb3I6OmJsYWNrKTsK
KyAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyOm1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAg
bV9zeW5jaHJvbml6ZXIgPSBhZG9wdE5TKFthbGxvY0FWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hy
b25pemVySW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgICAgIFttX3N5bmNocm9uaXplciBhZGRSZW5k
ZXJlcjptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKV07CisjaWYgVVNFKFJFTkRFUl9T
WU5DSFJPTklaRVIpCisgICAgW21fc3luY2hyb25pemVyIGFkZFJlbmRlcmVyOm1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmdldCgpXTsKICNlbmRpZgotICAgIH0KIAogICAgIHJlbmRlcmluZ01v
ZGVDaGFuZ2VkKCk7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZp
ZGVvTGF5ZXIodmlkZW9MYXllciwgc25hcHBlZEludFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1l
ZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5n
ZXQoKSwgc25hcHBlZEludFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVu
dEJveFJlY3QoKSkuc2l6ZSgpKTsKICNlbmRpZgogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVyKCkKIHsKLSAgICBpZiAoIWhhdmVWaWRl
b0xheWVyKCkpCisgICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV92aWRlb1ByZXZpZXdQbGF5ZXIgPSBudWxscHRyOwotCiAgICAgaWYg
KG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKSB7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvU2Ft
cGxlUXVldWUuY2xlYXIoKTsKKyAgICAgICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIgc3RvcE9i
c2VydmluZ0xheWVyOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKICAgICAgICAg
W21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKICAg
ICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKLSNpZiBQTEFURk9STShN
QUMpCisjaWYgVVNFKFJFTkRFUl9TWU5DSFJPTklaRVIpCiAgICAgICAgIENNVGltZSBjdXJyZW50
VGltZSA9IENNVGltZWJhc2VHZXRUaW1lKFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0pOwogICAg
ICAgICBbbV9zeW5jaHJvbml6ZXIgcmVtb3ZlUmVuZGVyZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuZ2V0KCkgYXRUaW1lOmN1cnJlbnRUaW1lIHdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKEJP
T0wpIHsKICAgICAgICAgICAgIC8vIE5vLW9wLgpAQCAtMzA1LDE0ICs2MjcsMTIgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogCiBQbGF0Zm9ybUxheWVyKiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAog
ewotICAgIGlmICghaGF2ZVZpZGVvTGF5ZXIoKSB8fCBtX2Rpc3BsYXlNb2RlID09IE5vbmUpCisg
ICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciB8fCBtX2Rpc3BsYXlNb2RlID09IE5v
bmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyLT52aWRlb0lubGluZUxheWVyKCk7CiAjZWxzZQotICAgIGlmIChtX3ZpZGVv
UHJldmlld1BsYXllcikKLSAgICAgICAgcmV0dXJuIG1fdmlkZW9QcmV2aWV3UGxheWVyLT5wbGF0
Zm9ybUxheWVyKCk7CiAKICAgICByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0
KCk7CiAjZW5kaWYKQEAgLTMyMCw3ICs2NDAsNyBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0CiAKIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
RGlzcGxheU1vZGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50
RGlzcGxheU1vZGUoKSBjb25zdAogewotICAgIGlmIChtX2VuZGVkIHx8IG1faW50cmluc2ljU2l6
ZS5pc0VtcHR5KCkgfHwgIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgIWhhdmVWaWRlb0xheWVyKCkp
CisgICAgaWYgKG1fZW5kZWQgfHwgbV9pbnRyaW5zaWNTaXplLmlzRW1wdHkoKSB8fCAhbWV0YURh
dGFBdmFpbGFibGUoKSB8fCAhbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIHJl
dHVybiBOb25lOwogCiAgICAgaWYgKG1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1Ry
YWNrKCkgJiYgIW1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCktPmVuYWJs
ZWQoKSkKQEAgLTM2OCwyMyArNjg4LDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmoKICAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgbV9wbGF5aW5nIHx8
IG1fZW5kZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xvY2stPnN0YXJ0KCk7CiAgICAg
bV9wbGF5aW5nID0gdHJ1ZTsKLQotICAgIGlmIChtX3ZpZGVvUHJldmlld1BsYXllcikKLSAgICAg
ICAgbV92aWRlb1ByZXZpZXdQbGF5ZXItPnBsYXkoKTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAg
ZWxzZQotICAgICAgICBbbV9zeW5jaHJvbml6ZXIgc2V0UmF0ZToxXTsKKyNpZiBVU0UoUkVOREVS
X1NZTkNIUk9OSVpFUikKKyAgICBpZiAoIW1fc3luY2hyb25pemVyLmdldCgpLnJhdGUpCisgICAg
ICAgIFttX3N5bmNocm9uaXplciBzZXRSYXRlOjEgXTsgLy8gc3RyZWFtdGltZQorI2Vsc2UKKyAg
ICBpZiAoIW1fY2xvY2stPmlzUnVubmluZygpKQorICAgICAgICBtX2Nsb2NrLT5zdGFydCgpOwog
I2VuZGlmCiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZh
bHVlcygpKSB7Ci0gICAgICAgIGlmICghdHJhY2stPmVuYWJsZWQoKSB8fCAhdHJhY2stPnN0cmVh
bVRyYWNrKCkucHJldmlldygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgdHJh
Y2stPnN0cmVhbVRyYWNrKCkucHJldmlldygpLT5wbGF5KCk7Ci0gICAgfQotCiAgICAgbV9oYXZl
RXZlclBsYXllZCA9IHRydWU7CiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKICAg
ICAgICAgdXBkYXRlRGlzcGxheU1vZGUoKTsKQEAgLTM5OSwyNSArNzExLDEyIEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICBpZiAoIW1ldGFEYXRhQXZhaWxh
YmxlKCkgfHwgIW1fcGxheWluZyB8fCBtX2VuZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3BhdXNlZFRpbWUgPSBtX2Nsb2NrLT5jdXJyZW50VGltZSgpOworICAgIG1fcGF1c2VkVGltZSA9
IGN1cnJlbnRNZWRpYVRpbWUoKTsKICAgICBtX3BsYXlpbmcgPSBmYWxzZTsKIAotICAgIGlmICht
X3ZpZGVvUHJldmlld1BsYXllcikKLSAgICAgICAgbV92aWRlb1ByZXZpZXdQbGF5ZXItPnBhdXNl
KCk7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGVsc2UKLSAgICAgICAgW21fc3luY2hyb25pemVy
IHNldFJhdGU6MF07Ci0jZW5kaWYKLQotICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1
ZGlvVHJhY2tNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKCF0cmFjay0+ZW5hYmxlZCgpIHx8
ICF0cmFjay0+c3RyZWFtVHJhY2soKS5wcmV2aWV3KCkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICB0cmFjay0+c3RyZWFtVHJhY2soKS5wcmV2aWV3KCktPnBhdXNlKCk7Ci0gICAg
fQotCiAgICAgdXBkYXRlRGlzcGxheU1vZGUoKTsKICAgICB1cGRhdGVQYXVzZWRJbWFnZSgpOwor
ICAgIGZsdXNoUmVuZGVyZXJzKCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpwYXVzZWQoKSBjb25zdApAQCAtNDI1LDI1ICs3MjQsMTkgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIHJldHVybiAhbV9wbGF5aW5n
OwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6aW50ZXJu
YWxTZXRWb2x1bWUoZmxvYXQgdm9sdW1lLCBib29sIGludGVybmFsKQordm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCiB7Ci0g
ICAgaWYgKCFpbnRlcm5hbCkKLSAgICAgICAgbV92b2x1bWUgPSB2b2x1bWU7CisgICAgTE9HKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWb2x1bWUoJXAp
IiwgdGhpcyk7CiAKLSAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkpCisgICAgaWYgKG1fdm9s
dW1lID09IHZvbHVtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiB0
cmFjayA6IG1fYXVkaW9UcmFja01hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoIXRyYWNrLT5l
bmFibGVkKCkgfHwgIXRyYWNrLT5zdHJlYW1UcmFjaygpLnByZXZpZXcoKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIHRyYWNrLT5zdHJlYW1UcmFjaygpLnByZXZpZXcoKS0+c2V0
Vm9sdW1lKHZvbHVtZSk7Ci0gICAgfQotfQorICAgIG1fdm9sdW1lID0gdm9sdW1lOwogCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0Vm9sdW1lKGZsb2F0IHZv
bHVtZSkKLXsKLSAgICBpbnRlcm5hbFNldFZvbHVtZSh2b2x1bWUsIGZhbHNlKTsKKyNpZiBVU0Uo
UkVOREVSX1NZTkNIUk9OSVpFUikKKyAgICBmb3IgKGF1dG8mIHJlbmRlcmVyIDogbV9hdWRpb1Jl
bmRlcmVycy52YWx1ZXMoKSkKKyAgICAgICAgW3JlbmRlcmVyIHNldFZvbHVtZTp2b2x1bWVdOwor
I2VuZGlmCiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
ZXRNdXRlZChib29sIG11dGVkKQpAQCAtNDU1LDcgKzc0OCwxMCBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAKICAgICBtX211dGVkID0gbXV0ZWQ7CiAgICAgCi0g
ICAgaW50ZXJuYWxTZXRWb2x1bWUobXV0ZWQgPyAwIDogbV92b2x1bWUsIHRydWUpOworI2lmIFVT
RShSRU5ERVJfU1lOQ0hST05JWkVSKQorICAgIGZvciAoYXV0byYgcmVuZGVyZXIgOiBtX2F1ZGlv
UmVuZGVyZXJzLnZhbHVlcygpKQorICAgICAgICBbcmVuZGVyZXIgc2V0TXV0ZWQ6bXV0ZWRdOwor
I2VuZGlmCiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpo
YXNWaWRlbygpIGNvbnN0CkBAIC00ODEsNyArNzc3LDE5IEBAIE1lZGlhVGltZSBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUEKIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6Y3VycmVudE1lZGlhVGltZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3BsYXlpbmcgPyBtX2Nsb2NrLT5jdXJyZW50VGlt
ZSgpIDogbV9wYXVzZWRUaW1lKTsKKyAgICBpZiAoIW1fcGxheWluZykKKyAgICAgICAgcmV0dXJu
IG1fcGF1c2VkVGltZTsKKworICAgIHJldHVybiBzdHJlYW1UaW1lKCk7Cit9CisKK01lZGlhVGlt
ZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN0cmVhbVRpbWUoKSBjb25z
dAoreworI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQorICAgIHJldHVybiB0b01lZGlhVGlt
ZShDTVRpbWViYXNlR2V0VGltZShbbV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKSk7CisjZWxzZQor
ICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV9jbG9jay0+Y3VycmVudFRp
bWUoKSk7CisjZW5kaWYKIH0KIAogTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Om5ldHdvcmtTdGF0ZSgpIGNvbnN0CkBAIC01OTgs
MjUgKzkwNiwzNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAg
ICAgQVNTRVJUKG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBQbGF0Zm9ybVNh
bXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKICAgICBBU1NFUlQobV9tZWRpYVN0cmVhbVByaXZh
dGUpOwogCisgICAgaWYgKCFtX2hhc1JlY2VpdmVkTWVkaWEpIHsKKyAgICAgICAgbV9oYXNSZWNl
aXZlZE1lZGlhID0gdHJ1ZTsKKyAgICAgICAgdXBkYXRlUmVhZHlTdGF0ZSgpOworICAgIH0KKwor
ICAgIGlmICghbV9wbGF5aW5nIHx8IHN0cmVhbVRpbWUoKS50b0RvdWJsZSgpIDwgMCkKKyAgICAg
ICAgcmV0dXJuOworCisjaWYgVVNFKFJFTkRFUl9TWU5DSFJPTklaRVIpCisgICAgaWYgKCFDTVRp
bWViYXNlR2V0RWZmZWN0aXZlUmF0ZShbbV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKSkKKyAgICAg
ICAgcmV0dXJuOworI2VuZGlmCisKICAgICBzd2l0Y2ggKHRyYWNrLnR5cGUoKSkgewogICAgIGNh
c2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9uZToKICAgICAgICAgLy8gRG8gbm90aGluZy4KICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbzoKLSAgICAg
ICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4
MzYKKyNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKKyAgICAgICAgZW5xdWV1ZUF1ZGlvU2Ft
cGxlKHRyYWNrLCBtZWRpYVNhbXBsZSk7CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzoKLSAgICAgICAgcHJlcGFyZVZpZGVvU2FtcGxl
QnVmZmVyRnJvbVRyYWNrKHRyYWNrLCBtZWRpYVNhbXBsZSk7Ci0gICAgICAgIG1faGFzUmVjZWl2
ZWRNZWRpYSA9IHRydWU7Ci0gICAgICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7Ci0g
ICAgICAgICAgICB1cGRhdGVSZWFkeVN0YXRlKCk7Ci0gICAgICAgIH0pOworICAgICAgICBpZiAo
JnRyYWNrID09IG1fYWN0aXZlVmlkZW9UcmFjay5nZXQoKSkKKyAgICAgICAgICAgIGVucXVldWVW
aWRlb1NhbXBsZSh0cmFjaywgbWVkaWFTYW1wbGUpOwogICAgICAgICBicmVhazsKICAgICB9CiB9
CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkK
LQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxh
eWVyLCBjb21wbGV0aW9uSGFuZGxlcik7CkBAIC02MjYsMTEgKzk0NSwxNiBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiB7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGZyYW1lKTsKIH0KLQogI2VuZGlm
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBSZWZULCB0eXBlbmFtZSBQYXNzUmVmVD4KLXZvaWQgdXBk
YXRlVHJhY2tzT2ZUeXBlKEhhc2hNYXA8U3RyaW5nLCBSZWZUPiYgdHJhY2tNYXAsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgdHJhY2tUeXBlLCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZVZlY3Rv
ciYgY3VycmVudFRyYWNrcywgUmVmVCAoKml0ZW1GYWN0b3J5KShNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYpLCBNZWRpYVBsYXllciogcGxheWVyLCB2b2lkIChNZWRpYVBsYXllcjo6KnJlbW92ZWRG
dW5jdGlvbikoUGFzc1JlZlQpLCB2b2lkIChNZWRpYVBsYXllcjo6KmFkZGVkRnVuY3Rpb24pKFBh
c3NSZWZUKSwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlZlQsIGludCk+IGNvbmZpZ3VyZUNhbGxiYWNr
LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIqIHRyYWNrT2JzZXJ2ZXIpCit0eXBl
ZGVmIGVudW0geworICAgIEFkZCwKKyAgICBSZW1vdmUsCisgICAgQ29uZmlndXJlCit9IFRyYWNr
U3RhdGU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZWZUPgordm9pZCB1cGRhdGVUcmFja3NPZlR5
cGUoSGFzaE1hcDxTdHJpbmcsIFJlZlQ+JiB0cmFja01hcCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZSB0cmFja1R5cGUsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yJiBjdXJyZW50VHJh
Y2tzLCBSZWZUICgqaXRlbUZhY3RvcnkpKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiksIGNvbnN0
IEZ1bmN0aW9uPHZvaWQoUmVmVCwgaW50LCBUcmFja1N0YXRlKT4mIGNvbmZpZ3VyZVRyYWNrKQog
ewogICAgIFZlY3RvcjxSZWZUPiByZW1vdmVkVHJhY2tzOwogICAgIFZlY3RvcjxSZWZUPiBhZGRl
ZFRyYWNrczsKQEAgLTY2MCw0MSArOTg0LDk2IEBAIHZvaWQgdXBkYXRlVHJhY2tzT2ZUeXBlKEhh
c2hNYXA8U3RyaW5nLCAKICAgICB9CiAKICAgICBpbnQgaW5kZXggPSAwOworICAgIGZvciAoYXV0
byYgdHJhY2sgOiByZW1vdmVkVHJhY2tzKQorICAgICAgICBjb25maWd1cmVUcmFjayh0cmFjaywg
aW5kZXgrKywgVHJhY2tTdGF0ZTo6UmVtb3ZlKTsKKworICAgIGluZGV4ID0gMDsKKyAgICBmb3Ig
KGF1dG8mIHRyYWNrIDogYWRkZWRUcmFja3MpCisgICAgICAgIGNvbmZpZ3VyZVRyYWNrKHRyYWNr
LCBpbmRleCsrLCBUcmFja1N0YXRlOjpBZGQpOworCisgICAgaW5kZXggPSAwOwogICAgIGZvciAo
Y29uc3QgYXV0byYgdHJhY2sgOiB0cmFja01hcC52YWx1ZXMoKSkKLSAgICAgICAgY29uZmlndXJl
Q2FsbGJhY2sodHJhY2ssIGluZGV4KyspOworICAgICAgICBjb25maWd1cmVUcmFjayh0cmFjaywg
aW5kZXgrKywgVHJhY2tTdGF0ZTo6Q29uZmlndXJlKTsKK30KIAotICAgIGZvciAoYXV0byYgdHJh
Y2sgOiByZW1vdmVkVHJhY2tzKSB7Ci0gICAgICAgIChwbGF5ZXItPipyZW1vdmVkRnVuY3Rpb24p
KCp0cmFjayk7Ci0gICAgICAgIHRyYWNrLT5zdHJlYW1UcmFjaygpLnJlbW92ZU9ic2VydmVyKCp0
cmFja09ic2VydmVyKTsKLSAgICB9Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6Y2hlY2tTZWxlY3RlZFZpZGVvVHJhY2soKQoreworICAgIGlmIChtX3BlbmRpbmdT
ZWxlY3RlZFRyYWNrQ2hlY2spCisgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byYgdHJh
Y2sgOiBhZGRlZFRyYWNrcykgewotICAgICAgICAocGxheWVyLT4qYWRkZWRGdW5jdGlvbikoKnRy
YWNrKTsKLSAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCkuYWRkT2JzZXJ2ZXIoKnRyYWNrT2Jz
ZXJ2ZXIpOwotICAgIH0KKyAgICBtX3BlbmRpbmdTZWxlY3RlZFRyYWNrQ2hlY2sgPSB0cnVlOwor
ICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CisgICAgICAgIGJvb2wgaGlkZVZpZGVv
TGF5ZXIgPSB0cnVlOworICAgICAgICBtX2FjdGl2ZVZpZGVvVHJhY2sgPSBudWxscHRyOworICAg
ICAgICBpZiAobV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKSkgeworICAg
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFjayA6IG1fdmlkZW9UcmFja01hcC52YWx1ZXMo
KSkgeworICAgICAgICAgICAgICAgIGlmICgmdHJhY2stPnN0cmVhbVRyYWNrKCkgPT0gbV9tZWRp
YVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKSkgeworICAgICAgICAgICAgICAgICAg
ICBtX2FjdGl2ZVZpZGVvVHJhY2sgPSBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlkZW9U
cmFjaygpOworICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2stPnNlbGVjdGVkKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBoaWRlVmlkZW9MYXllciA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBlbnN1cmVMYXllcigpOworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlVmlkZW9MYXllcjsKKyAgICAgICAgbV9wZW5kaW5n
U2VsZWN0ZWRUcmFja0NoZWNrID0gZmFsc2U7CisgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVUcmFja3MoKQogewogICAgIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yIGN1cnJlbnRUcmFja3MgPSBtX21lZGlhU3RyZWFtUHJp
dmF0ZS0+dHJhY2tzKCk7CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW0+LCBpbnQpPiBlbmFibGVBdWRpb1RyYWNrID0gW3RoaXNdKGF1
dG8gdHJhY2ssIGludCBpbmRleCkKKyAgICBGdW5jdGlvbjx2b2lkKFJlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtPiwgaW50LCBUcmFja1N0YXRlKT4gIHNldEF1ZGlvVHJhY2tTdGF0
ZSA9IFt0aGlzXShhdXRvIHRyYWNrLCBpbnQgaW5kZXgsIFRyYWNrU3RhdGUgc3RhdGUpCiAgICAg
ewotICAgICAgICB0cmFjay0+c2V0VHJhY2tJbmRleChpbmRleCk7Ci0gICAgICAgIHRyYWNrLT5z
ZXRFbmFibGVkKHRyYWNrLT5zdHJlYW1UcmFjaygpLmVuYWJsZWQoKSAmJiAhdHJhY2stPnN0cmVh
bVRyYWNrKCkubXV0ZWQoKSk7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2Fz
ZSBUcmFja1N0YXRlOjpSZW1vdmU6CisgICAgICAgICAgICB0cmFjay0+c3RyZWFtVHJhY2soKS5y
ZW1vdmVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICBtX3BsYXllci0+cmVtb3ZlQXVkaW9U
cmFjaygqdHJhY2spOworICAgICAgICAgICAgZGVzdHJveUF1ZGlvUmVuZGVyZXIodHJhY2stPmlk
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhY2tTdGF0ZTo6QWRkOgor
ICAgICAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCkuYWRkT2JzZXJ2ZXIoKnRoaXMpOworICAg
ICAgICAgICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soKnRyYWNrKTsKKyAgICAgICAgICAgIGNy
ZWF0ZUF1ZGlvUmVuZGVyZXIodHJhY2stPmlkKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVHJhY2tTdGF0ZTo6Q29uZmlndXJlOgorICAgICAgICAgICAgdHJhY2stPnNldFRy
YWNrSW5kZXgoaW5kZXgpOworICAgICAgICAgICAgYm9vbCBlbmFibGVkID0gdHJhY2stPnN0cmVh
bVRyYWNrKCkuZW5hYmxlZCgpICYmICF0cmFjay0+c3RyZWFtVHJhY2soKS5tdXRlZCgpOworICAg
ICAgICAgICAgdHJhY2stPnNldEVuYWJsZWQoZW5hYmxlZCk7CisjaWYgVVNFKFJFTkRFUl9TWU5D
SFJPTklaRVIpCisgICAgICAgICAgICBhdXRvIHJlbmRlcmVyID0gbV9hdWRpb1JlbmRlcmVycy5n
ZXQodHJhY2stPmlkKCkpOworICAgICAgICAgICAgQVNTRVJUKHJlbmRlcmVyKTsKKyAgICAgICAg
ICAgIHJlbmRlcmVyLmdldCgpLm11dGVkID0gIWVuYWJsZWQ7CisjZW5kaWYKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgfTsKLSAgICB1cGRhdGVUcmFja3NPZlR5cGUobV9hdWRp
b1RyYWNrTWFwLCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgY3VycmVudFRyYWNrcywgJkF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OmNyZWF0ZSwgbV9wbGF5ZXIsICZNZWRpYVBsYXll
cjo6cmVtb3ZlQXVkaW9UcmFjaywgJk1lZGlhUGxheWVyOjphZGRBdWRpb1RyYWNrLCBlbmFibGVB
dWRpb1RyYWNrLCAoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyKikgdGhpcyk7Cisg
ICAgdXBkYXRlVHJhY2tzT2ZUeXBlKG1fYXVkaW9UcmFja01hcCwgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6QXVkaW8sIGN1cnJlbnRUcmFja3MsICZBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpj
cmVhdGUsIHNldEF1ZGlvVHJhY2tTdGF0ZSk7CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVm
UHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+LCBpbnQpPiBlbmFibGVWaWRlb1RyYWNr
ID0gW3RoaXNdKGF1dG8gdHJhY2ssIGludCBpbmRleCkKKyAgICBGdW5jdGlvbjx2b2lkKFJlZlB0
cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiwgaW50LCBUcmFja1N0YXRlKT4gc2V0Vmlk
ZW9UcmFja1N0YXRlID0gWyZdKGF1dG8gdHJhY2ssIGludCBpbmRleCwgVHJhY2tTdGF0ZSBzdGF0
ZSkKICAgICB7Ci0gICAgICAgIHRyYWNrLT5zZXRUcmFja0luZGV4KGluZGV4KTsKLSAgICAgICAg
Ym9vbCBzZWxlY3RlZCA9ICZ0cmFjay0+c3RyZWFtVHJhY2soKSA9PSBtX21lZGlhU3RyZWFtUHJp
dmF0ZS0+YWN0aXZlVmlkZW9UcmFjaygpOwotICAgICAgICB0cmFjay0+c2V0U2VsZWN0ZWQoc2Vs
ZWN0ZWQpOwotCi0gICAgICAgIGlmIChzZWxlY3RlZCkKLSAgICAgICAgICAgIGVuc3VyZUxheWVy
KCk7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBUcmFja1N0YXRlOjpS
ZW1vdmU6CisgICAgICAgICAgICB0cmFjay0+c3RyZWFtVHJhY2soKS5yZW1vdmVPYnNlcnZlcigq
dGhpcyk7CisgICAgICAgICAgICBtX3BsYXllci0+cmVtb3ZlVmlkZW9UcmFjaygqdHJhY2spOwor
ICAgICAgICAgICAgY2hlY2tTZWxlY3RlZFZpZGVvVHJhY2soKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFRyYWNrU3RhdGU6OkFkZDoKKyAgICAgICAgICAgIHRyYWNrLT5zdHJl
YW1UcmFjaygpLmFkZE9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgIG1fcGxheWVyLT5hZGRW
aWRlb1RyYWNrKCp0cmFjayk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFj
a1N0YXRlOjpDb25maWd1cmU6CisgICAgICAgICAgICB0cmFjay0+c2V0VHJhY2tJbmRleChpbmRl
eCk7CisgICAgICAgICAgICBib29sIHNlbGVjdGVkID0gJnRyYWNrLT5zdHJlYW1UcmFjaygpID09
IG1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCk7CisgICAgICAgICAgICB0
cmFjay0+c2V0U2VsZWN0ZWQoc2VsZWN0ZWQpOworICAgICAgICAgICAgY2hlY2tTZWxlY3RlZFZp
ZGVvVHJhY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfTsKLSAgICB1
cGRhdGVUcmFja3NPZlR5cGUobV92aWRlb1RyYWNrTWFwLCBSZWFsdGltZU1lZGlhU291cmNlOjpW
aWRlbywgY3VycmVudFRyYWNrcywgJlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OmNyZWF0
ZSwgbV9wbGF5ZXIsICZNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFjaywgJk1lZGlhUGxheWVy
OjphZGRWaWRlb1RyYWNrLCBlbmFibGVWaWRlb1RyYWNrLCAoTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6Ok9ic2VydmVyKikgdGhpcyk7CisgICAgdXBkYXRlVHJhY2tzT2ZUeXBlKG1fdmlkZW9UcmFj
a01hcCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIGN1cnJlbnRUcmFja3MsICZWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUsIHNldFZpZGVvVHJhY2tTdGF0ZSk7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6c2Vla2FibGUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQkocmV2aXNpb24gMjEwMzU2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMSBAQCBNZWRpYVRpbWUg
TWVkaWFTYW1wbGVBVkZPYmpDOjpwcmVzZW50YXRpCiAgICAgcmV0dXJuIHRvTWVkaWFUaW1lKENN
U2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKG1fc2FtcGxlLmdldCgpKSk7CiB9
CiAKK01lZGlhVGltZSBNZWRpYVNhbXBsZUFWRk9iakM6Om91dHB1dFByZXNlbnRhdGlvblRpbWUo
KSBjb25zdAoreworICAgIHJldHVybiB0b01lZGlhVGltZShDTVNhbXBsZUJ1ZmZlckdldE91dHB1
dFByZXNlbnRhdGlvblRpbWVTdGFtcChtX3NhbXBsZS5nZXQoKSkpOworfQorCiBNZWRpYVRpbWUg
TWVkaWFTYW1wbGVBVkZPYmpDOjpkZWNvZGVUaW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gdG9N
ZWRpYVRpbWUoQ01TYW1wbGVCdWZmZXJHZXREZWNvZGVUaW1lU3RhbXAobV9zYW1wbGUuZ2V0KCkp
KTsKQEAgLTQ3LDYgKzUyLDExIEBAIE1lZGlhVGltZSBNZWRpYVNhbXBsZUFWRk9iakM6OmR1cmF0
aW9uKCkKICAgICByZXR1cm4gdG9NZWRpYVRpbWUoQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbiht
X3NhbXBsZS5nZXQoKSkpOwogfQogCitNZWRpYVRpbWUgTWVkaWFTYW1wbGVBVkZPYmpDOjpvdXRw
dXREdXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvTWVkaWFUaW1lKENNU2FtcGxlQnVm
ZmVyR2V0T3V0cHV0RHVyYXRpb24obV9zYW1wbGUuZ2V0KCkpKTsKK30KKwogc2l6ZV90IE1lZGlh
U2FtcGxlQVZGT2JqQzo6c2l6ZUluQnl0ZXMoKSBjb25zdAogewogICAgIHJldHVybiBDTVNhbXBs
ZUJ1ZmZlckdldFRvdGFsU2FtcGxlU2l6ZShtX3NhbXBsZS5nZXQoKSk7CkBAIC0xMTEsNyArMTIx
LDcgQEAgRmxvYXRTaXplIE1lZGlhU2FtcGxlQVZGT2JqQzo6cHJlc2VudGF0aQogCiB2b2lkIE1l
ZGlhU2FtcGxlQVZGT2JqQzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91
dC5wcmludCgie1BUUygiLCBwcmVzZW50YXRpb25UaW1lKCksICIpLCBEVFMoIiwgZGVjb2RlVGlt
ZSgpLCAiKSwgZHVyYXRpb24oIiwgZHVyYXRpb24oKSwgIiksIGZsYWdzKCIsIChpbnQpZmxhZ3Mo
KSwgIiksIHByZXNlbnRhdGlvblNpemUoIiwgcHJlc2VudGF0aW9uU2l6ZSgpLndpZHRoKCksICJ4
IiwgcHJlc2VudGF0aW9uU2l6ZSgpLmhlaWdodCgpLCAiKX0iKTsKKyAgICBvdXQucHJpbnQoIntQ
VFMoIiwgcHJlc2VudGF0aW9uVGltZSgpLCAiKSwgT1BUUygiLCBvdXRwdXRQcmVzZW50YXRpb25U
aW1lKCksICIpLCBEVFMoIiwgZGVjb2RlVGltZSgpLCAiKSwgZHVyYXRpb24oIiwgZHVyYXRpb24o
KSwgIiksIGZsYWdzKCIsIChpbnQpZmxhZ3MoKSwgIiksIHByZXNlbnRhdGlvblNpemUoIiwgcHJl
c2VudGF0aW9uU2l6ZSgpLndpZHRoKCksICJ4IiwgcHJlc2VudGF0aW9uU2l6ZSgpLmhlaWdodCgp
LCAiKX0iKTsKIH0KIAogdm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6Om9mZnNldFRpbWVzdGFtcHNC
eShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtLmgJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsMTEgKzUwLDE1IEBAIHB1YmxpYzoKIAogICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlJiBzdHJlYW1UcmFjaygpIHsgcmV0dXJuIG1fc3RyZWFtVHJhY2suZ2V0KCk7IH0KIAorICAg
IE1lZGlhVGltZSB0aW1lbGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZWxpbmVPZmZz
ZXQ7IH0KKyAgICB2b2lkIHNldFRpbWVsaW5lT2Zmc2V0KGNvbnN0IE1lZGlhVGltZSYgb2Zmc2V0
KSB7IG1fdGltZWxpbmVPZmZzZXQgPSBvZmZzZXQ7IH0KKwogcHJpdmF0ZToKICAgICBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKICAg
ICAgICAgOiBtX3N0cmVhbVRyYWNrKHRyYWNrKQogICAgICAgICAsIG1faWQodHJhY2suaWQoKSkK
ICAgICAgICAgLCBtX2xhYmVsKHRyYWNrLmxhYmVsKCkpCisgICAgICAgICwgbV90aW1lbGluZU9m
ZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpCiAgICAgewogICAgIH0KIApAQCAtNjIsNiAr
NjYsNyBAQCBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX2lkOwogICAgIEF0b21pY1N0cmlu
ZyBtX2xhYmVsOwogICAgIGludCBtX2luZGV4IHsgMCB9OworICAgIE1lZGlhVGltZSBtX3RpbWVs
aW5lT2Zmc2V0OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAko
cmV2aXNpb24gMjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsOSArMTAw
LDYgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0RW5hYmxlZAogICAgIC8vIEFs
d2F5cyB1cGRhdGUgdGhlIGVuYWJsZWQgc3RhdGUgcmVnYXJkbGVzcyBvZiB0aGUgdHJhY2sgYmVp
bmcgZW5kZWQuCiAgICAgbV9pc0VuYWJsZWQgPSBlbmFibGVkOwogCi0gICAgaWYgKG1fcHJldmll
dykKLSAgICAgICAgbV9wcmV2aWV3LT5zZXRFbmFibGVkKGVuYWJsZWQpOwotCiAgICAgZm9yIChh
dXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci0+dHJhY2tFbmFi
bGVkQ2hhbmdlZCgqdGhpcyk7CiB9CkBAIC0xMTcsNyArMTE0LDYgQEAgdm9pZCBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6ZW5kVHJhY2soKQogICAgIC8vIHRyYWNrRW5kZWQgbWV0aG9kIG9uY2Uu
CiAgICAgbV9pc0VuZGVkID0gdHJ1ZTsKIAotICAgIG1fcHJldmlldyA9IG51bGxwdHI7CiAgICAg
bV9zb3VyY2UtPnJlcXVlc3RTdG9wKHRoaXMpOwogCiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6
IG1fb2JzZXJ2ZXJzKQpAQCAtMTYzLDE1ICsxNTksNiBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpwYWludEN1cnJlCiAgICAgfQogfQogCi1SZWFsdGltZU1lZGlhU291cmNlUHJldmll
dyogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnByZXZpZXcoKQotewotICAgIGlmIChtX3ByZXZp
ZXcpCi0gICAgICAgIHJldHVybiBtX3ByZXZpZXcuZ2V0KCk7Ci0KLSAgICBtX3ByZXZpZXcgPSBt
X3NvdXJjZS0+cHJldmlldygpOwotICAgIHJldHVybiBtX3ByZXZpZXcuZ2V0KCk7Ci19Ci0KIHZv
aWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFD
b25zdHJhaW50cyYgY29uc3RyYWludHMsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlN1Y2Nlc3NIYW5k
bGVyIHN1Y2Nlc3NIYW5kbGVyLCBSZWFsdGltZU1lZGlhU291cmNlOjpGYWlsdXJlSGFuZGxlciBm
YWlsdXJlSGFuZGxlcikKIHsKICAgICBtX3NvdXJjZS0+YXBwbHlDb25zdHJhaW50cyhjb25zdHJh
aW50cywgc3VjY2Vzc0hhbmRsZXIsIGZhaWx1cmVIYW5kbGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuaAkocmV2aXNpb24gMjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtOTEsNyArOTEsNiBAQCBwdWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9T
b3VyY2VQcm92aWRlcigpOwogCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBSZWFsdGltZU1lZGlhU291
cmNlUHJldmlldyogcHJldmlldygpOwogCiBwcml2YXRlOgogICAgIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmLCBTdHJpbmcmJiBpZCk7CkBAIC0xMDUs
NyArMTA0LDYgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJz
OwogICAgIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBtX3NvdXJjZTsKLSAgICBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZVByZXZpZXc+IG1fcHJldmlldzsKIAogICAgIFN0cmluZyBtX2lkOwog
ICAgIGJvb2wgbV9pc0VuYWJsZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCShyZXZpc2lvbiAy
MTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJN
ZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNv
dXJjZVByZXZpZXcuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtMTI5LDcgKzEyOCw2IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjdXJyZW50RnJhbWVJbWFnZSgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgeyB9Ci0gICAgdmly
dHVhbCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc+IHByZXZpZXcoKSB7IHJldHVy
biBudWxscHRyOyB9CiAKICAgICB2b2lkIHNldFdpZHRoKGludCk7CiAgICAgdm9pZCBzZXRIZWln
aHQoaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaAkocmV2aXNpb24g
MjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZVByZXZpZXcuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiAg
ICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0
aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSZWFsdGltZU1lZGlhU291
cmNlUHJldmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3
PiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcoKSB7
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBwYXVzZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKSA9
IDA7Ci0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShkb3VibGUpIGNvbnN0ID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX3dlYWtQdHJGYWN0b3J5LnJldm9rZUFsbCgp
OyB9Ci0KLSAgICBXZWFrUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3PiBjcmVhdGVXZWFr
UHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KLQotcHJv
dGVjdGVkOgotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3KCkKLSAgICAgICAgOiBtX3dl
YWtQdHJGYWN0b3J5KHRoaXMpCi0gICAgewotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWFrUHRy
RmFjdG9yeTxSZWFsdGltZU1lZGlhU291cmNlUHJldmlldz4gbV93ZWFrUHRyRmFjdG9yeTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgJKHJldmlzaW9u
IDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjggKzQwLDMzIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbShzdHJlYW1UcmFjaykpOwogICAgIH0KIAotICAgIEtpbmQga2luZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIEtpbmQ6Ok1haW47IH0KLSAgICBBdG9taWNTdHJpbmcgaWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgQXRvbWljU3RyaW5nIGxhYmVsKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIEF0b21pY1N0cmluZyBsYW5n
dWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQotICAgIGludCB0cmFj
a0luZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRleDsgfQotCiAgICAgdm9pZCBz
ZXRUcmFja0luZGV4KGludCBpbmRleCkgeyBtX2luZGV4ID0gaW5kZXg7IH0KIAogICAgIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiBzdHJlYW1UcmFjaygpIHsgcmV0dXJuIG1fc3RyZWFtVHJhY2su
Z2V0KCk7IH0KIAorICAgIE1lZGlhVGltZSB0aW1lbGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGltZWxpbmVPZmZzZXQ7IH0KKyAgICB2b2lkIHNldFRpbWVsaW5lT2Zmc2V0KGNvbnN0IE1l
ZGlhVGltZSYgb2Zmc2V0KSB7IG1fdGltZWxpbmVPZmZzZXQgPSBvZmZzZXQ7IH0KKwogcHJpdmF0
ZToKICAgICBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlJiB0cmFjaykKICAgICAgICAgOiBtX3N0cmVhbVRyYWNrKHRyYWNrKQogICAgICAgICAsIG1f
aWQodHJhY2suaWQoKSkKICAgICAgICAgLCBtX2xhYmVsKHRyYWNrLmxhYmVsKCkpCisgICAgICAg
ICwgbV90aW1lbGluZU9mZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpCiAgICAgewogICAg
IH0KIAorICAgIEtpbmQga2luZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEtpbmQ6Ok1haW47IH0K
KyAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkOyB9CisgICAg
QXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sYWJlbDsgfQorICAg
IEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGVtcHR5QXRvbTsg
fQorICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmRleDsgfQor
CiAgICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX3N0cmVhbVRyYWNrOwogICAgIEF0
b21pY1N0cmluZyBtX2lkOwogICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOwogICAgIGludCBtX2lu
ZGV4IHsgMCB9OworICAgIE1lZGlhVGltZSBtX3RpbWVsaW5lT2Zmc2V0OwogfTsKIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJl
U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmgJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjcsNyArNjcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2h1
dGRvd25DYXB0dXJlU2Vzc2lvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU2V0dGluZ3Mo
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgb3ZlcnJpZGU7CiAgICAgQXVkaW9Tb3VyY2VQ
cm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxBVk1l
ZGlhU291cmNlUHJldmlldz4gY3JlYXRlUHJldmlldygpIGZpbmFsOwogCiAgICAgUmV0YWluUHRy
PEFWQ2FwdHVyZUNvbm5lY3Rpb24+IG1fYXVkaW9Db25uZWN0aW9uOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
QXVkaW9DYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgIk1lZGlhQ29uc3RyYWludHMuaCIKLSNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgiCisjaW1w
b3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKICNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncy5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNpbXBvcnQgIldlYkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLmgiCkBAIC00OSwyMiArNDksMTUgQEAgdHlwZWRlZiBBVkNhcHR1
cmVEZXZpY2UgQVZDYXB0dXJlRGV2aWNlVAogdHlwZWRlZiBBVkNhcHR1cmVEZXZpY2VJbnB1dCBB
VkNhcHR1cmVEZXZpY2VJbnB1dFR5cGU7CiB0eXBlZGVmIEFWQ2FwdHVyZU91dHB1dCBBVkNhcHR1
cmVPdXRwdXRUeXBlOwogCi0jaWYgIVBMQVRGT1JNKElPUykKLXR5cGVkZWYgQVZDYXB0dXJlQXVk
aW9QcmV2aWV3T3V0cHV0IEFWQ2FwdHVyZUF1ZGlvUHJldmlld091dHB1dFR5cGU7Ci0jZW5kaWYK
LQogU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCiAKIFNPRlRfTElO
S19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZUF1ZGlvQ2hhbm5lbCkKIFNPRlRfTElOS19D
TEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZUF1ZGlvRGF0YU91dHB1dCkKLVNPRlRfTElOS19D
TEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZUF1ZGlvUHJldmlld091dHB1dCkKIFNPRlRfTElO
S19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZUNvbm5lY3Rpb24pCiBTT0ZUX0xJTktfQ0xB
U1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2UpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3Vu
ZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VJbnB1dCkKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRp
b24sIEFWQ2FwdHVyZU91dHB1dCkKIAotI2RlZmluZSBBVkNhcHR1cmVBdWRpb1ByZXZpZXdPdXRw
dXQgZ2V0QVZDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0Q2xhc3MoKQotCiAjZGVmaW5lIEFWQ2Fw
dHVyZUF1ZGlvQ2hhbm5lbCBnZXRBVkNhcHR1cmVBdWRpb0NoYW5uZWxDbGFzcygpCiAjZGVmaW5l
IEFWQ2FwdHVyZUF1ZGlvRGF0YU91dHB1dCBnZXRBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXRDbGFz
cygpCiAjZGVmaW5lIEFWQ2FwdHVyZUNvbm5lY3Rpb24gZ2V0QVZDYXB0dXJlQ29ubmVjdGlvbkNs
YXNzKCkKQEAgLTgwLDc5ICs3Myw2IEBAIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwg
QVZNZWRpYVQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIVBMQVRGT1JNKElPUykKLWNs
YXNzIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OiBwdWJsaWMgQVZNZWRpYVNvdXJjZVByZXZpZXcgewot
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IGNyZWF0ZShB
VkNhcHR1cmVTZXNzaW9uICosIEFWQXVkaW9DYXB0dXJlU291cmNlKik7Ci0KLXByaXZhdGU6Ci0g
ICAgQVZBdWRpb1NvdXJjZVByZXZpZXcoQVZDYXB0dXJlU2Vzc2lvbiAqLCBBVkF1ZGlvQ2FwdHVy
ZVNvdXJjZSopOwotCi0gICAgdm9pZCBpbnZhbGlkYXRlKCkgZmluYWw7Ci0KLSAgICB2b2lkIHBs
YXkoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHBhdXNlKCkgY29uc3QgZmluYWw7Ci0gICAgdm9p
ZCBzZXRWb2x1bWUoZG91YmxlKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNldEVuYWJsZWQoYm9v
bCkgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIHZvaWQgdXBkYXRlU3RhdGUoKSBjb25zdDsKLQot
ICAgIFJldGFpblB0cjxBVkNhcHR1cmVBdWRpb1ByZXZpZXdPdXRwdXRUeXBlPiBtX2F1ZGlvUHJl
dmlld091dHB1dDsKLSAgICBtdXRhYmxlIGRvdWJsZSBtX3ZvbHVtZSB7IDEgfTsKLSAgICBtdXRh
YmxlIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9OwotICAgIG11dGFibGUgYm9vbCBtX2VuYWJsZWQg
eyB0cnVlIH07Ci19OwotCi1SZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IEFWQXVkaW9Tb3Vy
Y2VQcmV2aWV3OjpjcmVhdGUoQVZDYXB0dXJlU2Vzc2lvbiAqc2Vzc2lvbiwgQVZBdWRpb0NhcHR1
cmVTb3VyY2UqIHBhcmVudCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFWQXVkaW9Tb3Vy
Y2VQcmV2aWV3KHNlc3Npb24sIHBhcmVudCkpOwotfQotCi1BVkF1ZGlvU291cmNlUHJldmlldzo6
QVZBdWRpb1NvdXJjZVByZXZpZXcoQVZDYXB0dXJlU2Vzc2lvbiAqc2Vzc2lvbiwgQVZBdWRpb0Nh
cHR1cmVTb3VyY2UqIHBhcmVudCkKLSAgICA6IEFWTWVkaWFTb3VyY2VQcmV2aWV3KHBhcmVudCkK
LXsKLSAgICBtX2F1ZGlvUHJldmlld091dHB1dCA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlQXVk
aW9QcmV2aWV3T3V0cHV0SW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgc2V0Vm9sdW1lKDEpOwotICAg
IFtzZXNzaW9uIGFkZE91dHB1dDptX2F1ZGlvUHJldmlld091dHB1dC5nZXQoKV07Ci19Ci0KLXZv
aWQgQVZBdWRpb1NvdXJjZVByZXZpZXc6OmludmFsaWRhdGUoKQotewotICAgIG1fYXVkaW9QcmV2
aWV3T3V0cHV0ID0gbnVsbHB0cjsKLSAgICBBVk1lZGlhU291cmNlUHJldmlldzo6aW52YWxpZGF0
ZSgpOwotfQotCi12b2lkIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpwbGF5KCkgY29uc3QKLXsKLSAg
ICBtX3BhdXNlZCA9IGZhbHNlOwotICAgIHVwZGF0ZVN0YXRlKCk7Ci19Ci0KLXZvaWQgQVZBdWRp
b1NvdXJjZVByZXZpZXc6OnBhdXNlKCkgY29uc3QKLXsKLSAgICBtX3BhdXNlZCA9IHRydWU7Ci0g
ICAgdXBkYXRlU3RhdGUoKTsKLX0KLQotdm9pZCBBVkF1ZGlvU291cmNlUHJldmlldzo6c2V0RW5h
YmxlZChib29sIGVuYWJsZWQpCi17Ci0gICAgbV9lbmFibGVkID0gZW5hYmxlZDsKLSAgICB1cGRh
dGVTdGF0ZSgpOwotfQotCi12b2lkIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpzZXRWb2x1bWUoZG91
YmxlIHZvbHVtZSkgY29uc3QKLXsKLSAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKLSAgICBtX2F1ZGlv
UHJldmlld091dHB1dC5nZXQoKS52b2x1bWUgPSB2b2x1bWU7Ci19Ci0KLXZvaWQgQVZBdWRpb1Nv
dXJjZVByZXZpZXc6OnVwZGF0ZVN0YXRlKCkgY29uc3QKLXsKLSAgICBtX2F1ZGlvUHJldmlld091
dHB1dC5nZXQoKS52b2x1bWUgPSAoIW1fZW5hYmxlZCB8fCBtX3BhdXNlZCkgPyAwIDogbV92b2x1
bWU7Ci19Ci0jZW5kaWYKLQogUmVmUHRyPEFWTWVkaWFDYXB0dXJlU291cmNlPiBBVkF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6Y3JlYXRlKEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMsIFN0
cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCiB7CiAgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihu
ZXcgQVZBdWRpb0NhcHR1cmVTb3VyY2UoZGV2aWNlLCBpZCkpOwpAQCAtMTkwLDcgKzExMCw3IEBA
IHZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVTdXAKIAogdm9pZCBBVkF1ZGlv
Q2FwdHVyZVNvdXJjZTo6dXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
JiBzZXR0aW5ncykKIHsKLSAgICAvLyBGSVhNRTogdXNlIFtBVkNhcHR1cmVBdWRpb1ByZXZpZXdP
dXRwdXQgdm9sdW1lXSBmb3Igdm9sdW1lCisgICAgLy8gRklYTUU6IHN1cHBvcnQgdm9sdW1lCiAK
ICAgICBzZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKIH0KQEAgLTI3Niw2ICsxOTYsMTEgQEAg
dm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1dAogICAgIGlmICghZm9ybWF0
RGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybjsKIAorICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4gYnVmZmVyID0gc2FtcGxlQnVmZmVyOworICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNr
KFt0aGlzLCBidWZmZXJdIHsKKyAgICAgICAgbWVkaWFEYXRhVXBkYXRlZChNZWRpYVNhbXBsZUFW
Rk9iakM6OmNyZWF0ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9KTsKKwogICAgIHN0ZDo6dW5pcXVl
X2xvY2s8TG9jaz4gbG9jayhtX2xvY2ssIHN0ZDo6dHJ5X3RvX2xvY2spOwogICAgIGlmICghbG9j
ay5vd25zX2xvY2soKSkgewogICAgICAgICAvLyBGYWlsZWQgdG8gYWNxdWlyZSB0aGUgbG9jaywg
anVzdCByZXR1cm4gaW5zdGVhZCBvZiBibG9ja2luZy4KQEAgLTMwNCwxNSArMjI5LDYgQEAgQXVk
aW9Tb3VyY2VQcm92aWRlciogQVZBdWRpb0NhcHR1cmVTb3VyYwogICAgIHJldHVybiBtX2F1ZGlv
U291cmNlUHJvdmlkZXIuZ2V0KCk7CiB9CiAKLVJlZlB0cjxBVk1lZGlhU291cmNlUHJldmlldz4g
QVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZVByZXZpZXcoKQotewotI2lmICFQTEFURk9STShJ
T1MpCi0gICAgcmV0dXJuIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpjcmVhdGUoc2Vzc2lvbigpLCB0
aGlzKTsKLSNlbHNlCi0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLX0KLSAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVT
b3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAkocmV2aXNpb24gMjEwMzU2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00NywxOSArNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEFWTWVkaWFDYXB0dXJlU291cmNlOwogCi1jbGFzcyBBVk1lZGlhU291cmNlUHJldmll
dzogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3IHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5BVk1lZGlhU291cmNlUHJldmlldygpOwotCi0gICAgdm9pZCBpbnZhbGlkYXRlKCkgb3Zl
cnJpZGU7Ci0KLXByb3RlY3RlZDoKLSAgICBBVk1lZGlhU291cmNlUHJldmlldyhBVk1lZGlhQ2Fw
dHVyZVNvdXJjZSopOwotCi1wcml2YXRlOgotICAgIFdlYWtQdHI8QVZNZWRpYUNhcHR1cmVTb3Vy
Y2U+IG1fcGFyZW50OwotfTsKLQogY2xhc3MgQVZNZWRpYUNhcHR1cmVTb3VyY2UgOiBwdWJsaWMg
UmVhbHRpbWVNZWRpYVNvdXJjZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QVZNZWRpYUNhcHR1
cmVTb3VyY2UoKTsKQEAgLTc2LDEwICs2Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BQcm9k
dWNpbmdEYXRhKCkgZmluYWw7CiAgICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lzUnVubmluZzsgfQogCi0gICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VQcmV2aWV3PiBwcmV2aWV3KCkgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVQcmV2aWV3KEFWTWVk
aWFTb3VyY2VQcmV2aWV3Kik7Ci0gICAgV2Vha1B0cjxBVk1lZGlhQ2FwdHVyZVNvdXJjZT4gY3Jl
YXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9
Ci0KIHByb3RlY3RlZDoKICAgICBBVk1lZGlhQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2Uq
LCBjb25zdCBBdG9taWNTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsKIApAQCAt
OTksOCArODIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRWaWRlb1NhbXBsZUJ1ZmZlckRl
bGVnYXRlKEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dCopOwogICAgIHZvaWQgc2V0QXVkaW9TYW1w
bGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQqKTsKIAotICAgIHZpcnR1
YWwgUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBjcmVhdGVQcmV2aWV3KCkgPSAwOwotCiBw
cml2YXRlOgogICAgIHZvaWQgc2V0dXBTZXNzaW9uKCk7CiAgICAgdm9pZCByZXNldCgpIGZpbmFs
OwpAQCAtMTE3LDggKzk4LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CiAgICAgUmV0YWluUHRyPEFWQ2FwdHVy
ZVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlRGV2aWNlPiBtX2Rl
dmljZTsKLSAgICBWZWN0b3I8V2Vha1B0cjxSZWFsdGltZU1lZGlhU291cmNlUHJldmlldz4+IG1f
cHJldmlld3M7Ci0gICAgV2Vha1B0ckZhY3Rvcnk8QVZNZWRpYUNhcHR1cmVTb3VyY2U+IG1fd2Vh
a1B0ckZhY3Rvcnk7CiAgICAgYm9vbCBtX2lzUnVubmluZyB7IGZhbHNlfTsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNv
dXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw2IEBAIEFWTWVkaWFDYXB0dXJlU291cmNl
OjpBVk1lZGlhQ2FwdHVyZVNvdXIKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoaWQsIHR5cGUs
IGVtcHR5U3RyaW5nKCkpCiAgICAgLCBtX29iamNPYnNlcnZlcihhZG9wdE5TKFtbV2ViQ29yZUFW
TWVkaWFDYXB0dXJlU291cmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6dGhpc10p
KQogICAgICwgbV9kZXZpY2UoZGV2aWNlKQotICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQog
ewogICAgIHNldE5hbWUoZGV2aWNlLmxvY2FsaXplZE5hbWUpOwogICAgIHNldFBlcnNpc3RlbnRJ
RChkZXZpY2UudW5pcXVlSUQpOwpAQCAtMjQwLDEyICsyMzksNiBAQCB2b2lkIEFWTWVkaWFDYXB0
dXJlU291cmNlOjpyZXNldCgpCiAgICAgZm9yIChOU1N0cmluZyAqa2V5TmFtZSBpbiBzZXNzaW9u
S1ZPUHJvcGVydGllcygpKQogICAgICAgICBbbV9zZXNzaW9uIHJlbW92ZU9ic2VydmVyOm1fb2Jq
Y09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6a2V5TmFtZV07CiAKLSAgICBmb3IgKGNvbnN0IGF1
dG8mIHByZXZpZXcgOiBtX3ByZXZpZXdzKSB7Ci0gICAgICAgIGlmIChwcmV2aWV3KQotICAgICAg
ICAgICAgcHJldmlldy0+aW52YWxpZGF0ZSgpOwotICAgIH0KLSAgICBtX3ByZXZpZXdzLmNsZWFy
KCk7Ci0KICAgICBzaHV0ZG93bkNhcHR1cmVTZXNzaW9uKCk7CiAgICAgbV9zZXNzaW9uID0gbnVs
bHB0cjsKIH0KQEAgLTI3Nyw0NSArMjcwLDYgQEAgQXVkaW9Tb3VyY2VQcm92aWRlciogQVZNZWRp
YUNhcHR1cmVTb3VyYwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZVByZXZpZXc+IEFWTWVkaWFDYXB0dXJlU291cmNlOjpwcmV2aWV3KCkKLXsKLSAg
ICBSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IHByZXZpZXcgPSBjcmVhdGVQcmV2aWV3KCk7
Ci0gICAgaWYgKCFwcmV2aWV3KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIG1fcHJl
dmlld3MuYXBwZW5kKHByZXZpZXctPmNyZWF0ZVdlYWtQdHIoKSk7Ci0gICAgcmV0dXJuIHByZXZp
ZXcubGVha1JlZigpOwotfQotCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpyZW1vdmVQcmV2
aWV3KEFWTWVkaWFTb3VyY2VQcmV2aWV3KiBwcmV2aWV3KQotewotICAgIHNpemVfdCBpbmRleDsK
LSAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX3ByZXZpZXdzLnNpemUoKTsgKytpbmRleCkg
ewotICAgICAgICBpZiAobV9wcmV2aWV3c1tpbmRleF0uZ2V0KCkgPT0gcHJldmlldykKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChpbmRleCA8IG1fcHJldmlld3Muc2l6ZSgp
KQotICAgICAgICBtX3ByZXZpZXdzLnJlbW92ZShpbmRleCk7Ci19Ci0KLUFWTWVkaWFTb3VyY2VQ
cmV2aWV3OjpBVk1lZGlhU291cmNlUHJldmlldyhBVk1lZGlhQ2FwdHVyZVNvdXJjZSogcGFyZW50
KQotICAgIDogbV9wYXJlbnQocGFyZW50LT5jcmVhdGVXZWFrUHRyKCkpCi17Ci19Ci0KLUFWTWVk
aWFTb3VyY2VQcmV2aWV3Ojp+QVZNZWRpYVNvdXJjZVByZXZpZXcoKQotewotICAgIGlmIChtX3Bh
cmVudCkKLSAgICAgICAgbV9wYXJlbnQtPnJlbW92ZVByZXZpZXcodGhpcyk7Ci19Ci0KLXZvaWQg
QVZNZWRpYVNvdXJjZVByZXZpZXc6OmludmFsaWRhdGUoKQotewotICAgIG1fcGFyZW50ID0gbnVs
bHB0cjsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlUHJldmlldzo6aW52YWxpZGF0ZSgpOwotfQot
CiBOU0FycmF5KiBzZXNzaW9uS1ZPUHJvcGVydGllcygpCiB7CiAgICAgc3RhdGljIE5TQXJyYXkq
IGtleXMgPSBbQFtAInJ1bm5pbmciXSByZXRhaW5dOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLmgJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OSw3ICs3OSw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwogCi0gICAgUmVm
UHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBjcmVhdGVQcmV2aWV3KCkgZmluYWw7CiAgICAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IGN1cnJlbnRGcmFtZUNHSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1h
Z2U+IGN1cnJlbnRGcmFtZUltYWdlKCkgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UubW0JKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDcgKzM4LDYgQEAKICNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgiCiAjaW1wb3J0ICJQ
bGF0Zm9ybUxheWVyLmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCi0j
aW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlUHJldmlldy5oIgogI2ltcG9ydCAiUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVy
RGVsZWdhdGUuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVEZXZpY2UuaD4KQEAg
LTEwMSwxMTAgKzEwMCw4IEBAIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZDYXB0
dXIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLUBpbnRlcmZhY2UgV2ViQ29yZUFWVmlk
ZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgOiBOU09iamVjdDxDQUxheWVyRGVsZWdhdGU+IHsKLSAg
ICBBVlZpZGVvU291cmNlUHJldmlldyAqX3BhcmVudDsKLSAgICBCT09MIF9oYXNPYnNlcnZlcjsK
LX0KLQotLSAodm9pZClzZXRQYXJlbnQ6KEFWVmlkZW9Tb3VyY2VQcmV2aWV3ICopcGFyZW50Owot
LSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVj
dCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dDsK
LUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBVlZpZGVvU291cmNlUHJldmll
dzogcHVibGljIEFWTWVkaWFTb3VyY2VQcmV2aWV3IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBjcmVhdGUoQVZDYXB0dXJlU2Vzc2lvbiosIEFWQ2Fw
dHVyZURldmljZVR5cGVkZWYqLCBBVlZpZGVvQ2FwdHVyZVNvdXJjZSopOwotCi0gICAgdm9pZCBi
YWNrZ3JvdW5kTGF5ZXJCb3VuZHNDaGFuZ2VkKCk7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJldmlld0JhY2tncm91bmRMYXllci5n
ZXQoKTsgfQotCi1wcml2YXRlOgotICAgIEFWVmlkZW9Tb3VyY2VQcmV2aWV3KEFWQ2FwdHVyZVNl
c3Npb24qLCBBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiwgQVZWaWRlb0NhcHR1cmVTb3VyY2UqKTsK
LQotICAgIHZvaWQgaW52YWxpZGF0ZSgpIGZpbmFsOwotCi0gICAgdm9pZCBwbGF5KCkgY29uc3Qg
ZmluYWw7Ci0gICAgdm9pZCBwYXVzZSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc2V0Vm9sdW1l
KGRvdWJsZSkgY29uc3QgZmluYWwgeyB9OwotICAgIHZvaWQgc2V0RW5hYmxlZChib29sKSBmaW5h
bDsKLSAgICB2b2lkIHNldFBhdXNlZChib29sKSBjb25zdDsKLQotICAgIFJldGFpblB0cjxBVkNh
cHR1cmVWaWRlb1ByZXZpZXdMYXllclR5cGU+IG1fcHJldmlld0xheWVyOwotICAgIFJldGFpblB0
cjxQbGF0Zm9ybUxheWVyPiBtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXI7Ci0gICAgUmV0YWluUHRy
PEFWQ2FwdHVyZURldmljZVR5cGVkZWY+IG1fZGV2aWNlOwotICAgIFJldGFpblB0cjxXZWJDb3Jl
QVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcj4gbV9vYmpjT2JzZXJ2ZXI7Ci19OwotCi1SZWZQ
dHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IEFWVmlkZW9Tb3VyY2VQcmV2aWV3OjpjcmVhdGUoQVZD
YXB0dXJlU2Vzc2lvbiAqc2Vzc2lvbiwgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlLCBB
VlZpZGVvQ2FwdHVyZVNvdXJjZSogcGFyZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
QVZWaWRlb1NvdXJjZVByZXZpZXcoc2Vzc2lvbiwgZGV2aWNlLCBwYXJlbnQpKTsKLX0KLQotQVZW
aWRlb1NvdXJjZVByZXZpZXc6OkFWVmlkZW9Tb3VyY2VQcmV2aWV3KEFWQ2FwdHVyZVNlc3Npb24g
KnNlc3Npb24sIEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSwgQVZWaWRlb0NhcHR1cmVT
b3VyY2UqIHBhcmVudCkKLSAgICA6IEFWTWVkaWFTb3VyY2VQcmV2aWV3KHBhcmVudCkKLSAgICAs
IG1fb2JqY09ic2VydmVyKGFkb3B0TlMoW1tXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNl
cnZlciBhbGxvY10gaW5pdF0pKQotewotICAgIG1fZGV2aWNlID0gZGV2aWNlOwotICAgIG1fcHJl
dmlld0xheWVyID0gYWRvcHROUyhbYWxsb2NBVkNhcHR1cmVWaWRlb1ByZXZpZXdMYXllckluc3Rh
bmNlKCkgaW5pdFdpdGhTZXNzaW9uOnNlc3Npb25dKTsKLSAgICBtX3ByZXZpZXdMYXllci5nZXQo
KS5jb250ZW50c0dyYXZpdHkgPSBrQ0FHcmF2aXR5UmVzaXplOwotICAgIG1fcHJldmlld0xheWVy
LmdldCgpLmFuY2hvclBvaW50ID0gQ0dQb2ludFplcm87Ci0gICAgW21fcHJldmlld0xheWVyLmdl
dCgpIHNldERlbGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hhcmVk
XV07Ci0KLSAgICBtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBh
bGxvY10gaW5pdF0pOwotICAgIG1fcHJldmlld0JhY2tncm91bmRMYXllci5nZXQoKS5jb250ZW50
c0dyYXZpdHkgPSBrQ0FHcmF2aXR5UmVzaXplQXNwZWN0OwotICAgIG1fcHJldmlld0JhY2tncm91
bmRMYXllci5nZXQoKS5hbmNob3JQb2ludCA9IENHUG9pbnRaZXJvOwotICAgIG1fcHJldmlld0Jh
Y2tncm91bmRMYXllci5nZXQoKS5uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSA9IFlFUzsKLSAg
ICBbbV9wcmV2aWV3QmFja2dyb3VuZExheWVyLmdldCgpIHNldERlbGVnYXRlOltXZWJBY3Rpb25E
aXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hhcmVkXV07Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAg
bV9wcmV2aWV3TGF5ZXIuZ2V0KCkubmFtZSA9IEAiQVZWaWRlb0NhcHR1cmVTb3VyY2UgcHJldmll
dyBsYXllciI7Ci0gICAgbV9wcmV2aWV3QmFja2dyb3VuZExheWVyLmdldCgpLm5hbWUgPSBAIkFW
VmlkZW9Tb3VyY2VQcmV2aWV3IHBhcmVudCBsYXllciI7Ci0jZW5kaWYKLQotICAgIFttX3ByZXZp
ZXdCYWNrZ3JvdW5kTGF5ZXIgYWRkU3VibGF5ZXI6bV9wcmV2aWV3TGF5ZXIuZ2V0KCldOwotCi0g
ICAgW21fb2JqY09ic2VydmVyLmdldCgpIHNldFBhcmVudDp0aGlzXTsKLX0KLQotdm9pZCBBVlZp
ZGVvU291cmNlUHJldmlldzo6YmFja2dyb3VuZExheWVyQm91bmRzQ2hhbmdlZCgpCi17Ci0gICAg
aWYgKG1fcHJldmlld0JhY2tncm91bmRMYXllciAmJiBtX3ByZXZpZXdMYXllcikKLSAgICAgICAg
W21fcHJldmlld0xheWVyLmdldCgpIHNldEJvdW5kczptX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIu
Z2V0KCkuYm91bmRzXTsKLX0KLQotdm9pZCBBVlZpZGVvU291cmNlUHJldmlldzo6aW52YWxpZGF0
ZSgpCi17Ci0gICAgW21fb2JqY09ic2VydmVyLmdldCgpIHNldFBhcmVudDpuaWxdOwotICAgIG1f
b2JqY09ic2VydmVyID0gbnVsbHB0cjsKLSAgICBtX3ByZXZpZXdMYXllciA9IG51bGxwdHI7Ci0g
ICAgbV9wcmV2aWV3QmFja2dyb3VuZExheWVyID0gbnVsbHB0cjsKLSAgICBtX2RldmljZSA9IG51
bGxwdHI7Ci0gICAgQVZNZWRpYVNvdXJjZVByZXZpZXc6OmludmFsaWRhdGUoKTsKLX0KLQotdm9p
ZCBBVlZpZGVvU291cmNlUHJldmlldzo6cGxheSgpIGNvbnN0Ci17Ci0gICAgc2V0UGF1c2VkKGZh
bHNlKTsKLX0KLQotdm9pZCBBVlZpZGVvU291cmNlUHJldmlldzo6cGF1c2UoKSBjb25zdAotewot
ICAgIHNldFBhdXNlZCh0cnVlKTsKLX0KLQotdm9pZCBBVlZpZGVvU291cmNlUHJldmlldzo6c2V0
UGF1c2VkKGJvb2wgcGF1c2VkKSBjb25zdAotewotICAgIFttX2RldmljZSBsb2NrRm9yQ29uZmln
dXJhdGlvbjpuaWxdOwotICAgIG1fcHJldmlld0xheWVyLmdldCgpLmNvbm5lY3Rpb24uZW5hYmxl
ZCA9ICFwYXVzZWQ7Ci0gICAgW21fZGV2aWNlIHVubG9ja0ZvckNvbmZpZ3VyYXRpb25dOwotfQot
Ci12b2lkIEFWVmlkZW9Tb3VyY2VQcmV2aWV3OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsK
LSAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5oaWRkZW4gPSAhZW5hYmxlZDsKLX0KLQogY29uc3Qg
T1NUeXBlIHZpZGVvQ2FwdHVyZUZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkE7CiAK
IFJlZlB0cjxBVk1lZGlhQ2FwdHVyZVNvdXJjZT4gQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0
ZShBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBkZXZpY2UsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQs
IGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzLCBTdHJpbmcmIGludmFsaWRDb25z
dHJhaW50KQpAQCAtNTEyLDIwICs0MDksNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpw
cm9jZXNzTmV3RnJhCiAgICAgICAgIHJldHVybjsKIAogICAgIHVwZGF0ZUZyYW1lcmF0ZShzYW1w
bGVCdWZmZXIuZ2V0KCkpOwotCi0gICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3U2FtcGxlQnVmZmVy
ID0gMDsKLSAgICBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
c2FtcGxlQnVmZmVyLmdldCgpLCAmbmV3U2FtcGxlQnVmZmVyKTsKLSAgICBBU1NFUlQobmV3U2Ft
cGxlQnVmZmVyKTsKLQotICAgIENGQXJyYXlSZWYgYXR0YWNobWVudHNBcnJheSA9IENNU2FtcGxl
QnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShuZXdTYW1wbGVCdWZmZXIsIHRydWUpOwot
ICAgIGlmIChhdHRhY2htZW50c0FycmF5KSB7Ci0gICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsg
aSA8IENGQXJyYXlHZXRDb3VudChhdHRhY2htZW50c0FycmF5KTsgKytpKSB7Ci0gICAgICAgICAg
ICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnRzID0gKENGTXV0YWJsZURpY3Rpb25h
cnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhdHRhY2htZW50c0FycmF5LCBpKTsKLSAgICAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGF0dGFjaG1lbnRzLCBrQ01TYW1wbGVBdHRhY2ht
ZW50S2V5X0Rpc3BsYXlJbW1lZGlhdGVseSwga0NGQm9vbGVhblRydWUpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgbV9idWZmZXIgPSBhZG9wdENGKG5ld1NhbXBsZUJ1ZmZlcik7CisgICAgbV9i
dWZmZXIgPSBzYW1wbGVCdWZmZXI7CiAgICAgbV9sYXN0SW1hZ2UgPSBudWxscHRyOwogCiAgICAg
Ym9vbCBzZXR0aW5nc0NoYW5nZWQgPSBmYWxzZTsKQEAgLTYwNSwxMSArNDg5LDYgQEAgdm9pZCBB
VlZpZGVvQ2FwdHVyZVNvdXJjZTo6cGFpbnRDdXJyZW50RgogICAgIENHQ29udGV4dERyYXdJbWFn
ZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53
aWR0aCgpLCBwYWludFJlY3QuaGVpZ2h0KCkpLCBtX2xhc3RJbWFnZS5nZXQoKSk7CiB9CiAKLVJl
ZlB0cjxBVk1lZGlhU291cmNlUHJldmlldz4gQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZVBy
ZXZpZXcoKQotewotICAgIHJldHVybiBBVlZpZGVvU291cmNlUHJldmlldzo6Y3JlYXRlKHNlc3Np
b24oKSwgZGV2aWNlKCksIHRoaXMpOwotfQotCiBOU1N0cmluZyogQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHN0ZDo6b3B0aW9uYWw8aW50
PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCkgY29uc3QKIHsKICAgICBpZiAoIXdp
ZHRoICYmICFoZWlnaHQpCkBAIC02NTYsNDYgKzUzNSw0IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnN1cHBvcnRzU2l6ZUEKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1AaW1wbGVt
ZW50YXRpb24gV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIKLQotc3RhdGljIE5T
U3RyaW5nICogY29uc3QgS2V5VmFsdWVCb3VuZHNDaGFuZ2VLZXkgPSBAImJvdW5kcyI7Ci0KLS0g
KHZvaWQpc2V0UGFyZW50OihBVlZpZGVvU291cmNlUHJldmlldyAqKXBhcmVudAotewotICAgIGlm
IChfcGFyZW50ICYmIF9oYXNPYnNlcnZlciAmJiBfcGFyZW50LT5wbGF0Zm9ybUxheWVyKCkpIHsK
LSAgICAgICAgX2hhc09ic2VydmVyID0gZmFsc2U7Ci0gICAgICAgIFtfcGFyZW50LT5wbGF0Zm9y
bUxheWVyKCkgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOktleVZhbHVlQm91bmRzQ2hh
bmdlS2V5XTsKLSAgICB9Ci0KLSAgICBfcGFyZW50ID0gcGFyZW50OwotCi0gICAgaWYgKF9wYXJl
bnQgJiYgX3BhcmVudC0+cGxhdGZvcm1MYXllcigpKSB7Ci0gICAgICAgIF9oYXNPYnNlcnZlciA9
IHRydWU7Ci0gICAgICAgIFtfcGFyZW50LT5wbGF0Zm9ybUxheWVyKCkgYWRkT2JzZXJ2ZXI6c2Vs
ZiBmb3JLZXlQYXRoOktleVZhbHVlQm91bmRzQ2hhbmdlS2V5IG9wdGlvbnM6MCBjb250ZXh0Om51
bGxwdHJdOwotICAgIH0KLX0KLQotLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBh
dGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250
ZXh0Oih2b2lkICopY29udGV4dAotewotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLQotICAg
IGlmICghX3BhcmVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKFtbY2hhbmdlIHZhbHVl
Rm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVd
KQotICAgICAgICByZXR1cm47Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgV2ViVGhyZWFkUnVu
KF4gewotICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbDpLZXlWYWx1ZUJvdW5kc0NoYW5nZUtl
eV0gJiYgb2JqZWN0ID09IF9wYXJlbnQtPnBsYXRmb3JtTGF5ZXIoKSkKLSAgICAgICAgICAgIF9w
YXJlbnQtPmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQoKTsKLSAgICB9KTsKLSNlbHNlCi0g
ICAgaWYgKFtrZXlQYXRoIGlzRXF1YWw6S2V5VmFsdWVCb3VuZHNDaGFuZ2VLZXldICYmIG9iamVj
dCA9PSBfcGFyZW50LT5wbGF0Zm9ybUxheWVyKCkpCi0gICAgICAgIF9wYXJlbnQtPmJhY2tncm91
bmRMYXllckJvdW5kc0NoYW5nZWQoKTsKLSNlbmRpZgotfQotCi1AZW5kCi0KICNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5tbQkocmV2aXNpb24gMjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw2ICs0OCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNv
bnN0IGludCB2aWRlb1NhbXBsZVJhdGUgPSA5MDAwMDsKKwogUmVmUHRyPE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlPiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiB7CiAgICAgYXV0byBz
b3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMobmFtZSkpOwpA
QCAtNzQsMTEgKzc2LDggQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBNb2NrUmVhbHRp
bQogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
Q01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm87Ci0KLSAgICB0aW1pbmdJbmZvLnByZXNlbnRh
dGlvblRpbWVTdGFtcCA9IENNVGltZU1ha2UoZWxhcHNlZFRpbWUoKSAqIDEwMDAsIDEwMDApOwot
ICAgIHRpbWluZ0luZm8uZGVjb2RlVGltZVN0YW1wID0ga0NNVGltZUludmFsaWQ7Ci0gICAgdGlt
aW5nSW5mby5kdXJhdGlvbiA9IGtDTVRpbWVJbnZhbGlkOworICAgIENNVGltZSBzYW1wbGVUaW1l
ID0gQ01UaW1lTWFrZSgoZWxhcHNlZFRpbWUoKSArIC4xKSAqIHZpZGVvU2FtcGxlUmF0ZSwgdmlk
ZW9TYW1wbGVSYXRlKTsKKyAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nSW5mbyA9IHsga0NN
VGltZUludmFsaWQsIHNhbXBsZVRpbWUsIHNhbXBsZVRpbWUgfTsKIAogICAgIENNVmlkZW9Gb3Jt
YXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IG51bGxwdHI7CiAgICAgT1NTdGF0
dXMgc3RhdHVzID0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZmZXIo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgKENWSW1hZ2VCdWZmZXJSZWYpcGl4ZWxCdWZmZXIsICZmb3Jt
YXREZXNjcmlwdGlvbik7CkBAIC0xMDAsNiArOTksOCBAQCBSZXRhaW5QdHI8Q01TYW1wbGVCdWZm
ZXJSZWY+IE1vY2tSZWFsdGltCiAKIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYzo6cGl4ZWxCdWZmZXJGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGlt
YWdlKSBjb25zdAogeworICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZGV2aWNlUkdCQ29sb3JT
cGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOworCiAgICAgQ0dTaXplIGZyYW1l
U2l6ZSA9IENHU2l6ZU1ha2UoQ0dJbWFnZUdldFdpZHRoKGltYWdlKSwgQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSkpOwogICAgIENGRGljdGlvbmFyeVJlZiBvcHRpb25zID0gKF9fYnJpZGdlIENGRGlj
dGlvbmFyeVJlZikgQHsKICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZm
ZXJDR0ltYWdlQ29tcGF0aWJpbGl0eUtleTogQChOTyksCkBAIC0xMTIsOCArMTEzLDcgQEAgUmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IE1vY2tSZWFsdGltZQogCiAgICAgQ1ZQaXhlbEJ1ZmZl
ckxvY2tCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZlciwgMCk7CiAgICAgdm9pZCogZGF0YSA9IENWUGl4
ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZlcik7Ci0gICAgYXV0byByZ2JDb2xvclNw
YWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7Ci0gICAgYXV0byBj
b250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwgZnJhbWVTaXplLndp
ZHRoLCBmcmFtZVNpemUuaGVpZ2h0LCA4LCBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3cocGl4
ZWxCdWZmZXIpLCByZ2JDb2xvclNwYWNlLmdldCgpLCAoQ0dCaXRtYXBJbmZvKSBrQ0dJbWFnZUFs
cGhhTm9uZVNraXBGaXJzdCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKGRhdGEsIGZyYW1lU2l6ZS53aWR0aCwgZnJhbWVTaXplLmhlaWdodCwgOCwg
Q1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93KHBpeGVsQnVmZmVyKSwgZGV2aWNlUkdCQ29sb3JT
cGFjZSwgKENHQml0bWFwSW5mbykga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKICAgICBD
R0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBDR0ltYWdl
R2V0V2lkdGgoaW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSksIGltYWdlKTsKICAgICBD
VlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocGl4ZWxCdWZmZXIsIDApOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAkocmV2aXNpb24gMjEwMzU2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDggKzU1LDEwIEBAIHByaXZhdGU6
CiAgICAgfQogCiAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2JveC5wcmVzZW50YXRpb25UaW1lc3RhbXAoKTsgfQorICAgIE1lZGlhVGlt
ZSBvdXRwdXRQcmVzZW50YXRpb25UaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3gu
cHJlc2VudGF0aW9uVGltZXN0YW1wKCk7IH0KICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmRlY29kZVRpbWVzdGFtcCgpOyB9CiAgICAgTWVk
aWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guZHVyYXRpb24o
KTsgfQorICAgIE1lZGlhVGltZSBvdXRwdXREdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fYm94LmR1cmF0aW9uKCk7IH0KICAgICBBdG9taWNTdHJpbmcgdHJhY2tJRCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KICAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3Ry
aW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298653</attachid>
            <date>2017-01-11 19:50:09 -0800</date>
            <delta_ts>2017-01-11 21:23:37 -0800</delta_ts>
            <desc>Updated patch for landing.</desc>
            <filename>audio_renderer_patch_5.txt</filename>
            <type>text/plain</type>
            <size>98254</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDQ5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NiBAQAorMjAxNy0wMS0xMSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0s
IE1hY10gUmVuZGVyIG1lZGlhIHN0cmVhbSBhdWRpbyBidWZmZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4MzYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI3MzgwMzkwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGl0IGlzbid0IHBvc3NpYmxlIHRvIHRlc3QgYXVkaW8gcmVuZGVy
aW5nIGRpcmVjdGx5LiBBIGZvbGxvdy11cCBwYXRjaCB3aWxsCisgICAgICAgIGFkZCBhIG1vY2sg
YXVkaW8gc291cmNlIHRoYXQgd2lsbCBlbmFibGUgYXVkaW8gdGVzdGluZy4KKworICAgICAgICAq
IHBsYXRmb3JtL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcDogSW5jbHVkZSBuZXcgZnVuY3Rpb25z
IHVzZWQuCisgICAgICAgICogcGxhdGZvcm0vY2YvQ29yZU1lZGlhU29mdExpbmsuaDoKKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3ZlIHJlZmVyZW5j
ZXMgdG8gdGhlIGRlbGV0ZWQgcHJldmlld3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2dnaW5n
Lmg6IEFkZCBNZWRpYUNhcHR1cmVTYW1wbGVzLgorCisgICAgICAgICogcGxhdGZvcm0vTWVkaWFT
YW1wbGUuaDogQWRkIG91dHB1dFByZXNlbnRhdGlvblRpbWUgYW5kIG91dHB1dER1cmF0aW9uLgor
CisgICAgICAgICogcGxhdGZvcm0vY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwOiBBZGQgQ01TYW1w
bGVCdWZmZXJHZXRPdXRwdXREdXJhdGlvbiwgQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50
YXRpb25UaW1lU3RhbXAsCisgICAgICAgIENNVGltZUNvbnZlcnRTY2FsZSwgQ01UaW1lYmFzZUdl
dEVmZmVjdGl2ZVJhdGUsIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3Jp
cHRpb25zLCAKKyAgICAgICAgQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVm
ZmVyTGlzdCwgQ01TYW1wbGVCdWZmZXJTZXREYXRhUmVhZHksIAorICAgICAgICBDTUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb25DcmVhdGUsIENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrLCBhbmQgQ01DbG9j
a0dldFRpbWUuCisgICAgICAgICogcGxhdGZvcm0vY2YvQ29yZU1lZGlhU29mdExpbmsuaDoKKwor
ICAgICAgICBDcmVhdGUgYW5kIHVzZSBhbiBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIgZWFj
aCBhdWRpbyBzdHJlYW0gdHJhY2ssIHdoZW4gaXQgaXMgYXZhaWxhYmxlLAorICAgICAgICB0byBy
ZW5kZXIgZm9yIGF1ZGlvIHNhbXBsZXMuIFN0b3JlIHRoZSBvZmZzZXQgYmV0d2VlbiB0aGUgZmly
c3Qgc2FtcGxlIHJlY2VpdmVkIGZyb20gYSB0cmFjaydzCisgICAgICAgIG91dHB1dCBwcmVzZW50
YXRpb24gYW5kIHRoZSBzeW5jaHJvbml6ZXIgdGltZSBzbyB3ZSBjYW4gYWRqdXN0IHNhbXBsZSB0
aW1lc3RhbXBzIHRvIGJlIAorICAgICAgICByZWxhdGl2ZSB0byB0aGUgc3luY2hyb25pemVyJ3Mg
dGltZWxpbmUgcmVnYXJkbGVzcyBvZiB0aGVpciBzb3VyY2UuIFJlbW92ZSB0aGUgdXNlIG9mIHNv
dXJjZQorICAgICAgICBwcmV2aWV3cyBiZWNhdXNlIG5vdCBhbGwgc291cmNlcyB3aWxsIGhhdmUg
dGhlbS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNh
bXBsZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIAorICAgICAgICBBZGQgYW4gT2JqQyBoZWxwZXIg
dG8gY2F0Y2ggcmVuZGVyZXIgc3RhdHVzIGNoYW5nZXMuCisgICAgICAgICgtW1dlYkFWU2FtcGxl
QnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgaW5pdFdpdGhQYXJlbnQ6XSk6IAorICAgICAgICAo
LVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGRlYWxsb2NdKToKKyAgICAg
ICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBpbnZhbGlkYXRlXSk6
CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYmVnaW5P
YnNlcnZpbmdMYXllcjpdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFu
Z2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXI6XSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxl
QnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdSZW5kZXJlcjpdKToKKyAg
ICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2
aW5nUmVuZGVyZXI6XSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdl
TGlzdGVuZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpd
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6YWRkU2FtcGxlVG9QZW5kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVTYW1wbGVUaW1lcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVB
dWRpb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVu
UmVhZHlGb3JWaWRlb0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yQXVkaW9E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6Y3JlYXRlQXVkaW9SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lBdWRpb1JlbmRlcmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJv
eUF1ZGlvUmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6YXVkaW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlbmRlcmVyU3RhdHVzRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6bGF5ZXJTdGF0dXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpmbHVzaFJlbmRlcmVycyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6ZGVzdHJveUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmN1cnJlbnREaXNwbGF5TW9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjplbnF1ZXVlQXVkaW9TYW1wbGVCdWZmZXJGcm9tVHJhY2spOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZXF1
ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yTWVkaWFEYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZp
ZGVvU2FtcGxlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cHJlcGFyZVZpZGVvU2FtcGxlQnVmZmVyRnJvbVRy
YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6aW50ZXJuYWxTZXRWb2x1bWUpOiBEZWxldGVkLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpvdXRwdXRQcmVzZW50YXRp
b25UaW1lKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpvdXRw
dXREdXJhdGlvbik6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6
ZHVtcCk6IExvZyBvdXRwdXRQcmVzZW50YXRpb25UaW1lLgorCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oOiBBZGQgdGltZWxpbmVP
ZmZzZXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
c2V0RW5hYmxlZCk6IE5vIG1vcmUgbV9wcmV2aWV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU6OmVuZFRyYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cHJldmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaDoKKworICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnByZXZpZXcpOiBEZWxldGVkLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaDogUmVt
b3ZlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0uaDogQWRkIHRpbWVsaW5lT2Zmc2V0LgorCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmdzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxl
QnVmZmVyRnJvbUNvbm5lY3Rpb24pOiBQYXNzIHRoZQorICAgICAgICBzYW1wbGUgYnVmZmVyIHVw
IHRoZSBjaGFpbi4KKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpjcmVh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb1NvdXJjZVByZXZpZXc6OkFW
QXVkaW9Tb3VyY2VQcmV2aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9T
b3VyY2VQcmV2aWV3OjppbnZhbGlkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFW
QXVkaW9Tb3VyY2VQcmV2aWV3OjpwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFW
QXVkaW9Tb3VyY2VQcmV2aWV3OjpwYXVzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
VkF1ZGlvU291cmNlUHJldmlldzo6c2V0RW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBVkF1ZGlvU291cmNlUHJldmlldzo6c2V0Vm9sdW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3Ojp1cGRhdGVTdGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlUHJldmlldyk6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1
cmVTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFTb3VyY2VQcmV2aWV3KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpjcmVhdGVXZWFr
UHRyKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1l
ZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291
cmNlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZSk6IE5vIG1vcmUgcHJldmlldy4KKyAgICAgICAgKFdl
YkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpB
Vk1lZGlhQ2FwdHVyZVNvdXJjZTo6cHJldmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6cmVtb3ZlUHJldmlldyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBVk1lZGlhU291cmNlUHJldmlldzo6QVZNZWRpYVNvdXJjZVByZXZpZXcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYVNvdXJjZVByZXZpZXc6On5BVk1lZGlh
U291cmNlUHJldmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhU291cmNl
UHJldmlldzo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3Jl
OjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1lKTogRG9uJ3Qgc2V0IHRoZSAi
ZGlzcGxheSBpbW1lZGlhdGVseSIgYXR0YWNobWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlk
ZW9Tb3VyY2VQcmV2aWV3OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZW
aWRlb1NvdXJjZVByZXZpZXc6OkFWVmlkZW9Tb3VyY2VQcmV2aWV3KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFWVmlkZW9Tb3VyY2VQcmV2aWV3OjpiYWNrZ3JvdW5kTGF5ZXJCb3VuZHND
aGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9Tb3VyY2VQcmV2aWV3
OjppbnZhbGlkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9Tb3VyY2VQ
cmV2aWV3OjpwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9Tb3VyY2VQ
cmV2aWV3OjpwYXVzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvU291cmNl
UHJldmlldzo6c2V0UGF1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9T
b3VyY2VQcmV2aWV3OjpzZXRFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFW
VmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgc2V0UGFyZW50Ol0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVkLgorCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OkNN
U2FtcGxlQnVmZmVyRnJvbVBpeGVsQnVmZmVyKTogVXNlIGEgbW9yZSB0eXBpY2FsIHZpZGVvCisg
ICAgICAgIHRpbWUgc2NhbGUuIFNldCB0aGUgc2FtcGxlIGRlY29kZSB0aW1lLgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnBpeGVsQnVmZmVyRnJvbUNHSW1h
Z2UpOiBVc2UgYSBzdGF0aWMgZm9yIGNvbG9yc3BhY2UKKyAgICAgICAgaW5zdGVhZCBvZiBmZXRj
aGluZyBpdCBmb3IgZXZlcnkgZnJhbWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDogQWRkIG91dHB1dFByZXNlbnRhdGlv
blRpbWUgYW5kIG91dHB1dER1cmF0aW9uLgorCiAyMDE3LTAxLTA4ICBLb25zdGFudGluIFRva2Fy
ZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBJbnRyb2R1Y2UgQ1BVKFg4Nl9TU0Uy
KSBpbnN0ZWFkIG9mIHZhcmlvdXMgU1NFMiBjaGVja3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAkocmV2
aXNpb24gMjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDYgKzIxMyw5IEBAIHZvaWQg
U2NyaXB0UHJvY2Vzc29yTm9kZTo6cHJvY2VzcyhzaXplX3QKICAgICAgICAgICAgIG1faXNSZXF1
ZXN0T3V0c3RhbmRpbmcgPSB0cnVlOwogCiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzXSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX2hhc0F1ZGlvUHJvY2Vzc0xpc3RlbmVyKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vz
c0V2ZW50KCk7CiAKICAgICAgICAgICAgICAgICAvLyBEZS1yZWZlcmVuY2UgdG8gbWF0Y2ggdGhl
IHJlZigpIGNhbGwgaW4gcHJvY2VzcygpLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEwMzU2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzksNyArMjc5LDYgQEAKIAkJMDdDMUMwRTIxQkZCNjAwMTAwQkQyMjU2IC8qIE1l
ZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovOyB9OwogCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIy
NTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0MxQzBFNDFCRkI2MEVEMDBC
RDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDRTc3RDUxNjcx
MkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Q0U3N0Q0MTY3MTJBNkEwMEM1
NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDdEMTUwM0IxRERCNjk2NTAwOEY3NTk4
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0QxNTAzQTFEREI2Njg4MDA4Rjc1OTggLyogUmVhbHRp
bWVNZWRpYVNvdXJjZVByZXZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwN0Q2Mzc0MDFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3RDYzNzNFMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQy5oICovOyB9OwogCQkwN0Q2Mzc0MTFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0Q2MzczRjFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMubW0gKi87IH07CiAJCTA3RDZBNEVGMUJFQ0YyRDIwMDE3NDE0NiAv
KiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2QTRFRDFCRUNGMkQyMDAxNzQxNDYgLyogTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwICovOyB9OwpAQCAtNzI0OCw3ICs3MjQ3LDYgQEAKIAkJMDdDOEFE
MTExRDA3M0Q2MzAwODdDNUNFIC8qIEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVkZvdW5kYXRpb25NSU1FVHlwZUNh
Y2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M4QUQxMjFEMDczRDYzMDA4
N0M1Q0UgLyogQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFu
ZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MDdEMTUwM0ExRERCNjY4ODAwOEY3NTk4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2
aWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RDYzNzNFMUJCMEIxMTMwMDI1
NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Q2MzczRjFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDdENkE0RUQxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE1MTg3LDcgKzE1MTg1LDYgQEAKIAkJCQk0QTRGNjU2RDFBQTk5N0YxMDBFMzhDREQgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oICovLAogCQkJCTRBMEZGQTlGMUFBRjVFQTIw
MDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCAqLywKIAkJCQk0QTBGRkFB
MDFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovLAotCQkJ
CTA3RDE1MDNBMUREQjY2ODgwMDhGNzU5OCAvKiBSZWFsdGltZU1lZGlhU291cmNlUHJldmlldy5o
ICovLAogCQkJCTRBNEY2NTZFMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MuY3BwICovLAogCQkJCTRBNEY2NTZGMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MuaCAqLywKIAkJCQkyRUM0MURFMjFDMDQxMEEzMDBEMjk0RkUg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmNwcCAqLywKQEAgLTI3
MTk3LDcgKzI3MTk0LDYgQEAKIAkJCQk0QTRGNjU3MjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEEwRkZBQTIx
QUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTRBMEZGQUE2MUFBRjVFRjYwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQkwN0QxNTAzQjFEREI2OTY1MDA4Rjc1OTgg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY2
NTc0MUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3QzFDMEU1MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGltZU1lZGlh
U291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4
MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2dnaW5nLmgJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvZ2dpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgTShNZWRpYSkgXAogICAgIE0oTWVkaWFTb3VyY2UpIFwKICAgICBN
KE1lZGlhU291cmNlU2FtcGxlcykgXAorICAgIE0oTWVkaWFDYXB0dXJlU2FtcGxlcykgXAogICAg
IE0oTWVtb3J5UHJlc3N1cmUpIFwKICAgICBNKE5ldHdvcmspIFwKICAgICBNKE5vdFlldEltcGxl
bWVudGVkKSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgJKHJldmlz
aW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRp
YVNhbXBsZSgpIHsgfQogCiAgICAgdmlydHVhbCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIE1lZGlhVGltZSBvdXRwdXRQcmVzZW50YXRpb25UaW1l
KCkgY29uc3QgeyByZXR1cm4gcHJlc2VudGF0aW9uVGltZSgpOyB9CiAgICAgdmlydHVhbCBNZWRp
YVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJh
dGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIE1lZGlhVGltZSBvdXRwdXREdXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGR1cmF0aW9uKCk7IH0KICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyB0
cmFja0lEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0
cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0ID0gMDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5jcHAJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTQgKzg1LDE4IEBAIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIEMKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlv
biwgQ01UaW1lLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRJ
bWFnZUJ1ZmZlciwgQ1ZJbWFnZUJ1ZmZlclJlZiwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAo
c2J1ZikpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEs
IENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTVNhbXBs
ZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
V2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uLCBDTVRp
bWUsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQorU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFBy
ZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChz
YnVmKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwg
Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5LCBDRkFycmF5UmVmLCAoQ01T
YW1wbGVCdWZmZXJSZWYgc2J1ZiwgQm9vbGVhbiBjcmVhdGVJZk5lY2Vzc2FyeSksIChzYnVmLCBj
cmVhdGVJZk5lY2Vzc2FyeSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3Jl
LCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0FycmF5LCBPU1N0
YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUNvdW50IHRpbWluZ0FycmF5RW50
cmllcywgQ01TYW1wbGVUaW1pbmdJbmZvICp0aW1pbmdBcnJheU91dCwgQ01JdGVtQ291bnQgKnRp
bWluZ0FycmF5RW50cmllc05lZWRlZE91dCksIChzYnVmLCB0aW1pbmdBcnJheUVudHJpZXMsIHRp
bWluZ0FycmF5T3V0LCB0aW1pbmdBcnJheUVudHJpZXNOZWVkZWRPdXQpKQorU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWVDb252ZXJ0U2NhbGUs
IENNVGltZSwgKENNVGltZSB0aW1lLCBpbnQzMl90IG5ld1RpbWVzY2FsZSwgQ01UaW1lUm91bmRp
bmdNZXRob2QgbWV0aG9kKSwgKHRpbWUsIG5ld1RpbWVzY2FsZSwgbWV0aG9kKSkKIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJH
ZXRUb3RhbFNhbXBsZVNpemUsIHNpemVfdCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1
ZikpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENN
U2V0QXR0YWNobWVudCwgdm9pZCwgKENNQXR0YWNobWVudEJlYXJlclJlZiB0YXJnZXQsIENGU3Ry
aW5nUmVmIGtleSwgQ0ZUeXBlUmVmIHZhbHVlLCBDTUF0dGFjaG1lbnRNb2RlIGF0dGFjaG1lbnRN
b2RlKSwgKHRhcmdldCwga2V5LCB2YWx1ZSwgYXR0YWNobWVudE1vZGUpKQogU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWViYXNlQ3JlYXRlV2l0
aE1hc3RlckNsb2NrLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01DbG9j
a1JlZiBtYXN0ZXJDbG9jaywgQ01UaW1lYmFzZVJlZiAqdGltZWJhc2VPdXQpLCAoYWxsb2NhdG9y
LCBtYXN0ZXJDbG9jaywgdGltZWJhc2VPdXQpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWViYXNlR2V0VGltZSwgQ01UaW1lLCAoQ01UaW1l
YmFzZVJlZiB0aW1lYmFzZSksICh0aW1lYmFzZSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZWJhc2VTZXRSYXRlLCBPU1N0YXR1cywgKENN
VGltZWJhc2VSZWYgdGltZWJhc2UsIEZsb2F0NjQgcmF0ZSksICh0aW1lYmFzZSwgcmF0ZSkpCiBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZWJh
c2VTZXRUaW1lLCBPU1N0YXR1cywgKENNVGltZWJhc2VSZWYgdGltZWJhc2UsIENNVGltZSB0aW1l
KSwgKHRpbWViYXNlLCB0aW1lKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNv
cmUsIENvcmVNZWRpYSwgQ01UaW1lYmFzZUdldEVmZmVjdGl2ZVJhdGUsIEZsb2F0NjQsIChDTVRp
bWViYXNlUmVmIHRpbWViYXNlKSwgKHRpbWViYXNlKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lQ29weUFzRGljdGlvbmFyeSwgQ0ZEaWN0
aW9uYXJ5UmVmLCAoQ01UaW1lIHRpbWUsIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciksICh0aW1l
LCBhbGxvY2F0b3IpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29y
ZU1lZGlhLCBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGVGb3JJbWFnZUJ1ZmZlciwgT1NT
dGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VC
dWZmZXIsIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiogb3V0RGVzYyksIChhbGxvY2F0b3Is
IGltYWdlQnVmZmVyLCBvdXREZXNjKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdl
YkNvcmUsIENvcmVNZWRpYSwgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9ucywg
Q01WaWRlb0RpbWVuc2lvbnMsIChDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgdmlkZW9EZXNj
KSwgKHZpZGVvRGVzYykpCkBAIC0xMTQsNiArMTE4LDEzIEBAIFNPRlRfTElOS19GVU5DVElPTl9G
T1JfU09VUkNFKFdlYkNvcmUsIEMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNv
cmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDYWxsQmxvY2tGb3JFYWNoU2FtcGxlLCBPU1N0
YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIE9TU3RhdHVzICheaGFuZGxlcikoQ01TYW1w
bGVCdWZmZXJSZWYsIENNSXRlbUNvdW50KSksIChzYnVmLCBoYW5kbGVyKSkKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDb3B5
U2FtcGxlQnVmZmVyRm9yUmFuZ2UsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9y
LCBDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDRlJhbmdlIHNhbXBsZVJhbmdlLCBDTVNhbXBsZUJ1
ZmZlclJlZiogc0J1Zk91dCksIChhbGxvY2F0b3IsIHNidWYsIHNhbXBsZVJhbmdlLCBzQnVmT3V0
KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01T
YW1wbGVCdWZmZXJHZXRTYW1wbGVTaXplQXJyYXksIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJS
ZWYgc2J1ZiwgQ01JdGVtQ291bnQgc2l6ZUFycmF5RW50cmllcywgc2l6ZV90KiBzaXplQXJyYXlP
dXQsIENNSXRlbUNvdW50KiBzaXplQXJyYXlFbnRyaWVzTmVlZGVkT3V0KSwgKHNidWYsIHNpemVB
cnJheUVudHJpZXMsIHNpemVBcnJheU91dCwgc2l6ZUFycmF5RW50cmllc05lZWRlZE91dCkpCisK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01BdWRp
b1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMsIE9TU3RhdHVzLCAoQ0ZB
bGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDTUJsb2NrQnVmZmVyUmVmIGRhdGFCdWZmZXIsIEJvb2xl
YW4gZGF0YVJlYWR5LCBDTVNhbXBsZUJ1ZmZlck1ha2VEYXRhUmVhZHlDYWxsYmFjayBtYWtlRGF0
YVJlYWR5Q2FsbGJhY2ssIHZvaWQgKm1ha2VEYXRhUmVhZHlSZWZjb24sIENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24sIENNSXRlbUNvdW50IG51bVNhbXBsZXMsIENNVGlt
ZSBzYnVmUFRTLCBjb25zdCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uICpwYWNrZXREZXNj
cmlwdGlvbnMsIENNU2FtcGxlQnVmZmVyUmVmICpzQnVmT3V0KSwgKGFsbG9jYXRvciwgZGF0YUJ1
ZmZlciwgZGF0YVJlYWR5LCBtYWtlRGF0YVJlYWR5Q2FsbGJhY2ssIG1ha2VEYXRhUmVhZHlSZWZj
b24sIGZvcm1hdERlc2NyaXB0aW9uLCBudW1TYW1wbGVzLCBzYnVmUFRTLCBwYWNrZXREZXNjcmlw
dGlvbnMsIHNCdWZPdXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwg
Q29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0
LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENGQWxsb2NhdG9yUmVmIGJidWZT
dHJ1Y3RBbGxvY2F0b3IsIENGQWxsb2NhdG9yUmVmIGJidWZNZW1vcnlBbGxvY2F0b3IsIHVpbnQz
Ml90IGZsYWdzLCBjb25zdCBBdWRpb0J1ZmZlckxpc3QgKmJ1ZmZlckxpc3QpLCAoc2J1ZiwgYmJ1
ZlN0cnVjdEFsbG9jYXRvciwgYmJ1Zk1lbW9yeUFsbG9jYXRvciwgZmxhZ3MsIGJ1ZmZlckxpc3Qp
KQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNh
bXBsZUJ1ZmZlclNldERhdGFSZWFkeSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVm
KSwgKHNidWYpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1l
ZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0
b3JSZWYgYWxsb2NhdG9yLCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGFzYmQs
IHNpemVfdCBsYXlvdXRTaXplLCBjb25zdCBBdWRpb0NoYW5uZWxMYXlvdXQqIGxheW91dCwgc2l6
ZV90IG1hZ2ljQ29va2llU2l6ZSwgY29uc3Qgdm9pZCogbWFnaWNDb29raWUsIENGRGljdGlvbmFy
eVJlZiBleHRlbnNpb25zLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYqIG91dERlc2MpLCAo
YWxsb2NhdG9yLCBhc2JkLCBsYXlvdXRTaXplLCBsYXlvdXQsIG1hZ2ljQ29va2llU2l6ZSwgbWFn
aWNDb29raWUsIGV4dGVuc2lvbnMsIG91dERlc2MpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaywgQ01DbG9j
a1JlZiwgKHZvaWQpLCAoKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUs
IENvcmVNZWRpYSwgQ01DbG9ja0dldFRpbWUsIENNVGltZSwgKENNQ2xvY2tSZWYgY2xvY2spLCAo
Y2xvY2spKQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAjaWYgUExBVEZPUk0oSU9TKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ29yZU1lZGlhU29mdExpbmsuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9Db3JlTWVkaWFTb2Z0TGluay5o
CShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9Db3JlTWVk
aWFTb2Z0TGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw4IEBAIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIEMKICNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXRG
b3JtYXREZXNjcmlwdGlvbiBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRGb3Jt
YXREZXNjcmlwdGlvbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29y
ZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm8sIE9TU3RhdHVzLCAoQ01T
YW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ01JdGVtSW5kZXggc2FtcGxlSW5kZXgsIENNU2FtcGxlVGlt
aW5nSW5mbyogdGltaW5nSW5mb091dCksIChzYnVmLCBzYW1wbGVJbmRleCwgdGltaW5nSW5mb091
dCkpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mbyBzb2Z0TGlua19D
b3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZUNvbnZlcnRTY2FsZSwg
Q01UaW1lLCAoQ01UaW1lIHRpbWUsIGludDMyX3QgbmV3VGltZXNjYWxlLCBDTVRpbWVSb3VuZGlu
Z01ldGhvZCBtZXRob2QpLCAodGltZSwgbmV3VGltZXNjYWxlLCBtZXRob2QpKQorI2RlZmluZSBD
TVRpbWVDb252ZXJ0U2NhbGUgc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZUNvbnZlcnRTY2FsZQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWVB
ZGQsIENNVGltZSwgKENNVGltZSB0aW1lMSwgQ01UaW1lIHRpbWUyKSwgKHRpbWUxLCB0aW1lMikp
CiAjZGVmaW5lIENNVGltZUFkZCBzb2Z0TGlua19Db3JlTWVkaWFfQ01UaW1lQWRkCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZUNvbXBhcmUs
IGludDMyX3QsIChDTVRpbWUgdGltZTEsIENNVGltZSB0aW1lMiksICh0aW1lMSwgdGltZTIpKQpA
QCAtMTM3LDYgKzEzOSwxMCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3Jl
LCBDCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIgc29mdExpbmtfQ29yZU1l
ZGlhX0NNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25U
aW1lU3RhbXAsIENNVGltZSwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCiAjZGVm
aW5lIENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wIHNvZnRMaW5rX0NvcmVN
ZWRpYV9DTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcAorU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldE91
dHB1dER1cmF0aW9uLCBDTVRpbWUsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQor
I2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uIHNvZnRMaW5rX0NvcmVNZWRp
YV9DTVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0T3V0cHV0UHJlc2Vu
dGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYp
KQorI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCBz
b2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50YXRpb25UaW1l
U3RhbXAKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwg
Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5LCBDRkFycmF5UmVmLCAoQ01T
YW1wbGVCdWZmZXJSZWYgc2J1ZiwgQm9vbGVhbiBjcmVhdGVJZk5lY2Vzc2FyeSksIChzYnVmLCBj
cmVhdGVJZk5lY2Vzc2FyeSkpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNo
bWVudHNBcnJheSBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRh
Y2htZW50c0FycmF5CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3Jl
TWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mb0FycmF5LCBPU1N0YXR1cywg
KENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUNvdW50IHRpbWluZ0FycmF5RW50cmllcywg
Q01TYW1wbGVUaW1pbmdJbmZvICp0aW1pbmdBcnJheU91dCwgQ01JdGVtQ291bnQgKnRpbWluZ0Fy
cmF5RW50cmllc05lZWRlZE91dCksIChzYnVmLCB0aW1pbmdBcnJheUVudHJpZXMsIHRpbWluZ0Fy
cmF5T3V0LCB0aW1pbmdBcnJheUVudHJpZXNOZWVkZWRPdXQpKQpAQCAtMTUzLDYgKzE1OSw4IEBA
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIEMKICNkZWZpbmUgQ01UaW1l
YmFzZVNldFJhdGUgc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZWJhc2VTZXRSYXRlCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZWJhc2VTZXRU
aW1lLCBPU1N0YXR1cywgKENNVGltZWJhc2VSZWYgdGltZWJhc2UsIENNVGltZSB0aW1lKSwgKHRp
bWViYXNlLCB0aW1lKSkKICNkZWZpbmUgQ01UaW1lYmFzZVNldFRpbWUgc29mdExpbmtfQ29yZU1l
ZGlhX0NNVGltZWJhc2VTZXRUaW1lCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJD
b3JlLCBDb3JlTWVkaWEsIENNVGltZWJhc2VHZXRFZmZlY3RpdmVSYXRlLCBGbG9hdDY0LCAoQ01U
aW1lYmFzZVJlZiB0aW1lYmFzZSksICh0aW1lYmFzZSkpCisjZGVmaW5lIENNVGltZWJhc2VHZXRF
ZmZlY3RpdmVSYXRlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWViYXNlR2V0RWZmZWN0aXZlUmF0
ZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRp
bWVDb3B5QXNEaWN0aW9uYXJ5LCBDRkRpY3Rpb25hcnlSZWYsIChDTVRpbWUgdGltZSwgQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yKSwgKHRpbWUsIGFsbG9jYXRvcikpCiAjZGVmaW5lIENNVGltZUNv
cHlBc0RpY3Rpb25hcnkgc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZUNvcHlBc0RpY3Rpb25hcnkK
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01WaWRl
b0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZmZXIsIE9TU3RhdHVzLCAoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yLCBDVkltYWdlQnVmZmVyUmVmIGltYWdlQnVmZmVyLCBDTVZpZGVv
Rm9ybWF0RGVzY3JpcHRpb25SZWYgKm91dERlc2MpLCAoYWxsb2NhdG9yLCBpbWFnZUJ1ZmZlciwg
b3V0RGVzYykpCkBAIC0xOTMsNiArMjAxLDE4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFdlYkNvcmUsIEMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENv
cmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVTaXplQXJyYXksIE9TU3RhdHVzLCAoQ01T
YW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ01JdGVtQ291bnQgc2l6ZUFycmF5RW50cmllcywgc2l6ZV90
KiBzaXplQXJyYXlPdXQsIENNSXRlbUNvdW50KiBzaXplQXJyYXlFbnRyaWVzTmVlZGVkT3V0KSwg
KHNidWYsIHNpemVBcnJheUVudHJpZXMsIHNpemVBcnJheU91dCwgc2l6ZUFycmF5RW50cmllc05l
ZWRlZE91dCkpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlU2l6ZUFycmF5IHNvZnRM
aW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVNpemVBcnJheQogCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNQXVkaW9TYW1wbGVC
dWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zLCBPU1N0YXR1cywgKENGQWxsb2NhdG9y
UmVmIGFsbG9jYXRvciwgQ01CbG9ja0J1ZmZlclJlZiBkYXRhQnVmZmVyLCBCb29sZWFuIGRhdGFS
ZWFkeSwgQ01TYW1wbGVCdWZmZXJNYWtlRGF0YVJlYWR5Q2FsbGJhY2sgbWFrZURhdGFSZWFkeUNh
bGxiYWNrLCB2b2lkICptYWtlRGF0YVJlYWR5UmVmY29uLCBDTUZvcm1hdERlc2NyaXB0aW9uUmVm
IGZvcm1hdERlc2NyaXB0aW9uLCBDTUl0ZW1Db3VudCBudW1TYW1wbGVzLCBDTVRpbWUgc2J1ZlBU
UywgY29uc3QgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbiAqcGFja2V0RGVzY3JpcHRpb25z
LCBDTVNhbXBsZUJ1ZmZlclJlZiAqc0J1Zk91dCksIChhbGxvY2F0b3IsIGRhdGFCdWZmZXIsIGRh
dGFSZWFkeSwgbWFrZURhdGFSZWFkeUNhbGxiYWNrLCBtYWtlRGF0YVJlYWR5UmVmY29uLCBmb3Jt
YXREZXNjcmlwdGlvbiwgbnVtU2FtcGxlcywgc2J1ZlBUUywgcGFja2V0RGVzY3JpcHRpb25zLCBz
QnVmT3V0KSkKKyNkZWZpbmUgQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNj
cmlwdGlvbnMgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRo
UGFja2V0RGVzY3JpcHRpb25zCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3Jl
LCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxp
c3QsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZBbGxvY2F0b3JSZWYgYmJ1
ZlN0cnVjdEFsbG9jYXRvciwgQ0ZBbGxvY2F0b3JSZWYgYmJ1Zk1lbW9yeUFsbG9jYXRvciwgdWlu
dDMyX3QgZmxhZ3MsIGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCAqYnVmZmVyTGlzdCksIChzYnVmLCBi
YnVmU3RydWN0QWxsb2NhdG9yLCBiYnVmTWVtb3J5QWxsb2NhdG9yLCBmbGFncywgYnVmZmVyTGlz
dCkpCisjZGVmaW5lIENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxp
c3Qgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRp
b0J1ZmZlckxpc3QKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVN
ZWRpYSwgQ01TYW1wbGVCdWZmZXJTZXREYXRhUmVhZHksIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZm
ZXJSZWYgc2J1ZiksIChzYnVmKSkKKyNkZWZpbmUgQ01TYW1wbGVCdWZmZXJTZXREYXRhUmVhZHkg
c29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyU2V0RGF0YVJlYWR5CitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNj
cmlwdGlvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogYXNiZCwgc2l6ZV90IGxheW91dFNpemUsIGNv
bnN0IEF1ZGlvQ2hhbm5lbExheW91dCogbGF5b3V0LCBzaXplX3QgbWFnaWNDb29raWVTaXplLCBj
b25zdCB2b2lkKiBtYWdpY0Nvb2tpZSwgQ0ZEaWN0aW9uYXJ5UmVmIGV4dGVuc2lvbnMsIENNQXVk
aW9Gb3JtYXREZXNjcmlwdGlvblJlZiogb3V0RGVzYyksIChhbGxvY2F0b3IsIGFzYmQsIGxheW91
dFNpemUsIGxheW91dCwgbWFnaWNDb29raWVTaXplLCBtYWdpY0Nvb2tpZSwgZXh0ZW5zaW9ucywg
b3V0RGVzYykpCisjZGVmaW5lIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZSBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRIb3N0VGltZUNs
b2NrLCBDTUNsb2NrUmVmLCAodm9pZCksICgpKQorI2RlZmluZSBDTUNsb2NrR2V0SG9zdFRpbWVD
bG9jayAgc29mdExpbmtfQ29yZU1lZGlhX0NNQ2xvY2tHZXRIb3N0VGltZUNsb2NrCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNQ2xvY2tHZXRUaW1l
LCBDTVRpbWUsIChDTUNsb2NrUmVmIGNsb2NrKSwgKGNsb2NrKSkKKyNkZWZpbmUgQ01DbG9ja0dl
dFRpbWUgIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUNsb2NrR2V0VGltZQogI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKQogCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVNhbXBsZUFWRk9iakMuaAkocmV2aXNpb24gMjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw4ICs1NCwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgfk1lZGlhU2Ft
cGxlQVZGT2JqQygpIHsgfQogCiAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBNZWRpYVRpbWUgb3V0cHV0UHJlc2VudGF0aW9uVGltZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTWVkaWFUaW1lIG91
dHB1dER1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBdG9taWNTdHJpbmcgdHJhY2tJ
RCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KICAgICB2b2lkIHNldFRyYWNrSUQo
Y29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5oCShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICszOSw4IEBAIE9CSkNfQ0xBU1MgQVZT
YW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyOwogT0JKQ19DTEFTUyBBVlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjsKIE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXI7CiBP
QkpDX0NMQVNTIEFWU3RyZWFtU2Vzc2lvbjsKK09CSkNfQ0xBU1MgTlNOdW1iZXI7CitPQkpDX0NM
QVNTIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI7CiB0eXBlZGVmIHN0cnVj
dCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTUzLDYgKzU1LDEwIEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW07CiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI7CiAjZW5kaWYKIAorI2lm
IF9faGFzX2luY2x1ZGUoPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9u
aXplci5oPikKKyNkZWZpbmUgVVNFX1JFTkRFUl9TWU5DSFJPTklaRVIgMQorI2VuZGlmCisKIGNs
YXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHByaXZhdGUgTWVkaWFTdHJlYW1Qcml2YXRlOjpP
YnNlcnZlciwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgewogcHVi
bGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyhN
ZWRpYVBsYXllciopOwpAQCAtNzUsNiArODEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnN1cmVM
YXllcigpOwogICAgIHZvaWQgZGVzdHJveUxheWVyKCk7CiAKKyAgICB2b2lkIHJlbmRlcmVyU3Rh
dHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciosIE5TTnVtYmVyKik7Cisg
ICAgdm9pZCBsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcios
IE5TTnVtYmVyKik7CisKIHByaXZhdGU6CiAgICAgLy8gTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlCiAKQEAgLTk3LDcgKzEwNiw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwYXVzZWQoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KSBvdmVycmlkZTsKLSAgICB2
b2lkIGludGVybmFsU2V0Vm9sdW1lKGZsb2F0LCBib29sKTsKICAgICB2b2lkIHNldE11dGVkKGJv
b2wpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNNdXRpbmcoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAKQEAgLTEyMiwxMyArMTMwLDI2IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlIHsgLyogTm8tb3AgKi8gfQogCi0g
ICAgdm9pZCBlbnF1ZXVlQXVkaW9TYW1wbGVCdWZmZXJGcm9tVHJhY2soTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUmLCBNZWRpYVNhbXBsZSYpOworICAgIHZvaWQgZmx1c2hSZW5kZXJlcnMoKTsKIAot
ICAgIHZvaWQgcHJlcGFyZVZpZGVvU2FtcGxlQnVmZmVyRnJvbVRyYWNrKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlJiwgTWVkaWFTYW1wbGUmKTsKLSAgICB2b2lkIGVucXVldWVWaWRlb1NhbXBsZUJ1
ZmZlcihNZWRpYVNhbXBsZSYpOworICAgIHVzaW5nIFBlbmRpbmdTYW1wbGVRdWV1ZSA9IERlcXVl
PFJlZjxNZWRpYVNhbXBsZT4+OworICAgIHZvaWQgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoUGVu
ZGluZ1NhbXBsZVF1ZXVlJiwgTWVkaWFTYW1wbGUmKTsKKyAgICB2b2lkIHJlbW92ZU9sZFNhbXBs
ZXNGcm9tUGVuZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGVRdWV1ZSYpOworCisgICAgdm9pZCB1cGRh
dGVTYW1wbGVUaW1lcyhNZWRpYVNhbXBsZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IGNoYXIq
KTsKKyAgICBNZWRpYVRpbWUgY2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFTYW1w
bGUmLCBkb3VibGUpOworICAgIAorICAgIHZvaWQgZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJiwgTWVkaWFTYW1wbGUmKTsKICAgICBib29sIHNob3VsZEVucXVldWVW
aWRlb1NhbXBsZUJ1ZmZlcigpIGNvbnN0OwogICAgIHZvaWQgZmx1c2hBbmRSZW1vdmVWaWRlb1Nh
bXBsZUJ1ZmZlcnMoKTsKLSAgICB2b2lkIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JN
ZWRpYURhdGEoKTsKKyAgICB2b2lkIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRl
b0RhdGEoKTsKKworICAgIHZvaWQgZW5xdWV1ZUF1ZGlvU2FtcGxlKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJiwgTWVkaWFTYW1wbGUmKTsKKyAgICB2b2lkIGNyZWF0ZUF1ZGlvUmVuZGVyZXIoQXRv
bWljU3RyaW5nKTsKKyAgICB2b2lkIGRlc3Ryb3lBdWRpb1JlbmRlcmVyKEFWU2FtcGxlQnVmZmVy
QXVkaW9SZW5kZXJlciopOworICAgIHZvaWQgZGVzdHJveUF1ZGlvUmVuZGVyZXIoQXRvbWljU3Ry
aW5nKTsKKyAgICB2b2lkIGRlc3Ryb3lBdWRpb1JlbmRlcmVycygpOworICAgIHZvaWQgcmVxdWVz
dE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvckF1ZGlvRGF0YShBdG9taWNTdHJpbmcpOwogCiAgICAg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtMTU1LDYgKzE3Niw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVJbnRyaW5zaWNTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgIHZvaWQg
dXBkYXRlVHJhY2tzKCk7CiAgICAgdm9pZCByZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOworICAgIHZv
aWQgY2hlY2tTZWxlY3RlZFZpZGVvVHJhY2soKTsKIAogICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJl
ZFRhc2soRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKQEAgLTE4NiwyNiArMjA4LDM2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRl
OwogI2VuZGlmCiAKLSAgICBib29sIGhhdmVWaWRlb0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgfHwgbV92aWRlb1ByZXZpZXdQbGF5ZXI7IH0KKyAgICBN
ZWRpYVRpbWUgc3RyZWFtVGltZSgpIGNvbnN0OworCisjaWYgVVNFKFJFTkRFUl9TWU5DSFJPTkla
RVIpCisgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIGZpbmFs
OworI2VuZGlmCiAKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXIgeyBudWxscHRyIH07CiAgICAg
V2Vha1B0ckZhY3Rvcnk8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDPiBtX3dl
YWtQdHJGYWN0b3J5OwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+IG1fbWVkaWFTdHJl
YW1Qcml2YXRlOwogCi0gICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3PiBtX3Zp
ZGVvUHJldmlld1BsYXllcjsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1f
dmlkZW9UcmFjazsKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYWN0aXZl
VmlkZW9UcmFjazsKIAorICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5n
ZUxpc3RlbmVyPiBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyOwogICAgIFJldGFpblB0cjxBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7Ci0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQorICAgIEhhc2hNYXA8U3Ry
aW5nLCBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPj4gbV9hdWRpb1JlbmRl
cmVyczsKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXI+IG1f
c3luY2hyb25pemVyOworI2Vsc2UKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2xvY2s+IG1fY2xvY2s7
CiAjZW5kaWYKKworICAgIE1lZGlhVGltZSBtX3BhdXNlZFRpbWU7CiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IG1fcGF1c2VkSW1hZ2U7Ci0gICAgZG91YmxlIG1fcGF1c2VkVGltZSB7IDAgfTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2xvY2s+IG1fY2xvY2s7CiAKICAgICBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+PiBtX2F1ZGlvVHJhY2tNYXA7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Pj4gbV92aWRlb1RyYWNrTWFwOwotICAgIERlcXVlPFJlZjxNZWRpYVNhbXBsZT4+IG1fc2FtcGxl
UXVldWU7CisgICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWU7
CisjaWYgVVNFKFJFTkRFUl9TWU5DSFJPTklaRVIpCisgICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1f
cGVuZGluZ0F1ZGlvU2FtcGxlUXVldWU7CisjZW5kaWYKIAogICAgIE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGUgeyBNZWRpYVBsYXllcjo6RW1wdHkgfTsKICAgICBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGUgeyBNZWRpYVBsYXllcjo6SGF2ZU5vdGhp
bmcgfTsKQEAgLTIxOSw2ICsyNTEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNFdmVyRW5x
dWV1ZWRWaWRlb0ZyYW1lIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUmVjZWl2ZWRNZWRpYSB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzRnJhbWVEaXNwbGF5ZWQgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9wZW5kaW5nU2VsZWN0ZWRUcmFja0NoZWNrIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJN
YW5hZ2VyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkocmV2aXNpb24gMjEwMzU2
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTIsMTggKzUyLDE0OSBAQAogCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91
bmRhdGlvbikKIAorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTYW1w
bGVCdWZmZXJBdWRpb1JlbmRlcmVyKQogU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRh
dGlvbiwgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9O
QUwoQVZGb3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplcikKIAorU09G
VF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVNw
ZWN0cmFsLCBOU1N0cmluZyopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkF1
ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNwZWVkLCBOU1N0cmluZyopCisKKyNkZWZpbmUgQVZB
dWRpb1RpbWVQaXRjaEFsZ29yaXRobVNwZWN0cmFsIGdldEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0
aG1TcGVjdHJhbCgpCisjZGVmaW5lIEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1WYXJpc3BlZWQg
Z2V0QVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCgpCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitAaW50ZXJmYWNlIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlz
dGVuZXIgOiBOU09iamVjdCB7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDKiBfcGFyZW50OworICAgIFZlY3RvcjxSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI+PiBfbGF5ZXJzOworICAgIFZlY3RvcjxSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRp
b1JlbmRlcmVyPj4gX3JlbmRlcmVyczsKK30KKworLSAoaWQpaW5pdFdpdGhQYXJlbnQ6KE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyopY2FsbGJhY2s7CistICh2b2lkKWludmFs
aWRhdGU7CistICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXI6KEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyICopbGF5ZXI7CistICh2b2lkKXN0b3BPYnNlcnZpbmdMYXllcjooQVZTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIgKilsYXllcjsKKy0gKHZvaWQpYmVnaW5PYnNlcnZpbmdSZW5kZXJlcjoo
QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyICopcmVuZGVyZXI7CistICh2b2lkKXN0b3BPYnNl
cnZpbmdSZW5kZXJlcjooQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyICopcmVuZGVyZXI7CitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3Rl
bmVyCisKKy0gKGlkKWluaXRXaXRoUGFyZW50OihNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMqKXBhcmVudAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgX3BhcmVudCA9IHBhcmVudDsKKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW3NlbGYgaW52YWxpZGF0ZV07CisgICAg
W3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWludmFsaWRhdGUKK3sKKyAgICBmb3IgKGF1
dG8mIGxheWVyIDogX2xheWVycykKKyAgICAgICAgW2xheWVyIHJlbW92ZU9ic2VydmVyOnNlbGYg
Zm9yS2V5UGF0aDpAInN0YXR1cyJdOworICAgIF9sYXllcnMuY2xlYXIoKTsKKworICAgIGZvciAo
YXV0byYgcmVuZGVyZXIgOiBfcmVuZGVyZXJzKQorICAgICAgICBbcmVuZGVyZXIgcmVtb3ZlT2Jz
ZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVzIl07CisgICAgX3JlbmRlcmVycy5jbGVhcigp
OworCisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNl
cnZlcjpzZWxmXTsKKworICAgIF9wYXJlbnQgPSBudWxscHRyOworfQorCistICh2b2lkKWJlZ2lu
T2JzZXJ2aW5nTGF5ZXI6KEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKilsYXllcgoreworICAg
IEFTU0VSVChfcGFyZW50KTsKKyAgICBBU1NFUlQoIV9sYXllcnMuY29udGFpbnMobGF5ZXIpKTsK
KworICAgIF9sYXllcnMuYXBwZW5kKGxheWVyKTsKKyAgICBbbGF5ZXIgYWRkT2JzZXJ2ZXI6c2Vs
ZiBmb3JLZXlQYXRoOkAic3RhdHVzIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25O
ZXcgY29udGV4dDpudWxscHRyXTsKK30KKworLSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXI6KEFW
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKilsYXllcgoreworICAgIEFTU0VSVChfcGFyZW50KTsK
KyAgICBBU1NFUlQoX2xheWVycy5jb250YWlucyhsYXllcikpOworCisgICAgW2xheWVyIHJlbW92
ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOworICAgIF9sYXllcnMucmVtb3Zl
KF9sYXllcnMuZmluZChsYXllcikpOworfQorCistICh2b2lkKWJlZ2luT2JzZXJ2aW5nUmVuZGVy
ZXI6KEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciopcmVuZGVyZXIKK3sKKyAgICBBU1NFUlQo
X3BhcmVudCk7CisgICAgQVNTRVJUKCFfcmVuZGVyZXJzLmNvbnRhaW5zKHJlbmRlcmVyKSk7CisK
KyAgICBfcmVuZGVyZXJzLmFwcGVuZChyZW5kZXJlcik7CisgICAgW3JlbmRlcmVyIGFkZE9ic2Vy
dmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5n
T3B0aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07Cit9CisKKy0gKHZvaWQpc3RvcE9ic2VydmluZ1Jl
bmRlcmVyOihBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqKXJlbmRlcmVyCit7CisgICAgQVNT
RVJUKF9wYXJlbnQpOworICAgIEFTU0VSVChfcmVuZGVyZXJzLmNvbnRhaW5zKHJlbmRlcmVyKSk7
CisKKyAgICBbcmVuZGVyZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVz
Il07CisgICAgX3JlbmRlcmVycy5yZW1vdmUoX3JlbmRlcmVycy5maW5kKHJlbmRlcmVyKSk7Cit9
CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9m
T2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoo
dm9pZCAqKWNvbnRleHQKK3sKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAgVU5VU0VE
X1BBUkFNKGtleVBhdGgpOworICAgIEFTU0VSVChfcGFyZW50KTsKKworICAgIFJldGFpblB0cjxX
ZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPiBwcm90ZWN0ZWRTZWxmID0gc2Vs
ZjsKKyAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOmdldEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyQ2xhc3MoKV0pIHsKKyAgICAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyPiBsYXllciA9IChBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAqKW9iamVjdDsKKyAg
ICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBzdGF0dXMgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5T
S2V5VmFsdWVDaGFuZ2VOZXdLZXldOworCisgICAgICAgIEFTU0VSVChfbGF5ZXJzLmNvbnRhaW5z
KGxheWVyLmdldCgpKSk7CisgICAgICAgIEFTU0VSVChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJzdGF0dXMiXSk7CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIGxheWVyID0gV1RGTW92ZShsYXllciksIHN0YXR1cyA9
IFdURk1vdmUoc3RhdHVzKV0geworICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3BhcmVudC0+
bGF5ZXJTdGF0dXNEaWRDaGFuZ2UobGF5ZXIuZ2V0KCksIHN0YXR1cy5nZXQoKSk7CisgICAgICAg
IH0pOworCisgICAgfSBlbHNlIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6Z2V0QVZTYW1wbGVC
dWZmZXJBdWRpb1JlbmRlcmVyQ2xhc3MoKV0pIHsKKyAgICAgICAgUmV0YWluUHRyPEFWU2FtcGxl
QnVmZmVyQXVkaW9SZW5kZXJlcj4gcmVuZGVyZXIgPSAoQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRl
cmVyICopb2JqZWN0OworICAgICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHN0YXR1cyA9IFtjaGFu
Z2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisKKyAgICAgICAgQVNTRVJU
KF9yZW5kZXJlcnMuY29udGFpbnMocmVuZGVyZXIuZ2V0KCkpKTsKKyAgICAgICAgQVNTRVJUKFtr
ZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInN0YXR1cyJdKTsKKworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRTZWxmKSwgcmVuZGVyZXIg
PSBXVEZNb3ZlKHJlbmRlcmVyKSwgc3RhdHVzID0gV1RGTW92ZShzdGF0dXMpXSB7CisgICAgICAg
ICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5yZW5kZXJlclN0YXR1c0RpZENoYW5nZShyZW5k
ZXJlci5nZXQoKSwgc3RhdHVzLmdldCgpKTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorQGVuZAorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDCiAKK3N0YXRpYyBjb25zdCBkb3VibGUgcmVuZGVyZXJMYXRlbmN5ID0gMC4w
MjsKKwogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxh
eWVyKHBsYXllcikKICAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKKyAgICAsIG1fc3RhdHVz
Q2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlz
dGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKKyNpZiBVU0UoUkVOREVSX1NZTkNI
Uk9OSVpFUikKKyAgICAsIG1fc3luY2hyb25pemVyKGFkb3B0TlMoW2FsbG9jQVZTYW1wbGVCdWZm
ZXJSZW5kZXJTeW5jaHJvbml6ZXJJbnN0YW5jZSgpIGluaXRdKSkKKyNlbHNlCiAgICAgLCBtX2Ns
b2NrKENsb2NrOjpjcmVhdGUoKSkKKyNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1h
bmFnZXIoVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpjcmVhdGUoKSkKICNlbmRpZgpAQCAt
ODEsMTAgKzIxMiwxMyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6On5N
CiAgICAgICAgICAgICB0cmFjay0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogICAgIH0KIAorICAg
IGRlc3Ryb3lMYXllcigpOworI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQorICAgIGRlc3Ry
b3lBdWRpb1JlbmRlcmVycygpOworI2VuZGlmCisKICAgICBtX2F1ZGlvVHJhY2tNYXAuY2xlYXIo
KTsKICAgICBtX3ZpZGVvVHJhY2tNYXAuY2xlYXIoKTsKLQotICAgIGRlc3Ryb3lMYXllcigpOwog
fQogCiAjcHJhZ21hIG1hcmsgLQpAQCAtMTI3LDM0ICsyNjEsMTA3IEBAIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcmkKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsg
QVZTYW1wbGVCdWZmZXIgTWV0aG9kcwogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZW5xdWV1ZUF1ZGlvU2FtcGxlQnVmZmVyRnJvbVRyYWNrKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJiwgTWVkaWFTYW1wbGUmKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKFBlbmRpbmdT
YW1wbGVRdWV1ZSYgcXVldWUpCiB7Ci0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4MzYKKyAgICBNZWRpYVRpbWUgbm93ID0gc3RyZWFtVGlt
ZSgpOworICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChxdWV1ZS5m
aXJzdCgpLT5kZWNvZGVUaW1lKCkgPiBub3cpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
cXVldWUucmVtb3ZlRmlyc3QoKTsKKyAgICB9OwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvck1lZGlh
RGF0YSgpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWRkU2Ft
cGxlVG9QZW5kaW5nUXVldWUoUGVuZGluZ1NhbXBsZVF1ZXVlJiBxdWV1ZSwgTWVkaWFTYW1wbGUm
IHNhbXBsZSkKIHsKLSAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgcmVxdWVzdE1lZGlh
RGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2Nr
Ol4gewotICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdN
ZWRpYURhdGFdOworICAgIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKHF1ZXVlKTsK
KyAgICBxdWV1ZS5hcHBlbmQoc2FtcGxlKTsKK30KIAotICAgICAgICB3aGlsZSAoIW1fc2FtcGxl
UXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgICAgICAgICByZXF1
ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yTWVkaWFEYXRhKCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnVwZGF0ZVNhbXBsZVRpbWVzKE1lZGlhU2FtcGxlJiBzYW1wbGUsIGNvbnN0IE1l
ZGlhVGltZSYgdGltZWxpbmVPZmZzZXQsIGNvbnN0IGNoYXIqIGxvZ2dpbmdQcmVmaXgpCit7Cisg
ICAgTE9HKE1lZGlhQ2FwdHVyZVNhbXBsZXMsICIlcyglcCk6IG9yaWdpbmFsIHNhbXBsZSA9ICVz
IiwgbG9nZ2luZ1ByZWZpeCwgdGhpcywgdG9TdHJpbmcoc2FtcGxlKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBzYW1wbGUub2Zmc2V0VGltZXN0YW1wc0J5KHRpbWVsaW5lT2Zmc2V0KTsKKyAgICBMT0co
TWVkaWFDYXB0dXJlU2FtcGxlcywgIiVzKCVwKTogYWRqdXN0ZWQgc2FtcGxlID0gJXMiLCBsb2dn
aW5nUHJlZml4LCB0aGlzLCB0b1N0cmluZyhzYW1wbGUpLnV0ZjgoKS5kYXRhKCkpOworCisjaWYg
IUxPR19ESVNBQkxFRAorICAgIE1lZGlhVGltZSBub3cgPSBzdHJlYW1UaW1lKCk7CisgICAgZG91
YmxlIGRlbHRhID0gKHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCkgLSBub3cpLnRvRG91YmxlKCk7
CisgICAgaWYgKGRlbHRhIDwgMCkKKyAgICAgICAgTE9HKE1lZGlhLCAiJXMoJXApOiAqTk9URSog
YXVkaW8gc2FtcGxlIGF0IHRpbWUgJXMgaXMgJWYgc2Vjb25kcyBsYXRlIiwgbG9nZ2luZ1ByZWZp
eCwgdGhpcywgdG9TdHJpbmcobm93KS51dGY4KCkuZGF0YSgpLCAtZGVsdGEpOworICAgIGVsc2Ug
aWYgKGRlbHRhIDwgLjAxKQorICAgICAgICBMT0coTWVkaWEsICIlcyglcCk6ICpOT1RFKiBhdWRp
byBzYW1wbGUgYXQgdGltZSAlcyBpcyBvbmx5ICVzIHNlY29uZHMgZWFybHkiLCBsb2dnaW5nUHJl
Zml4LCB0aGlzLCB0b1N0cmluZyhub3cpLnV0ZjgoKS5kYXRhKCksIGRlbHRhKTsKKyAgICBlbHNl
IGlmIChkZWx0YSA+IC4zKQorICAgICAgICBMT0coTWVkaWEsICIlcyglcCk6ICpOT1RFKiBhdWRp
byBzYW1wbGUgYXQgdGltZSAlcyBpcyAlcyBzZWNvbmRzIGVhcmx5ISIsIGxvZ2dpbmdQcmVmaXgs
IHRoaXMsIHRvU3RyaW5nKG5vdykudXRmOCgpLmRhdGEoKSwgZGVsdGEpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0obG9nZ2luZ1ByZWZpeCk7CisjZW5kaWYKIAotICAgICAgICAgICAgYXV0byBz
YW1wbGUgPSBtX3NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgZW5xdWV1ZVZp
ZGVvU2FtcGxlQnVmZmVyKHNhbXBsZS5nZXQoKSk7Ci0gICAgICAgIH0KLSAgICB9XTsKIH0KIAot
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1Nh
bXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQorTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoY29uc3QgTWVk
aWFTYW1wbGUmIHNhbXBsZSwgZG91YmxlIGxhdGVuY3kpCiB7CisgICAgTWVkaWFUaW1lIHNhbXBs
ZVRpbWUgPSBzYW1wbGUub3V0cHV0UHJlc2VudGF0aW9uVGltZSgpOworICAgIGlmICghc2FtcGxl
VGltZSB8fCAhc2FtcGxlVGltZS5pc1ZhbGlkKCkpCisgICAgICAgIHNhbXBsZVRpbWUgPSBzYW1w
bGUucHJlc2VudGF0aW9uVGltZSgpOworICAgIE1lZGlhVGltZSB0aW1lbGluZU9mZnNldCA9IHN0
cmVhbVRpbWUoKSAtIHNhbXBsZVRpbWUgKyBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobGF0
ZW5jeSk7CisgICAgaWYgKHRpbWVsaW5lT2Zmc2V0LnRpbWVTY2FsZSgpICE9IHNhbXBsZVRpbWUu
dGltZVNjYWxlKCkpCisgICAgICAgIHRpbWVsaW5lT2Zmc2V0ID0gdG9NZWRpYVRpbWUoQ01UaW1l
Q29udmVydFNjYWxlKHRvQ01UaW1lKHRpbWVsaW5lT2Zmc2V0KSwgc2FtcGxlVGltZS50aW1lU2Nh
bGUoKSwga0NNVGltZVJvdW5kaW5nTWV0aG9kX0RlZmF1bHQpKTsKKyAgICByZXR1cm4gdGltZWxp
bmVPZmZzZXQ7Cit9CisKKyNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVkaW9TYW1wbGUoTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBNZWRpYVNhbXBsZSYgc2FtcGxlKQoreworICAgIEFT
U0VSVChtX2F1ZGlvVHJhY2tNYXAuY29udGFpbnModHJhY2suaWQoKSkpOworICAgIEFTU0VSVCht
X2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHNhbXBsZS50cmFja0lEKCkpKTsKKworICAgIGF1dG8g
YXVkaW9UcmFjayA9IG1fYXVkaW9UcmFja01hcC5nZXQodHJhY2suaWQoKSk7CisgICAgTWVkaWFU
aW1lIHRpbWVsaW5lT2Zmc2V0ID0gYXVkaW9UcmFjay0+dGltZWxpbmVPZmZzZXQoKTsKKyAgICBp
ZiAodGltZWxpbmVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKSB7CisgICAgICAg
IHRpbWVsaW5lT2Zmc2V0ID0gY2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoc2FtcGxlLCByZW5kZXJl
ckxhdGVuY3kpOworICAgICAgICBhdWRpb1RyYWNrLT5zZXRUaW1lbGluZU9mZnNldCh0aW1lbGlu
ZU9mZnNldCk7CisgICAgICAgIExPRyhNZWRpYUNhcHR1cmVTYW1wbGVzLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVkaW9TYW1wbGU6IHRpbWVsaW5lIG9m
ZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICglbGxkLyVkKSIsIHRyYWNrLmlkKCkudXRmOCgpLmRh
dGEoKSwgdGltZWxpbmVPZmZzZXQudGltZVZhbHVlKCksIHRpbWVsaW5lT2Zmc2V0LnRpbWVTY2Fs
ZSgpKTsKKyAgICB9CisKKyAgICB1cGRhdGVTYW1wbGVUaW1lcyhzYW1wbGUsIHRpbWVsaW5lT2Zm
c2V0LCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVkaW9T
YW1wbGUiKTsKKworICAgIGF1dG8gcmVuZGVyZXIgPSBtX2F1ZGlvUmVuZGVyZXJzLmdldChzYW1w
bGUudHJhY2tJRCgpKTsKKyAgICBpZiAoIVtyZW5kZXJlciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0
YV0pIHsKKyAgICAgICAgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUobV9wZW5kaW5nQXVkaW9TYW1w
bGVRdWV1ZSwgc2FtcGxlKTsKKyAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZv
ckF1ZGlvRGF0YShzYW1wbGUudHJhY2tJRCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFtyZW5kZXJlciBlbnF1ZXVlU2FtcGxlQnVmZmVyOnNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgp
LnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcl07Cit9CisjZW5kaWYKKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1NhbXBsZShNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYgdHJhY2ssIE1lZGlhU2FtcGxlJiBzYW1wbGUpCit7CisgICAgQVNTRVJUKG1f
dmlkZW9UcmFja01hcC5jb250YWlucyh0cmFjay5pZCgpKSk7CisKKyAgICBpZiAoJnRyYWNrICE9
IG1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1faGFzUmVjZWl2ZWRNZWRpYSA9IHRydWU7CisgICAgdXBkYXRlUmVhZHlTdGF0
ZSgpOworICAgIGlmIChtX2Rpc3BsYXlNb2RlICE9IExpdmVQcmV2aWV3IHx8IChtX2Rpc3BsYXlN
b2RlID09IFBhdXNlZEltYWdlICYmIG1faXNGcmFtZURpc3BsYXllZCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gdmlkZW9UcmFjayA9IG1fdmlkZW9UcmFja01hcC5nZXQodHJhY2suaWQo
KSk7CisgICAgTWVkaWFUaW1lIHRpbWVsaW5lT2Zmc2V0ID0gdmlkZW9UcmFjay0+dGltZWxpbmVP
ZmZzZXQoKTsKKyAgICBpZiAodGltZWxpbmVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZhbGlkVGlt
ZSgpKSB7CisgICAgICAgIHRpbWVsaW5lT2Zmc2V0ID0gY2FsY3VsYXRlVGltZWxpbmVPZmZzZXQo
c2FtcGxlLCByZW5kZXJlckxhdGVuY3kpOworICAgICAgICB2aWRlb1RyYWNrLT5zZXRUaW1lbGlu
ZU9mZnNldCh0aW1lbGluZU9mZnNldCk7CisgICAgICAgIExPRyhNZWRpYUNhcHR1cmVTYW1wbGVz
LCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1w
bGU6IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICVmIiwgdHJhY2suaWQoKS51
dGY4KCkuZGF0YSgpLCB0aW1lbGluZU9mZnNldC50b0RvdWJsZSgpKTsKKyAgICB9CisKKyAgICB1
cGRhdGVTYW1wbGVUaW1lcyhzYW1wbGUsIHRpbWVsaW5lT2Zmc2V0LCAiTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGUiKTsKKwogICAgIGlmICht
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgewogICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgICAgIG1f
c2FtcGxlUXVldWUuYXBwZW5kKHNhbXBsZSk7Ci0gICAgICAgICAgICByZXF1ZXN0Tm90aWZpY2F0
aW9uV2hlblJlYWR5Rm9yTWVkaWFEYXRhKCk7CisgICAgICAgICAgICBhZGRTYW1wbGVUb1BlbmRp
bmdRdWV1ZShtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLCBzYW1wbGUpOworICAgICAgICAgICAg
cmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE2NCwxNyArMzcxLDE0MiBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgbV9pc0ZyYW1lRGlzcGxheWVkID0gdHJ1
ZTsKICAgICBpZiAoIW1faGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSkgewogICAgICAgICBtX2hh
c0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUgPSB0cnVlOworICAgICAgICBpZiAobV9kaXNwbGF5TW9k
ZSA9PSBQYXVzZWRJbWFnZSkKKyAgICAgICAgICAgIHVwZGF0ZVBhdXNlZEltYWdlKCk7CiAgICAg
ICAgIG1fcGxheWVyLT5maXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKLSAgICAgICAgdXBkYXRl
UGF1c2VkSW1hZ2UoKTsKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpwcmVwYXJlVmlkZW9TYW1wbGVCdWZmZXJGcm9tVHJhY2soTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUmIHRyYWNrLCBNZWRpYVNhbXBsZSYgc2FtcGxlKQordm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVh
ZHlGb3JWaWRlb0RhdGEoKQoreworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciByZXF1
ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVz
aW5nQmxvY2s6XiB7CisgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdG9wUmVx
dWVzdGluZ01lZGlhRGF0YV07CisKKyAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdWaWRlb1NhbXBs
ZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgICAgICAgICAgcmVx
dWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgZW5xdWV1ZVZp
ZGVvU2FtcGxlKCptX2FjdGl2ZVZpZGVvVHJhY2suZ2V0KCksIHNhbXBsZS5nZXQoKSk7CisgICAg
ICAgIH0KKyAgICB9XTsKK30KKworI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25X
aGVuUmVhZHlGb3JBdWRpb0RhdGEoQXRvbWljU3RyaW5nIHRyYWNrSUQpCit7CisgICAgaWYgKCFt
X2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIHJlbmRlcmVyID0gbV9hdWRpb1JlbmRlcmVycy5nZXQodHJhY2tJRCk7CisgICAgW3Jl
bmRlcmVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCkgdXNpbmdCbG9jazpeIHsKKyAgICAgICAgW3JlbmRlcmVyIHN0b3BSZXF1ZXN0aW5n
TWVkaWFEYXRhXTsKKworICAgICAgICBhdXRvIGF1ZGlvVHJhY2sgPSBtX2F1ZGlvVHJhY2tNYXAu
Z2V0KHRyYWNrSUQpOworICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUu
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoIVtyZW5kZXJlciBpc1JlYWR5Rm9yTW9yZU1l
ZGlhRGF0YV0pIHsKKyAgICAgICAgICAgICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5
Rm9yQXVkaW9EYXRhKHRyYWNrSUQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3BlbmRpbmdBdWRpb1NhbXBsZVF1
ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgZW5xdWV1ZUF1ZGlvU2FtcGxlKGF1ZGlvVHJh
Y2stPnN0cmVhbVRyYWNrKCksIHNhbXBsZS5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9XTsKK30K
Kwordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZUF1ZGlv
UmVuZGVyZXIoQXRvbWljU3RyaW5nIHRyYWNrSUQpCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvUmVu
ZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gYWRvcHROUyhb
YWxsb2NBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBb
cmVuZGVyZXIgc2V0QXVkaW9UaW1lUGl0Y2hBbGdvcml0aG06KG1fcGxheWVyLT5wcmVzZXJ2ZXNQ
aXRjaCgpID8gQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVNwZWN0cmFsIDogQVZBdWRpb1RpbWVQ
aXRjaEFsZ29yaXRobVZhcmlzcGVlZCldOworICAgIG1fYXVkaW9SZW5kZXJlcnMuc2V0KHRyYWNr
SUQsIHJlbmRlcmVyKTsKKyAgICBbbV9zeW5jaHJvbml6ZXIgYWRkUmVuZGVyZXI6cmVuZGVyZXIu
Z2V0KCldOworICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIGJlZ2luT2JzZXJ2aW5nUmVuZGVy
ZXI6cmVuZGVyZXIuZ2V0KCldOworICAgIGlmIChtX2F1ZGlvUmVuZGVyZXJzLnNpemUoKSA9PSAx
KQorICAgICAgICByZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUF1ZGlvUmVuZGVyZXIoQVZTYW1wbGVC
dWZmZXJBdWRpb1JlbmRlcmVyKiByZW5kZXJlcikKIHsKLSAgICBpZiAoJnRyYWNrICE9IG1fbWVk
aWFTdHJlYW1Qcml2YXRlLT5hY3RpdmVWaWRlb1RyYWNrKCkgfHwgIXNob3VsZEVucXVldWVWaWRl
b1NhbXBsZUJ1ZmZlcigpKQorICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIHN0b3BPYnNlcnZp
bmdSZW5kZXJlcjpyZW5kZXJlcl07CisgICAgW3JlbmRlcmVyIGZsdXNoXTsKKyAgICBbcmVuZGVy
ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOworCisgICAgQ01UaW1lIG5vdyA9IENNVGltZWJh
c2VHZXRUaW1lKFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0pOworICAgIFttX3N5bmNocm9uaXpl
ciByZW1vdmVSZW5kZXJlcjpyZW5kZXJlciBhdFRpbWU6bm93IHdpdGhDb21wbGV0aW9uSGFuZGxl
cjpeKEJPT0wpIHsgfV07Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpkZXN0cm95QXVkaW9SZW5kZXJlcihBdG9taWNTdHJpbmcgdHJhY2tJRCkKK3sKKyAg
ICBpZiAoIW1fYXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGVucXVldWVWaWRlb1NhbXBsZUJ1ZmZlcihzYW1wbGUpOworICAgIGRlc3Ryb3lB
dWRpb1JlbmRlcmVyKG1fYXVkaW9SZW5kZXJlcnMuZ2V0KHRyYWNrSUQpLmdldCgpKTsKKyAgICBt
X2F1ZGlvUmVuZGVyZXJzLnJlbW92ZSh0cmFja0lEKTsKKyAgICBpZiAoIW1fYXVkaW9SZW5kZXJl
cnMuc2l6ZSgpKQorICAgICAgICByZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUF1ZGlvUmVuZGVyZXJz
KCkKK3sKKyAgICBtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlLmNsZWFyKCk7CisgICAgZm9yIChh
dXRvJiByZW5kZXJlciA6IG1fYXVkaW9SZW5kZXJlcnMudmFsdWVzKCkpCisgICAgICAgIGRlc3Ry
b3lBdWRpb1JlbmRlcmVyKHJlbmRlcmVyLmdldCgpKTsKKyAgICBtX2F1ZGlvUmVuZGVyZXJzLmNs
ZWFyKCk7Cit9CisKK0F1ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCit7CisgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHJldHVybiBhIG1peCBvZiBhbGwgYXVkaW8gdHJhY2tzIC0gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDMwNQorICAgIGZvciAoY29uc3QgYXV0byYg
dHJhY2sgOiBtX2F1ZGlvVHJhY2tNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHRyYWNrLT5z
dHJlYW1UcmFjaygpLmVuZGVkKCkgfHwgIXRyYWNrLT5zdHJlYW1UcmFjaygpLmVuYWJsZWQoKSB8
fCB0cmFjay0+c3RyZWFtVHJhY2soKS5tdXRlZCgpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgcmV0dXJuIHRyYWNrLT5zdHJlYW1UcmFjaygpLmF1ZGlvU291cmNlUHJvdmlkZXIo
KTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlbmRlcmVyU3RhdHVzRGlkQ2hhbmdlKEFW
U2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciogcmVuZGVyZXIsIE5TTnVtYmVyKiBzdGF0dXMpCit7
CisjaWYgVVNFKFJFTkRFUl9TWU5DSFJPTklaRVIpCisgICAgU3RyaW5nIHRyYWNrSUQ7CisgICAg
Zm9yIChhdXRvJiBwYWlyIDogbV9hdWRpb1JlbmRlcmVycykgeworICAgICAgICBpZiAocGFpci52
YWx1ZSA9PSByZW5kZXJlcikgeworICAgICAgICAgICAgdHJhY2tJRCA9IHBhaXIua2V5OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKCF0cmFja0lELmlz
RW1wdHkoKSk7CisgICAgaWYgKHN0YXR1cy5pbnRlZ2VyVmFsdWUgPT0gQVZRdWV1ZWRTYW1wbGVC
dWZmZXJSZW5kZXJpbmdTdGF0dXNSZW5kZXJpbmcpCisgICAgICAgIG1fYXVkaW9UcmFja01hcC5n
ZXQodHJhY2tJRCktPnNldFRpbWVsaW5lT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZW5kZXJlcik7CisgICAgVU5VU0VEX1BBUkFNKHN0
YXR1cyk7CisjZW5kaWYKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmxheWVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKiBs
YXllciwgTlNOdW1iZXIqIHN0YXR1cykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGxheWVyLCBsYXll
ciA9PSBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik7CisgICAgQVNTRVJUKG1fYWN0aXZlVmlk
ZW9UcmFjayk7CisgICAgaWYgKHN0YXR1cy5pbnRlZ2VyVmFsdWUgPT0gQVZRdWV1ZWRTYW1wbGVC
dWZmZXJSZW5kZXJpbmdTdGF0dXNSZW5kZXJpbmcpCisgICAgICAgIG1fdmlkZW9UcmFja01hcC5n
ZXQobV9hY3RpdmVWaWRlb1RyYWNrLT5pZCgpKS0+c2V0VGltZWxpbmVPZmZzZXQoTWVkaWFUaW1l
OjppbnZhbGlkVGltZSgpKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmZsdXNoUmVuZGVyZXJzKCkKK3sKKyAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIpCisgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBmbHVzaF07CisK
KyNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKKyAgICBmb3IgKGF1dG8mIHJlbmRlcmVyIDog
bV9hdWRpb1JlbmRlcmVycy52YWx1ZXMoKSkKKyAgICAgICAgW3JlbmRlcmVyIGZsdXNoXTsKKyNl
bmRpZgogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2hv
dWxkRW5xdWV1ZVZpZGVvU2FtcGxlQnVmZmVyKCkgY29uc3QKQEAgLTE5Niw0OCArNTI4LDM4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVyKCkKIHsKLSAgICBpZiAo
IW1fbWVkaWFTdHJlYW1Qcml2YXRlIHx8IGhhdmVWaWRlb0xheWVyKCkpCisgICAgaWYgKG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBDQUxheWVyICp2
aWRlb0xheWVyID0gbmlsOwotICAgIGlmIChtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlk
ZW9UcmFjaygpKSB7Ci0gICAgICAgIG1fdmlkZW9QcmV2aWV3UGxheWVyID0gbV9tZWRpYVN0cmVh
bVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKS0+cHJldmlldygpOwotICAgICAgICBpZiAobV92
aWRlb1ByZXZpZXdQbGF5ZXIpCi0gICAgICAgICAgICB2aWRlb0xheWVyID0gbV92aWRlb1ByZXZp
ZXdQbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLSAgICB9Ci0KLSAgICBpZiAoIXZpZGVvTGF5ZXIp
IHsKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBhZG9wdE5TKFthbGxvY0FW
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgICAgIHZpZGVv
TGF5ZXIgPSBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKTsKKyAgICBtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciA9IGFkb3B0TlMoW2FsbG9jQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJJbnN0YW5jZSgpIGluaXRdKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIFttX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIl07CisgICAgW21fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyIHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIiXTsKICNlbmRpZgotICAgICAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9y
KENvbG9yOjpibGFjayk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuYmFj
a2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spOworICAgIFttX3N0YXR1
c0NoYW5nZUxpc3RlbmVyIGJlZ2luT2JzZXJ2aW5nTGF5ZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuZ2V0KCldOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBtX3N5bmNocm9uaXpl
ciA9IGFkb3B0TlMoW2FsbG9jQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXJJbnN0YW5j
ZSgpIGluaXRdKTsKLSAgICAgICAgW21fc3luY2hyb25pemVyIGFkZFJlbmRlcmVyOm1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKKyNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikK
KyAgICBbbV9zeW5jaHJvbml6ZXIgYWRkUmVuZGVyZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuZ2V0KCldOwogI2VuZGlmCi0gICAgfQogCiAgICAgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsK
ICAgICAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcih2aWRl
b0xheWVyLCBzbmFwcGVkSW50UmVjdChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJDb250
ZW50Qm94UmVjdCgpKS5zaXplKCkpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
LT5zZXRWaWRlb0xheWVyKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLCBzbmFwcGVk
SW50UmVjdChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5z
aXplKCkpOwogI2VuZGlmCiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpkZXN0cm95TGF5ZXIoKQogewotICAgIGlmICghaGF2ZVZpZGVvTGF5ZXIoKSkKKyAg
ICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3ZpZGVvUHJldmlld1BsYXllciA9IG51bGxwdHI7Ci0KICAgICBpZiAobV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIpIHsKKyAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVh
cigpOworICAgICAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXI6
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCldOwogICAgICAgICBbbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgICAgICBbbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBVU0Uo
UkVOREVSX1NZTkNIUk9OSVpFUikKICAgICAgICAgQ01UaW1lIGN1cnJlbnRUaW1lID0gQ01UaW1l
YmFzZUdldFRpbWUoW21fc3luY2hyb25pemVyIHRpbWViYXNlXSk7CiAgICAgICAgIFttX3N5bmNo
cm9uaXplciByZW1vdmVSZW5kZXJlcjptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKSBh
dFRpbWU6Y3VycmVudFRpbWUgd2l0aENvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCkgewogICAgICAg
ICAgICAgLy8gTm8tb3AuCkBAIC0zMDUsMTQgKzYyNywxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAKIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFo
YXZlVmlkZW9MYXllcigpIHx8IG1fZGlzcGxheU1vZGUgPT0gTm9uZSkKKyAgICBpZiAoIW1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIHx8IG1fZGlzcGxheU1vZGUgPT0gTm9uZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIt
PnZpZGVvSW5saW5lTGF5ZXIoKTsKICNlbHNlCi0gICAgaWYgKG1fdmlkZW9QcmV2aWV3UGxheWVy
KQotICAgICAgICByZXR1cm4gbV92aWRlb1ByZXZpZXdQbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsK
IAogICAgIHJldHVybiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKTsKICNlbmRpZgpA
QCAtMzIwLDcgKzY0MCw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3QKIAogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpEaXNwbGF5TW9kZSBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmN1cnJlbnREaXNwbGF5TW9kZSgp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fZW5kZWQgfHwgbV9pbnRyaW5zaWNTaXplLmlzRW1wdHkoKSB8
fCAhbWV0YURhdGFBdmFpbGFibGUoKSB8fCAhaGF2ZVZpZGVvTGF5ZXIoKSkKKyAgICBpZiAobV9l
bmRlZCB8fCBtX2ludHJpbnNpY1NpemUuaXNFbXB0eSgpIHx8ICFtZXRhRGF0YUF2YWlsYWJsZSgp
IHx8ICFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKICAgICAgICAgcmV0dXJuIE5vbmU7CiAK
ICAgICBpZiAobV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKSAmJiAhbV9t
ZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKS0+ZW5hYmxlZCgpKQpAQCAtMzY4
LDIzICs2ODgsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagog
ICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBtX3BsYXlpbmcgfHwgbV9lbmRlZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9jbG9jay0+c3RhcnQoKTsKICAgICBtX3BsYXlpbmcgPSB0
cnVlOwotCi0gICAgaWYgKG1fdmlkZW9QcmV2aWV3UGxheWVyKQotICAgICAgICBtX3ZpZGVvUHJl
dmlld1BsYXllci0+cGxheSgpOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBlbHNlCi0gICAgICAg
IFttX3N5bmNocm9uaXplciBzZXRSYXRlOjFdOworI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVS
KQorICAgIGlmICghbV9zeW5jaHJvbml6ZXIuZ2V0KCkucmF0ZSkKKyAgICAgICAgW21fc3luY2hy
b25pemVyIHNldFJhdGU6MSBdOyAvLyBzdHJlYW10aW1lCisjZWxzZQorICAgIGlmICghbV9jbG9j
ay0+aXNSdW5uaW5nKCkpCisgICAgICAgIG1fY2xvY2stPnN0YXJ0KCk7CiAjZW5kaWYKIAotICAg
IGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tNYXAudmFsdWVzKCkpIHsKLSAg
ICAgICAgaWYgKCF0cmFjay0+ZW5hYmxlZCgpIHx8ICF0cmFjay0+c3RyZWFtVHJhY2soKS5wcmV2
aWV3KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICB0cmFjay0+c3RyZWFtVHJh
Y2soKS5wcmV2aWV3KCktPnBsYXkoKTsKLSAgICB9Ci0KICAgICBtX2hhdmVFdmVyUGxheWVkID0g
dHJ1ZTsKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICB1cGRhdGVE
aXNwbGF5TW9kZSgpOwpAQCAtMzk5LDI1ICs3MTEsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iagogICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCAhbV9w
bGF5aW5nIHx8IG1fZW5kZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGF1c2VkVGltZSA9
IG1fY2xvY2stPmN1cnJlbnRUaW1lKCk7CisgICAgbV9wYXVzZWRUaW1lID0gY3VycmVudE1lZGlh
VGltZSgpOwogICAgIG1fcGxheWluZyA9IGZhbHNlOwogCi0gICAgaWYgKG1fdmlkZW9QcmV2aWV3
UGxheWVyKQotICAgICAgICBtX3ZpZGVvUHJldmlld1BsYXllci0+cGF1c2UoKTsKLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgZWxzZQotICAgICAgICBbbV9zeW5jaHJvbml6ZXIgc2V0UmF0ZTowXTsK
LSNlbmRpZgotCi0gICAgZm9yIChjb25zdCBhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja01hcC52
YWx1ZXMoKSkgewotICAgICAgICBpZiAoIXRyYWNrLT5lbmFibGVkKCkgfHwgIXRyYWNrLT5zdHJl
YW1UcmFjaygpLnByZXZpZXcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHRy
YWNrLT5zdHJlYW1UcmFjaygpLnByZXZpZXcoKS0+cGF1c2UoKTsKLSAgICB9Ci0KICAgICB1cGRh
dGVEaXNwbGF5TW9kZSgpOwogICAgIHVwZGF0ZVBhdXNlZEltYWdlKCk7CisgICAgZmx1c2hSZW5k
ZXJlcnMoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnBhdXNlZCgpIGNvbnN0CkBAIC00MjUsMjUgKzcyNCwxOSBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgcmV0dXJuICFtX3BsYXlpbmc7CiB9CiAKLXZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjppbnRlcm5hbFNldFZvbHVtZShm
bG9hdCB2b2x1bWUsIGJvb2wgaW50ZXJuYWwpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKIHsKLSAgICBpZiAoIWludGVy
bmFsKQotICAgICAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZvbHVtZSglcCkiLCB0aGlzKTsKIAot
ICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSkKKyAgICBpZiAobV92b2x1bWUgPT0gdm9sdW1l
KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRp
b1RyYWNrTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICghdHJhY2stPmVuYWJsZWQoKSB8fCAh
dHJhY2stPnN0cmVhbVRyYWNrKCkucHJldmlldygpKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCkucHJldmlldygpLT5zZXRWb2x1bWUodm9sdW1l
KTsKLSAgICB9Ci19CisgICAgbV92b2x1bWUgPSB2b2x1bWU7CiAKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQotewotICAg
IGludGVybmFsU2V0Vm9sdW1lKHZvbHVtZSwgZmFsc2UpOworI2lmIFVTRShSRU5ERVJfU1lOQ0hS
T05JWkVSKQorICAgIGZvciAoYXV0byYgcmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJzLnZhbHVl
cygpKQorICAgICAgICBbcmVuZGVyZXIgc2V0Vm9sdW1lOnZvbHVtZV07CisjZW5kaWYKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldE11dGVkKGJvb2wg
bXV0ZWQpCkBAIC00NTUsNyArNzQ4LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmoKIAogICAgIG1fbXV0ZWQgPSBtdXRlZDsKICAgICAKLSAgICBpbnRlcm5hbFNl
dFZvbHVtZShtdXRlZCA/IDAgOiBtX3ZvbHVtZSwgdHJ1ZSk7CisjaWYgVVNFKFJFTkRFUl9TWU5D
SFJPTklaRVIpCisgICAgZm9yIChhdXRvJiByZW5kZXJlciA6IG1fYXVkaW9SZW5kZXJlcnMudmFs
dWVzKCkpCisgICAgICAgIFtyZW5kZXJlciBzZXRNdXRlZDptdXRlZF07CisjZW5kaWYKIH0KIAog
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Omhhc1ZpZGVvKCkgY29u
c3QKQEAgLTQ4MSw3ICs3NzcsMTkgQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKG1fcGxheWluZyA/IG1fY2xvY2stPmN1cnJlbnRUaW1lKCkgOiBtX3BhdXNl
ZFRpbWUpOworICAgIGlmICghbV9wbGF5aW5nKQorICAgICAgICByZXR1cm4gbV9wYXVzZWRUaW1l
OworCisgICAgcmV0dXJuIHN0cmVhbVRpbWUoKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c3RyZWFtVGltZSgpIGNvbnN0Cit7CisjaWYgVVNF
KFJFTkRFUl9TWU5DSFJPTklaRVIpCisgICAgcmV0dXJuIHRvTWVkaWFUaW1lKENNVGltZWJhc2VH
ZXRUaW1lKFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0pKTsKKyNlbHNlCisgICAgcmV0dXJuIE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX2Nsb2NrLT5jdXJyZW50VGltZSgpKTsKKyNlbmRp
ZgogfQogCiBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6bmV0d29ya1N0YXRlKCkgY29uc3QKQEAgLTU5OCwyNSArOTA2LDM2IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICBBU1NFUlQobWVk
aWFTYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBs
ZUJ1ZmZlclR5cGUpOwogICAgIEFTU0VSVChtX21lZGlhU3RyZWFtUHJpdmF0ZSk7CiAKKyAgICBp
ZiAoIW1faGFzUmVjZWl2ZWRNZWRpYSkgeworICAgICAgICBtX2hhc1JlY2VpdmVkTWVkaWEgPSB0
cnVlOworICAgICAgICB1cGRhdGVSZWFkeVN0YXRlKCk7CisgICAgfQorCisgICAgaWYgKCFtX3Bs
YXlpbmcgfHwgc3RyZWFtVGltZSgpLnRvRG91YmxlKCkgPCAwKQorICAgICAgICByZXR1cm47CisK
KyNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKKyAgICBpZiAoIUNNVGltZWJhc2VHZXRFZmZl
Y3RpdmVSYXRlKFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0pKQorICAgICAgICByZXR1cm47Cisj
ZW5kaWYKKwogICAgIHN3aXRjaCAodHJhY2sudHlwZSgpKSB7CiAgICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlOjpOb25lOgogICAgICAgICAvLyBEbyBub3RoaW5nLgogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvOgotICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTgzNgorI2lmIFVTRShS
RU5ERVJfU1lOQ0hST05JWkVSKQorICAgICAgICBlbnF1ZXVlQXVkaW9TYW1wbGUodHJhY2ssIG1l
ZGlhU2FtcGxlKTsKKyNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvOgotICAgICAgICBwcmVwYXJlVmlkZW9TYW1wbGVCdWZmZXJGcm9tVHJh
Y2sodHJhY2ssIG1lZGlhU2FtcGxlKTsKLSAgICAgICAgbV9oYXNSZWNlaXZlZE1lZGlhID0gdHJ1
ZTsKLSAgICAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKLSAgICAgICAgICAgIHVw
ZGF0ZVJlYWR5U3RhdGUoKTsKLSAgICAgICAgfSk7CisgICAgICAgIGlmICgmdHJhY2sgPT0gbV9h
Y3RpdmVWaWRlb1RyYWNrLmdldCgpKQorICAgICAgICAgICAgZW5xdWV1ZVZpZGVvU2FtcGxlKHRy
YWNrLCBtZWRpYVNhbXBsZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogI2lmIFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
ci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIGNvbXBsZXRp
b25IYW5kbGVyKTsKQEAgLTYyNiwxMSArOTQ1LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmoKIHsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoZnJhbWUpOwogfQotCiAjZW5kaWYKIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFJlZlQsIHR5cGVuYW1lIFBhc3NSZWZUPgotdm9pZCB1cGRhdGVUcmFja3NPZlR5
cGUoSGFzaE1hcDxTdHJpbmcsIFJlZlQ+JiB0cmFja01hcCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZSB0cmFja1R5cGUsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yJiBjdXJyZW50VHJh
Y2tzLCBSZWZUICgqaXRlbUZhY3RvcnkpKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiksIE1lZGlh
UGxheWVyKiBwbGF5ZXIsIHZvaWQgKE1lZGlhUGxheWVyOjoqcmVtb3ZlZEZ1bmN0aW9uKShQYXNz
UmVmVCksIHZvaWQgKE1lZGlhUGxheWVyOjoqYWRkZWRGdW5jdGlvbikoUGFzc1JlZlQpLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoUmVmVCwgaW50KT4gY29uZmlndXJlQ2FsbGJhY2ssIE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlOjpPYnNlcnZlciogdHJhY2tPYnNlcnZlcikKK3R5cGVkZWYgZW51bSB7Cisg
ICAgQWRkLAorICAgIFJlbW92ZSwKKyAgICBDb25maWd1cmUKK30gVHJhY2tTdGF0ZTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFJlZlQ+Cit2b2lkIHVwZGF0ZVRyYWNrc09mVHlwZShIYXNoTWFwPFN0
cmluZywgUmVmVD4mIHRyYWNrTWFwLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHRyYWNrVHlw
ZSwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVWZWN0b3ImIGN1cnJlbnRUcmFja3MsIFJlZlQgKCpp
dGVtRmFjdG9yeSkoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSwgY29uc3QgRnVuY3Rpb248dm9p
ZChSZWZULCBpbnQsIFRyYWNrU3RhdGUpPiYgY29uZmlndXJlVHJhY2spCiB7CiAgICAgVmVjdG9y
PFJlZlQ+IHJlbW92ZWRUcmFja3M7CiAgICAgVmVjdG9yPFJlZlQ+IGFkZGVkVHJhY2tzOwpAQCAt
NjYwLDQxICs5ODQsMTAwIEBAIHZvaWQgdXBkYXRlVHJhY2tzT2ZUeXBlKEhhc2hNYXA8U3RyaW5n
LCAKICAgICB9CiAKICAgICBpbnQgaW5kZXggPSAwOworICAgIGZvciAoYXV0byYgdHJhY2sgOiBy
ZW1vdmVkVHJhY2tzKQorICAgICAgICBjb25maWd1cmVUcmFjayh0cmFjaywgaW5kZXgrKywgVHJh
Y2tTdGF0ZTo6UmVtb3ZlKTsKKworICAgIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8mIHRyYWNr
IDogYWRkZWRUcmFja3MpCisgICAgICAgIGNvbmZpZ3VyZVRyYWNrKHRyYWNrLCBpbmRleCsrLCBU
cmFja1N0YXRlOjpBZGQpOworCisgICAgaW5kZXggPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYg
dHJhY2sgOiB0cmFja01hcC52YWx1ZXMoKSkKLSAgICAgICAgY29uZmlndXJlQ2FsbGJhY2sodHJh
Y2ssIGluZGV4KyspOworICAgICAgICBjb25maWd1cmVUcmFjayh0cmFjaywgaW5kZXgrKywgVHJh
Y2tTdGF0ZTo6Q29uZmlndXJlKTsKK30KIAotICAgIGZvciAoYXV0byYgdHJhY2sgOiByZW1vdmVk
VHJhY2tzKSB7Ci0gICAgICAgIChwbGF5ZXItPipyZW1vdmVkRnVuY3Rpb24pKCp0cmFjayk7Ci0g
ICAgICAgIHRyYWNrLT5zdHJlYW1UcmFjaygpLnJlbW92ZU9ic2VydmVyKCp0cmFja09ic2VydmVy
KTsKLSAgICB9Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2hl
Y2tTZWxlY3RlZFZpZGVvVHJhY2soKQoreworICAgIGlmIChtX3BlbmRpbmdTZWxlY3RlZFRyYWNr
Q2hlY2spCisgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byYgdHJhY2sgOiBhZGRlZFRy
YWNrcykgewotICAgICAgICAocGxheWVyLT4qYWRkZWRGdW5jdGlvbikoKnRyYWNrKTsKLSAgICAg
ICAgdHJhY2stPnN0cmVhbVRyYWNrKCkuYWRkT2JzZXJ2ZXIoKnRyYWNrT2JzZXJ2ZXIpOwotICAg
IH0KKyAgICBtX3BlbmRpbmdTZWxlY3RlZFRyYWNrQ2hlY2sgPSB0cnVlOworICAgIHNjaGVkdWxl
RGVmZXJyZWRUYXNrKFt0aGlzXSB7CisgICAgICAgIGJvb2wgaGlkZVZpZGVvTGF5ZXIgPSB0cnVl
OworICAgICAgICBtX2FjdGl2ZVZpZGVvVHJhY2sgPSBudWxscHRyOworICAgICAgICBpZiAobV9t
ZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKSkgeworICAgICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiB0cmFjayA6IG1fdmlkZW9UcmFja01hcC52YWx1ZXMoKSkgeworICAgICAg
ICAgICAgICAgIGlmICgmdHJhY2stPnN0cmVhbVRyYWNrKCkgPT0gbV9tZWRpYVN0cmVhbVByaXZh
dGUtPmFjdGl2ZVZpZGVvVHJhY2soKSkgeworICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZVZp
ZGVvVHJhY2sgPSBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlkZW9UcmFjaygpOworICAg
ICAgICAgICAgICAgICAgICBpZiAodHJhY2stPnNlbGVjdGVkKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBoaWRlVmlkZW9MYXllciA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBlbnN1cmVMYXllcigpOworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQo
KS5oaWRkZW4gPSBoaWRlVmlkZW9MYXllcjsKKyAgICAgICAgbV9wZW5kaW5nU2VsZWN0ZWRUcmFj
a0NoZWNrID0gZmFsc2U7CisgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVUcmFja3MoKQogewogICAgIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlVmVjdG9yIGN1cnJlbnRUcmFja3MgPSBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+dHJhY2tz
KCk7CiAKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW0+LCBpbnQpPiBlbmFibGVBdWRpb1RyYWNrID0gW3RoaXNdKGF1dG8gdHJhY2ssIGlu
dCBpbmRleCkKKyAgICBGdW5jdGlvbjx2b2lkKFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtPiwgaW50LCBUcmFja1N0YXRlKT4gIHNldEF1ZGlvVHJhY2tTdGF0ZSA9IFt0aGlzXShh
dXRvIHRyYWNrLCBpbnQgaW5kZXgsIFRyYWNrU3RhdGUgc3RhdGUpCiAgICAgewotICAgICAgICB0
cmFjay0+c2V0VHJhY2tJbmRleChpbmRleCk7Ci0gICAgICAgIHRyYWNrLT5zZXRFbmFibGVkKHRy
YWNrLT5zdHJlYW1UcmFjaygpLmVuYWJsZWQoKSAmJiAhdHJhY2stPnN0cmVhbVRyYWNrKCkubXV0
ZWQoKSk7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBUcmFja1N0YXRl
OjpSZW1vdmU6CisgICAgICAgICAgICB0cmFjay0+c3RyZWFtVHJhY2soKS5yZW1vdmVPYnNlcnZl
cigqdGhpcyk7CisgICAgICAgICAgICBtX3BsYXllci0+cmVtb3ZlQXVkaW9UcmFjaygqdHJhY2sp
OworI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQorICAgICAgICAgICAgZGVzdHJveUF1ZGlv
UmVuZGVyZXIodHJhY2stPmlkKCkpOworI2VuZGlmCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBUcmFja1N0YXRlOjpBZGQ6CisgICAgICAgICAgICB0cmFjay0+c3RyZWFtVHJhY2so
KS5hZGRPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFj
aygqdHJhY2spOworI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQorICAgICAgICAgICAgY3Jl
YXRlQXVkaW9SZW5kZXJlcih0cmFjay0+aWQoKSk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFRyYWNrU3RhdGU6OkNvbmZpZ3VyZToKKyAgICAgICAgICAgIHRyYWNr
LT5zZXRUcmFja0luZGV4KGluZGV4KTsKKyAgICAgICAgICAgIGJvb2wgZW5hYmxlZCA9IHRyYWNr
LT5zdHJlYW1UcmFjaygpLmVuYWJsZWQoKSAmJiAhdHJhY2stPnN0cmVhbVRyYWNrKCkubXV0ZWQo
KTsKKyAgICAgICAgICAgIHRyYWNrLT5zZXRFbmFibGVkKGVuYWJsZWQpOworI2lmIFVTRShSRU5E
RVJfU1lOQ0hST05JWkVSKQorICAgICAgICAgICAgYXV0byByZW5kZXJlciA9IG1fYXVkaW9SZW5k
ZXJlcnMuZ2V0KHRyYWNrLT5pZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChyZW5kZXJlcik7Cisg
ICAgICAgICAgICByZW5kZXJlci5nZXQoKS5tdXRlZCA9ICFlbmFibGVkOworI2VuZGlmCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH07Ci0gICAgdXBkYXRlVHJhY2tzT2ZUeXBl
KG1fYXVkaW9UcmFja01hcCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGN1cnJlbnRUcmFj
a3MsICZBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUsIG1fcGxheWVyLCAmTWVk
aWFQbGF5ZXI6OnJlbW92ZUF1ZGlvVHJhY2ssICZNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjaywg
ZW5hYmxlQXVkaW9UcmFjaywgKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciopIHRo
aXMpOworICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX2F1ZGlvVHJhY2tNYXAsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkF1ZGlvLCBjdXJyZW50VHJhY2tzLCAmQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbTo6Y3JlYXRlLCBzZXRBdWRpb1RyYWNrU3RhdGUpOwogCi0gICAgc3RkOjpmdW5jdGlvbjx2
b2lkKFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiwgaW50KT4gZW5hYmxlVmlk
ZW9UcmFjayA9IFt0aGlzXShhdXRvIHRyYWNrLCBpbnQgaW5kZXgpCisgICAgRnVuY3Rpb248dm9p
ZChSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbT4sIGludCwgVHJhY2tTdGF0ZSk+
IHNldFZpZGVvVHJhY2tTdGF0ZSA9IFsmXShhdXRvIHRyYWNrLCBpbnQgaW5kZXgsIFRyYWNrU3Rh
dGUgc3RhdGUpCiAgICAgewotICAgICAgICB0cmFjay0+c2V0VHJhY2tJbmRleChpbmRleCk7Ci0g
ICAgICAgIGJvb2wgc2VsZWN0ZWQgPSAmdHJhY2stPnN0cmVhbVRyYWNrKCkgPT0gbV9tZWRpYVN0
cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKTsKLSAgICAgICAgdHJhY2stPnNldFNlbGVj
dGVkKHNlbGVjdGVkKTsKLQotICAgICAgICBpZiAoc2VsZWN0ZWQpCi0gICAgICAgICAgICBlbnN1
cmVMYXllcigpOworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgVHJhY2tT
dGF0ZTo6UmVtb3ZlOgorICAgICAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCkucmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMpOworICAgICAgICAgICAgbV9wbGF5ZXItPnJlbW92ZVZpZGVvVHJhY2soKnRy
YWNrKTsKKyAgICAgICAgICAgIGNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNrKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFja1N0YXRlOjpBZGQ6CisgICAgICAgICAgICB0cmFj
ay0+c3RyZWFtVHJhY2soKS5hZGRPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICBtX3BsYXll
ci0+YWRkVmlkZW9UcmFjaygqdHJhY2spOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVHJhY2tTdGF0ZTo6Q29uZmlndXJlOgorICAgICAgICAgICAgdHJhY2stPnNldFRyYWNrSW5k
ZXgoaW5kZXgpOworICAgICAgICAgICAgYm9vbCBzZWxlY3RlZCA9ICZ0cmFjay0+c3RyZWFtVHJh
Y2soKSA9PSBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlkZW9UcmFjaygpOworICAgICAg
ICAgICAgdHJhY2stPnNldFNlbGVjdGVkKHNlbGVjdGVkKTsKKyAgICAgICAgICAgIGNoZWNrU2Vs
ZWN0ZWRWaWRlb1RyYWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH07
Ci0gICAgdXBkYXRlVHJhY2tzT2ZUeXBlKG1fdmlkZW9UcmFja01hcCwgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VmlkZW8sIGN1cnJlbnRUcmFja3MsICZWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
OjpjcmVhdGUsIG1fcGxheWVyLCAmTWVkaWFQbGF5ZXI6OnJlbW92ZVZpZGVvVHJhY2ssICZNZWRp
YVBsYXllcjo6YWRkVmlkZW9UcmFjaywgZW5hYmxlVmlkZW9UcmFjaywgKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlOjpPYnNlcnZlciopIHRoaXMpOworICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX3Zp
ZGVvVHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCBjdXJyZW50VHJhY2tzLCAm
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlLCBzZXRWaWRlb1RyYWNrU3RhdGUp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNlZWthYmxlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZG
T2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0JKHJldmlzaW9uIDIxMDM1NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhU2FtcGxlQVZGT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAgTWVk
aWFUaW1lIE1lZGlhU2FtcGxlQVZGT2JqQzo6cHJlc2VudGF0aQogICAgIHJldHVybiB0b01lZGlh
VGltZShDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChtX3NhbXBsZS5nZXQo
KSkpOwogfQogCitNZWRpYVRpbWUgTWVkaWFTYW1wbGVBVkZPYmpDOjpvdXRwdXRQcmVzZW50YXRp
b25UaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9NZWRpYVRpbWUoQ01TYW1wbGVCdWZmZXJH
ZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAobV9zYW1wbGUuZ2V0KCkpKTsKK30KKwogTWVk
aWFUaW1lIE1lZGlhU2FtcGxlQVZGT2JqQzo6ZGVjb2RlVGltZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHRvTWVkaWFUaW1lKENNU2FtcGxlQnVmZmVyR2V0RGVjb2RlVGltZVN0YW1wKG1fc2FtcGxl
LmdldCgpKSk7CkBAIC00Nyw2ICs1MiwxMSBAQCBNZWRpYVRpbWUgTWVkaWFTYW1wbGVBVkZPYmpD
OjpkdXJhdGlvbigpCiAgICAgcmV0dXJuIHRvTWVkaWFUaW1lKENNU2FtcGxlQnVmZmVyR2V0RHVy
YXRpb24obV9zYW1wbGUuZ2V0KCkpKTsKIH0KIAorTWVkaWFUaW1lIE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6b3V0cHV0RHVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiB0b01lZGlhVGltZShDTVNh
bXBsZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uKG1fc2FtcGxlLmdldCgpKSk7Cit9CisKIHNpemVf
dCBNZWRpYVNhbXBsZUFWRk9iakM6OnNpemVJbkJ5dGVzKCkgY29uc3QKIHsKICAgICByZXR1cm4g
Q01TYW1wbGVCdWZmZXJHZXRUb3RhbFNhbXBsZVNpemUobV9zYW1wbGUuZ2V0KCkpOwpAQCAtMTEx
LDcgKzEyMSw3IEBAIEZsb2F0U2l6ZSBNZWRpYVNhbXBsZUFWRk9iakM6OnByZXNlbnRhdGkKIAog
dm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsK
LSAgICBvdXQucHJpbnQoIntQVFMoIiwgcHJlc2VudGF0aW9uVGltZSgpLCAiKSwgRFRTKCIsIGRl
Y29kZVRpbWUoKSwgIiksIGR1cmF0aW9uKCIsIGR1cmF0aW9uKCksICIpLCBmbGFncygiLCAoaW50
KWZsYWdzKCksICIpLCBwcmVzZW50YXRpb25TaXplKCIsIHByZXNlbnRhdGlvblNpemUoKS53aWR0
aCgpLCAieCIsIHByZXNlbnRhdGlvblNpemUoKS5oZWlnaHQoKSwgIil9Iik7CisgICAgb3V0LnBy
aW50KCJ7UFRTKCIsIHByZXNlbnRhdGlvblRpbWUoKSwgIiksIE9QVFMoIiwgb3V0cHV0UHJlc2Vu
dGF0aW9uVGltZSgpLCAiKSwgRFRTKCIsIGRlY29kZVRpbWUoKSwgIiksIGR1cmF0aW9uKCIsIGR1
cmF0aW9uKCksICIpLCBmbGFncygiLCAoaW50KWZsYWdzKCksICIpLCBwcmVzZW50YXRpb25TaXpl
KCIsIHByZXNlbnRhdGlvblNpemUoKS53aWR0aCgpLCAieCIsIHByZXNlbnRhdGlvblNpemUoKS5o
ZWlnaHQoKSwgIil9Iik7CiB9CiAKIHZvaWQgTWVkaWFTYW1wbGVBVkZPYmpDOjpvZmZzZXRUaW1l
c3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJiBvZmZzZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbS5oCShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDExICs1MCwxNSBAQCBwdWJsaWM6CiAKICAgICBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYgc3RyZWFtVHJhY2soKSB7IHJldHVybiBtX3N0cmVhbVRyYWNrLmdldCgpOyB9
CiAKKyAgICBNZWRpYVRpbWUgdGltZWxpbmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVs
aW5lT2Zmc2V0OyB9CisgICAgdm9pZCBzZXRUaW1lbGluZU9mZnNldChjb25zdCBNZWRpYVRpbWUm
IG9mZnNldCkgeyBtX3RpbWVsaW5lT2Zmc2V0ID0gb2Zmc2V0OyB9CisKIHByaXZhdGU6CiAgICAg
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJh
Y2spCiAgICAgICAgIDogbV9zdHJlYW1UcmFjayh0cmFjaykKICAgICAgICAgLCBtX2lkKHRyYWNr
LmlkKCkpCiAgICAgICAgICwgbV9sYWJlbCh0cmFjay5sYWJlbCgpKQorICAgICAgICAsIG1fdGlt
ZWxpbmVPZmZzZXQoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQogICAgIHsKICAgICB9CiAKQEAg
LTYyLDYgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV9pZDsKICAgICBBdG9t
aWNTdHJpbmcgbV9sYWJlbDsKICAgICBpbnQgbV9pbmRleCB7IDAgfTsKKyAgICBNZWRpYVRpbWUg
bV90aW1lbGluZU9mZnNldDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5jcHAJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDkgKzEwMCw2IEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNldEVuYWJsZWQKICAg
ICAvLyBBbHdheXMgdXBkYXRlIHRoZSBlbmFibGVkIHN0YXRlIHJlZ2FyZGxlc3Mgb2YgdGhlIHRy
YWNrIGJlaW5nIGVuZGVkLgogICAgIG1faXNFbmFibGVkID0gZW5hYmxlZDsKIAotICAgIGlmICht
X3ByZXZpZXcpCi0gICAgICAgIG1fcHJldmlldy0+c2V0RW5hYmxlZChlbmFibGVkKTsKLQogICAg
IGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKICAgICAgICAgb2JzZXJ2ZXItPnRy
YWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOwogfQpAQCAtMTE3LDcgKzExNCw2IEBAIHZvaWQgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OmVuZFRyYWNrKCkKICAgICAvLyB0cmFja0VuZGVkIG1ldGhv
ZCBvbmNlLgogICAgIG1faXNFbmRlZCA9IHRydWU7CiAKLSAgICBtX3ByZXZpZXcgPSBudWxscHRy
OwogICAgIG1fc291cmNlLT5yZXF1ZXN0U3RvcCh0aGlzKTsKIAogICAgIGZvciAoYXV0byYgb2Jz
ZXJ2ZXIgOiBtX29ic2VydmVycykKQEAgLTE2MywxNSArMTU5LDYgQEAgdm9pZCBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6cGFpbnRDdXJyZQogICAgIH0KIH0KIAotUmVhbHRpbWVNZWRpYVNvdXJj
ZVByZXZpZXcqIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpwcmV2aWV3KCkKLXsKLSAgICBpZiAo
bV9wcmV2aWV3KQotICAgICAgICByZXR1cm4gbV9wcmV2aWV3LmdldCgpOwotCi0gICAgbV9wcmV2
aWV3ID0gbV9zb3VyY2UtPnByZXZpZXcoKTsKLSAgICByZXR1cm4gbV9wcmV2aWV3LmdldCgpOwot
fQotCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0
IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBSZWFsdGltZU1lZGlhU291cmNlOjpTdWNj
ZXNzSGFuZGxlciBzdWNjZXNzSGFuZGxlciwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6RmFpbHVyZUhh
bmRsZXIgZmFpbHVyZUhhbmRsZXIpCiB7CiAgICAgbV9zb3VyY2UtPmFwcGx5Q29uc3RyYWludHMo
Y29uc3RyYWludHMsIHN1Y2Nlc3NIYW5kbGVyLCBmYWlsdXJlSGFuZGxlcik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2tQcml2YXRlLmgJKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkxLDcgKzkxLDYgQEAgcHVibGljOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIq
IGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKIAogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNv
bnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZVByZXZpZXcqIHByZXZpZXcoKTsKIAogcHJpdmF0ZToKICAgICBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiwgU3RyaW5nJiYgaWQpOwpA
QCAtMTA1LDcgKzEwNCw2IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29i
c2VydmVyczsKICAgICBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV9zb3VyY2U7Ci0gICAgUmVm
UHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3PiBtX3ByZXZpZXc7CiAKICAgICBTdHJpbmcg
bV9pZDsKICAgICBib29sIG1faXNFbmFibGVkOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkocmV2
aXNpb24gMjEwMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBACiAjaW5j
bHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIgotI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2VQcmV2aWV3LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTEyOSw3ICsx
MjgsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY3VycmVudEZyYW1l
SW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQot
ICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3PiBwcmV2aWV3KCkg
eyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdm9pZCBzZXRXaWR0aChpbnQpOwogICAgIHZvaWQg
c2V0SGVpZ2h0KGludCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlUHJldmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmgJKHJl
dmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogICAgZGlzdHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3Nv
biBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICAgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRl
ICJQbGF0Zm9ybUxheWVyLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVhbHRpbWVN
ZWRpYVNvdXJjZVByZXZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFsdGltZU1lZGlhU291cmNl
UHJldmlldz4gewotcHVibGljOgotICAgIHZpcnR1YWwgflJlYWx0aW1lTWVkaWFTb3VyY2VQcmV2
aWV3KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGxheSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgcGF1c2UoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQo
Ym9vbCkgPSAwOwotCi0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZG91YmxlKSBjb25zdCA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV93ZWFrUHRyRmFjdG9yeS5yZXZv
a2VBbGwoKTsgfQotCi0gICAgV2Vha1B0cjxSZWFsdGltZU1lZGlhU291cmNlUHJldmlldz4gY3Jl
YXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9
Ci0KLXByb3RlY3RlZDoKLSAgICBSZWFsdGltZU1lZGlhU291cmNlUHJldmlldygpCi0gICAgICAg
IDogbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
V2Vha1B0ckZhY3Rvcnk8UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc+IG1fd2Vha1B0ckZhY3Rv
cnk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9W
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oCShy
ZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9W
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDI4ICs0
MCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0oc3RyZWFtVHJhY2spKTsKICAgICB9CiAKLSAgICBLaW5kIGtpbmQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBLaW5kOjpNYWluOyB9Ci0gICAgQXRvbWljU3RyaW5n
IGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIEF0b21pY1N0cmluZyBs
YWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFiZWw7IH0KLSAgICBBdG9taWNTdHJp
bmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbXB0eUF0b207IH0KLSAgICBp
bnQgdHJhY2tJbmRleCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5kZXg7IH0KLQogICAg
IHZvaWQgc2V0VHJhY2tJbmRleChpbnQgaW5kZXgpIHsgbV9pbmRleCA9IGluZGV4OyB9CiAKICAg
ICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc3RyZWFtVHJhY2soKSB7IHJldHVybiBtX3N0cmVh
bVRyYWNrLmdldCgpOyB9CiAKKyAgICBNZWRpYVRpbWUgdGltZWxpbmVPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3RpbWVsaW5lT2Zmc2V0OyB9CisgICAgdm9pZCBzZXRUaW1lbGluZU9mZnNldChj
b25zdCBNZWRpYVRpbWUmIG9mZnNldCkgeyBtX3RpbWVsaW5lT2Zmc2V0ID0gb2Zmc2V0OyB9CisK
IHByaXZhdGU6CiAgICAgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYgdHJhY2spCiAgICAgICAgIDogbV9zdHJlYW1UcmFjayh0cmFjaykKICAgICAg
ICAgLCBtX2lkKHRyYWNrLmlkKCkpCiAgICAgICAgICwgbV9sYWJlbCh0cmFjay5sYWJlbCgpKQor
ICAgICAgICAsIG1fdGltZWxpbmVPZmZzZXQoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQogICAg
IHsKICAgICB9CiAKKyAgICBLaW5kIGtpbmQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBLaW5kOjpN
YWluOyB9CisgICAgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZDsg
fQorICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGFiZWw7
IH0KKyAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBlbXB0
eUF0b207IH0KKyAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5k
ZXg7IH0KKwogICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV9zdHJlYW1UcmFjazsK
ICAgICBBdG9taWNTdHJpbmcgbV9pZDsKICAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKICAgICBp
bnQgbV9pbmRleCB7IDAgfTsKKyAgICBNZWRpYVRpbWUgbV90aW1lbGluZU9mZnNldDsKIH07CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlv
Q2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMTAzNTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVT
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNodXRkb3duQ2FwdHVyZVNlc3Npb24oKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVNl
dHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpIG92ZXJyaWRlOwogICAgIEF1ZGlv
U291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IGNyZWF0ZVByZXZpZXcoKSBmaW5hbDsKIAogICAgIFJl
dGFpblB0cjxBVkNhcHR1cmVDb25uZWN0aW9uPiBtX2F1ZGlvQ29ubmVjdGlvbjsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291
cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMjEwMzU2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNyArMzAsNyBAQAogCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CiAjaW1wb3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCi0jaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5o
IgorI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJXZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgpAQCAtNDksMjIgKzQ5LDE1IEBAIHR5cGVkZWYg
QVZDYXB0dXJlRGV2aWNlIEFWQ2FwdHVyZURldmljZVQKIHR5cGVkZWYgQVZDYXB0dXJlRGV2aWNl
SW5wdXQgQVZDYXB0dXJlRGV2aWNlSW5wdXRUeXBlOwogdHlwZWRlZiBBVkNhcHR1cmVPdXRwdXQg
QVZDYXB0dXJlT3V0cHV0VHlwZTsKIAotI2lmICFQTEFURk9STShJT1MpCi10eXBlZGVmIEFWQ2Fw
dHVyZUF1ZGlvUHJldmlld091dHB1dCBBVkNhcHR1cmVBdWRpb1ByZXZpZXdPdXRwdXRUeXBlOwot
I2VuZGlmCi0KIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQogCiBT
T0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVBdWRpb0NoYW5uZWwpCiBTT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQpCi1TT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVBdWRpb1ByZXZpZXdPdXRwdXQpCiBT
T0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVDb25uZWN0aW9uKQogU09GVF9M
SU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNlKQogU09GVF9MSU5LX0NMQVNT
KEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNlSW5wdXQpCiBTT0ZUX0xJTktfQ0xBU1MoQVZG
b3VuZGF0aW9uLCBBVkNhcHR1cmVPdXRwdXQpCiAKLSNkZWZpbmUgQVZDYXB0dXJlQXVkaW9QcmV2
aWV3T3V0cHV0IGdldEFWQ2FwdHVyZUF1ZGlvUHJldmlld091dHB1dENsYXNzKCkKLQogI2RlZmlu
ZSBBVkNhcHR1cmVBdWRpb0NoYW5uZWwgZ2V0QVZDYXB0dXJlQXVkaW9DaGFubmVsQ2xhc3MoKQog
I2RlZmluZSBBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQgZ2V0QVZDYXB0dXJlQXVkaW9EYXRhT3V0
cHV0Q2xhc3MoKQogI2RlZmluZSBBVkNhcHR1cmVDb25uZWN0aW9uIGdldEFWQ2FwdHVyZUNvbm5l
Y3Rpb25DbGFzcygpCkBAIC04MCw3OSArNzMsNiBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5k
YXRpb24sIEFWTWVkaWFUCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFQTEFURk9STShJ
T1MpCi1jbGFzcyBBVkF1ZGlvU291cmNlUHJldmlldzogcHVibGljIEFWTWVkaWFTb3VyY2VQcmV2
aWV3IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBj
cmVhdGUoQVZDYXB0dXJlU2Vzc2lvbiAqLCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZSopOwotCi1wcml2
YXRlOgotICAgIEFWQXVkaW9Tb3VyY2VQcmV2aWV3KEFWQ2FwdHVyZVNlc3Npb24gKiwgQVZBdWRp
b0NhcHR1cmVTb3VyY2UqKTsKLQotICAgIHZvaWQgaW52YWxpZGF0ZSgpIGZpbmFsOwotCi0gICAg
dm9pZCBwbGF5KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBwYXVzZSgpIGNvbnN0IGZpbmFsOwot
ICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpIGZpbmFsOwotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Ci0KLSAgICB2b2lkIHVwZGF0ZVN0YXRlKCkgY29u
c3Q7Ci0KLSAgICBSZXRhaW5QdHI8QVZDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0VHlwZT4gbV9h
dWRpb1ByZXZpZXdPdXRwdXQ7Ci0gICAgbXV0YWJsZSBkb3VibGUgbV92b2x1bWUgeyAxIH07Ci0g
ICAgbXV0YWJsZSBib29sIG1fcGF1c2VkIHsgZmFsc2UgfTsKLSAgICBtdXRhYmxlIGJvb2wgbV9l
bmFibGVkIHsgdHJ1ZSB9OwotfTsKLQotUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBBVkF1
ZGlvU291cmNlUHJldmlldzo6Y3JlYXRlKEFWQ2FwdHVyZVNlc3Npb24gKnNlc3Npb24sIEFWQXVk
aW9DYXB0dXJlU291cmNlKiBwYXJlbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBVkF1
ZGlvU291cmNlUHJldmlldyhzZXNzaW9uLCBwYXJlbnQpKTsKLX0KLQotQVZBdWRpb1NvdXJjZVBy
ZXZpZXc6OkFWQXVkaW9Tb3VyY2VQcmV2aWV3KEFWQ2FwdHVyZVNlc3Npb24gKnNlc3Npb24sIEFW
QXVkaW9DYXB0dXJlU291cmNlKiBwYXJlbnQpCi0gICAgOiBBVk1lZGlhU291cmNlUHJldmlldyhw
YXJlbnQpCi17Ci0gICAgbV9hdWRpb1ByZXZpZXdPdXRwdXQgPSBhZG9wdE5TKFthbGxvY0FWQ2Fw
dHVyZUF1ZGlvUHJldmlld091dHB1dEluc3RhbmNlKCkgaW5pdF0pOwotICAgIHNldFZvbHVtZSgx
KTsKLSAgICBbc2Vzc2lvbiBhZGRPdXRwdXQ6bV9hdWRpb1ByZXZpZXdPdXRwdXQuZ2V0KCldOwot
fQotCi12b2lkIEFWQXVkaW9Tb3VyY2VQcmV2aWV3OjppbnZhbGlkYXRlKCkKLXsKLSAgICBtX2F1
ZGlvUHJldmlld091dHB1dCA9IG51bGxwdHI7Ci0gICAgQVZNZWRpYVNvdXJjZVByZXZpZXc6Omlu
dmFsaWRhdGUoKTsKLX0KLQotdm9pZCBBVkF1ZGlvU291cmNlUHJldmlldzo6cGxheSgpIGNvbnN0
Ci17Ci0gICAgbV9wYXVzZWQgPSBmYWxzZTsKLSAgICB1cGRhdGVTdGF0ZSgpOwotfQotCi12b2lk
IEFWQXVkaW9Tb3VyY2VQcmV2aWV3OjpwYXVzZSgpIGNvbnN0Ci17Ci0gICAgbV9wYXVzZWQgPSB0
cnVlOwotICAgIHVwZGF0ZVN0YXRlKCk7Ci19Ci0KLXZvaWQgQVZBdWRpb1NvdXJjZVByZXZpZXc6
OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7Ci0g
ICAgdXBkYXRlU3RhdGUoKTsKLX0KLQotdm9pZCBBVkF1ZGlvU291cmNlUHJldmlldzo6c2V0Vm9s
dW1lKGRvdWJsZSB2b2x1bWUpIGNvbnN0Ci17Ci0gICAgbV92b2x1bWUgPSB2b2x1bWU7Ci0gICAg
bV9hdWRpb1ByZXZpZXdPdXRwdXQuZ2V0KCkudm9sdW1lID0gdm9sdW1lOwotfQotCi12b2lkIEFW
QXVkaW9Tb3VyY2VQcmV2aWV3Ojp1cGRhdGVTdGF0ZSgpIGNvbnN0Ci17Ci0gICAgbV9hdWRpb1By
ZXZpZXdPdXRwdXQuZ2V0KCkudm9sdW1lID0gKCFtX2VuYWJsZWQgfHwgbV9wYXVzZWQpID8gMCA6
IG1fdm9sdW1lOwotfQotI2VuZGlmCi0KIFJlZlB0cjxBVk1lZGlhQ2FwdHVyZVNvdXJjZT4gQVZB
dWRpb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBkZXZpY2Us
IGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFp
bnRzLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQogewogICAgIGF1dG8gc291cmNlID0gYWRv
cHRSZWYobmV3IEFWQXVkaW9DYXB0dXJlU291cmNlKGRldmljZSwgaWQpKTsKQEAgLTE5MCw3ICsx
MTAsNyBAQCB2b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjppbml0aWFsaXplU3VwCiAKIHZvaWQg
QVZBdWRpb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgLy8gRklYTUU6IHVzZSBbQVZDYXB0dXJlQXVkaW9Q
cmV2aWV3T3V0cHV0IHZvbHVtZV0gZm9yIHZvbHVtZQorICAgIC8vIEZJWE1FOiBzdXBwb3J0IHZv
bHVtZQogCiAgICAgc2V0dGluZ3Muc2V0RGV2aWNlSWQoaWQoKSk7CiB9CkBAIC0yNzYsNiArMTk2
LDExIEBAIHZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXQKICAgICBpZiAo
IWZvcm1hdERlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm47CiAKKyAgICBSZXRhaW5QdHI8Q01T
YW1wbGVCdWZmZXJSZWY+IGJ1ZmZlciA9IHNhbXBsZUJ1ZmZlcjsKKyAgICBzY2hlZHVsZURlZmVy
cmVkVGFzayhbdGhpcywgYnVmZmVyXSB7CisgICAgICAgIG1lZGlhRGF0YVVwZGF0ZWQoTWVkaWFT
YW1wbGVBVkZPYmpDOjpjcmVhdGUoYnVmZmVyLmdldCgpKSk7CisgICAgfSk7CisKICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2sobV9sb2NrLCBzdGQ6OnRyeV90b19sb2NrKTsKICAgICBp
ZiAoIWxvY2sub3duc19sb2NrKCkpIHsKICAgICAgICAgLy8gRmFpbGVkIHRvIGFjcXVpcmUgdGhl
IGxvY2ssIGp1c3QgcmV0dXJuIGluc3RlYWQgb2YgYmxvY2tpbmcuCkBAIC0zMDQsMTUgKzIyOSw2
IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIEFWQXVkaW9DYXB0dXJlU291cmMKICAgICByZXR1cm4g
bV9hdWRpb1NvdXJjZVByb3ZpZGVyLmdldCgpOwogfQogCi1SZWZQdHI8QVZNZWRpYVNvdXJjZVBy
ZXZpZXc+IEFWQXVkaW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3KCkKLXsKLSNpZiAhUExB
VEZPUk0oSU9TKQotICAgIHJldHVybiBBVkF1ZGlvU291cmNlUHJldmlldzo6Y3JlYXRlKHNlc3Np
b24oKSwgdGhpcyk7Ci0jZWxzZQotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi19Ci0gICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFD
YXB0dXJlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgJKHJldmlzaW9uIDIxMDM1NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNv
dXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsMTkgKzQ3LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBVk1lZGlhQ2FwdHVyZVNvdXJjZTsKIAotY2xhc3MgQVZNZWRpYVNvdXJj
ZVByZXZpZXc6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlUHJldmlldyB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB+QVZNZWRpYVNvdXJjZVByZXZpZXcoKTsKLQotICAgIHZvaWQgaW52YWxpZGF0
ZSgpIG92ZXJyaWRlOwotCi1wcm90ZWN0ZWQ6Ci0gICAgQVZNZWRpYVNvdXJjZVByZXZpZXcoQVZN
ZWRpYUNhcHR1cmVTb3VyY2UqKTsKLQotcHJpdmF0ZToKLSAgICBXZWFrUHRyPEFWTWVkaWFDYXB0
dXJlU291cmNlPiBtX3BhcmVudDsKLX07Ci0KIGNsYXNzIEFWTWVkaWFDYXB0dXJlU291cmNlIDog
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfkFWTWVk
aWFDYXB0dXJlU291cmNlKCk7CkBAIC03NiwxMCArNjMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc1J1bm5pbmc7IH0KIAotICAgIFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlUHJldmlldz4gcHJldmlldygpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlUHJldmll
dyhBVk1lZGlhU291cmNlUHJldmlldyopOwotICAgIFdlYWtQdHI8QVZNZWRpYUNhcHR1cmVTb3Vy
Y2U+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQ
dHIoKTsgfQotCiBwcm90ZWN0ZWQ6CiAgICAgQVZNZWRpYUNhcHR1cmVTb3VyY2UoQVZDYXB0dXJl
RGV2aWNlKiwgY29uc3QgQXRvbWljU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSk7
CiAKQEAgLTk5LDggKzgyLDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0VmlkZW9TYW1wbGVC
dWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQqKTsKICAgICB2b2lkIHNldEF1
ZGlvU2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0Kik7CiAKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxBVk1lZGlhU291cmNlUHJldmlldz4gY3JlYXRlUHJldmlldygpID0g
MDsKLQogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwU2Vzc2lvbigpOwogICAgIHZvaWQgcmVzZXQo
KSBmaW5hbDsKQEAgLTExNyw4ICs5OCw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwogICAgIFJldGFpblB0cjxB
VkNhcHR1cmVTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgUmV0YWluUHRyPEFWQ2FwdHVyZURldmlj
ZT4gbV9kZXZpY2U7Ci0gICAgVmVjdG9yPFdlYWtQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZVByZXZp
ZXc+PiBtX3ByZXZpZXdzOwotICAgIFdlYWtQdHJGYWN0b3J5PEFWTWVkaWFDYXB0dXJlU291cmNl
PiBtX3dlYWtQdHJGYWN0b3J5OwogICAgIGJvb2wgbV9pc1J1bm5pbmcgeyBmYWxzZX07CiB9Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNh
cHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMTAzNTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVT
b3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNiBAQCBBVk1lZGlhQ2FwdHVy
ZVNvdXJjZTo6QVZNZWRpYUNhcHR1cmVTb3VyCiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKGlk
LCB0eXBlLCBlbXB0eVN0cmluZygpKQogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dl
YkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNr
OnRoaXNdKSkKICAgICAsIG1fZGV2aWNlKGRldmljZSkKLSAgICAsIG1fd2Vha1B0ckZhY3Rvcnko
dGhpcykKIHsKICAgICBzZXROYW1lKGRldmljZS5sb2NhbGl6ZWROYW1lKTsKICAgICBzZXRQZXJz
aXN0ZW50SUQoZGV2aWNlLnVuaXF1ZUlEKTsKQEAgLTI0MCwxMiArMjM5LDYgQEAgdm9pZCBBVk1l
ZGlhQ2FwdHVyZVNvdXJjZTo6cmVzZXQoKQogICAgIGZvciAoTlNTdHJpbmcgKmtleU5hbWUgaW4g
c2Vzc2lvbktWT1Byb3BlcnRpZXMoKSkKICAgICAgICAgW21fc2Vzc2lvbiByZW1vdmVPYnNlcnZl
cjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOmtleU5hbWVdOwogCi0gICAgZm9yIChj
b25zdCBhdXRvJiBwcmV2aWV3IDogbV9wcmV2aWV3cykgewotICAgICAgICBpZiAocHJldmlldykK
LSAgICAgICAgICAgIHByZXZpZXctPmludmFsaWRhdGUoKTsKLSAgICB9Ci0gICAgbV9wcmV2aWV3
cy5jbGVhcigpOwotCiAgICAgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpOwogICAgIG1fc2Vzc2lv
biA9IG51bGxwdHI7CiB9CkBAIC0yNzcsNDUgKzI3MCw2IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIq
IEFWTWVkaWFDYXB0dXJlU291cmMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2VQcmV2aWV3PiBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6cHJldmlldygp
Ci17Ci0gICAgUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBwcmV2aWV3ID0gY3JlYXRlUHJl
dmlldygpOwotICAgIGlmICghcHJldmlldykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBtX3ByZXZpZXdzLmFwcGVuZChwcmV2aWV3LT5jcmVhdGVXZWFrUHRyKCkpOwotICAgIHJldHVy
biBwcmV2aWV3LmxlYWtSZWYoKTsKLX0KLQotdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6cmVt
b3ZlUHJldmlldyhBVk1lZGlhU291cmNlUHJldmlldyogcHJldmlldykKLXsKLSAgICBzaXplX3Qg
aW5kZXg7Ci0gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9wcmV2aWV3cy5zaXplKCk7ICsr
aW5kZXgpIHsKLSAgICAgICAgaWYgKG1fcHJldmlld3NbaW5kZXhdLmdldCgpID09IHByZXZpZXcp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAoaW5kZXggPCBtX3ByZXZpZXdz
LnNpemUoKSkKLSAgICAgICAgbV9wcmV2aWV3cy5yZW1vdmUoaW5kZXgpOwotfQotCi1BVk1lZGlh
U291cmNlUHJldmlldzo6QVZNZWRpYVNvdXJjZVByZXZpZXcoQVZNZWRpYUNhcHR1cmVTb3VyY2Uq
IHBhcmVudCkKLSAgICA6IG1fcGFyZW50KHBhcmVudC0+Y3JlYXRlV2Vha1B0cigpKQotewotfQot
Ci1BVk1lZGlhU291cmNlUHJldmlldzo6fkFWTWVkaWFTb3VyY2VQcmV2aWV3KCkKLXsKLSAgICBp
ZiAobV9wYXJlbnQpCi0gICAgICAgIG1fcGFyZW50LT5yZW1vdmVQcmV2aWV3KHRoaXMpOwotfQot
Ci12b2lkIEFWTWVkaWFTb3VyY2VQcmV2aWV3OjppbnZhbGlkYXRlKCkKLXsKLSAgICBtX3BhcmVu
dCA9IG51bGxwdHI7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXc6OmludmFsaWRhdGUo
KTsKLX0KLQogTlNBcnJheSogc2Vzc2lvbktWT1Byb3BlcnRpZXMoKQogewogICAgIHN0YXRpYyBO
U0FycmF5KiBrZXlzID0gW0BbQCJydW5uaW5nIl0gcmV0YWluXTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNzksNyArNzksNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKIAot
ICAgIFJlZlB0cjxBVk1lZGlhU291cmNlUHJldmlldz4gY3JlYXRlUHJldmlldygpIGZpbmFsOwog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjdXJyZW50RnJhbWVDR0ltYWdlKCk7CiAgICAgUmVm
UHRyPEltYWdlPiBjdXJyZW50RnJhbWVJbWFnZSgpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlk
ZW9DYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zOCw3ICszOCw2IEBACiAjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgogI2lt
cG9ydCAiUGxhdGZvcm1MYXllci5oIgogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5oIgotI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVByZXZpZXcuaCIKICNpbXBvcnQgIlJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5n
Q0FMYXllckRlbGVnYXRlLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlRGV2aWNl
Lmg+CkBAIC0xMDEsMTEwICsxMDAsOCBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24s
IEFWQ2FwdHVyCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1AaW50ZXJmYWNlIFdlYkNv
cmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIDogTlNPYmplY3Q8Q0FMYXllckRlbGVnYXRl
PiB7Ci0gICAgQVZWaWRlb1NvdXJjZVByZXZpZXcgKl9wYXJlbnQ7Ci0gICAgQk9PTCBfaGFzT2Jz
ZXJ2ZXI7Ci19Ci0KLS0gKHZvaWQpc2V0UGFyZW50OihBVlZpZGVvU291cmNlUHJldmlldyAqKXBh
cmVudDsKLS0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0Oihp
ZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNv
bnRleHQ7Ci1AZW5kCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQVZWaWRlb1NvdXJj
ZVByZXZpZXc6IHB1YmxpYyBBVk1lZGlhU291cmNlUHJldmlldyB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxBVk1lZGlhU291cmNlUHJldmlldz4gY3JlYXRlKEFWQ2FwdHVyZVNlc3Npb24q
LCBBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiwgQVZWaWRlb0NhcHR1cmVTb3VyY2UqKTsKLQotICAg
IHZvaWQgYmFja2dyb3VuZExheWVyQm91bmRzQ2hhbmdlZCgpOwotICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3ByZXZpZXdCYWNrZ3JvdW5k
TGF5ZXIuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBBVlZpZGVvU291cmNlUHJldmlldyhBVkNh
cHR1cmVTZXNzaW9uKiwgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiosIEFWVmlkZW9DYXB0dXJlU291
cmNlKik7Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoKSBmaW5hbDsKLQotICAgIHZvaWQgcGxheSgp
IGNvbnN0IGZpbmFsOwotICAgIHZvaWQgcGF1c2UoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNl
dFZvbHVtZShkb3VibGUpIGNvbnN0IGZpbmFsIHsgfTsKLSAgICB2b2lkIHNldEVuYWJsZWQoYm9v
bCkgZmluYWw7Ci0gICAgdm9pZCBzZXRQYXVzZWQoYm9vbCkgY29uc3Q7Ci0KLSAgICBSZXRhaW5Q
dHI8QVZDYXB0dXJlVmlkZW9QcmV2aWV3TGF5ZXJUeXBlPiBtX3ByZXZpZXdMYXllcjsKLSAgICBS
ZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wcmV2aWV3QmFja2dyb3VuZExheWVyOwotICAgIFJl
dGFpblB0cjxBVkNhcHR1cmVEZXZpY2VUeXBlZGVmPiBtX2RldmljZTsKLSAgICBSZXRhaW5QdHI8
V2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXI+IG1fb2JqY09ic2VydmVyOwotfTsK
LQotUmVmUHRyPEFWTWVkaWFTb3VyY2VQcmV2aWV3PiBBVlZpZGVvU291cmNlUHJldmlldzo6Y3Jl
YXRlKEFWQ2FwdHVyZVNlc3Npb24gKnNlc3Npb24sIEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRl
dmljZSwgQVZWaWRlb0NhcHR1cmVTb3VyY2UqIHBhcmVudCkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEFWVmlkZW9Tb3VyY2VQcmV2aWV3KHNlc3Npb24sIGRldmljZSwgcGFyZW50KSk7Ci19
Ci0KLUFWVmlkZW9Tb3VyY2VQcmV2aWV3OjpBVlZpZGVvU291cmNlUHJldmlldyhBVkNhcHR1cmVT
ZXNzaW9uICpzZXNzaW9uLCBBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBkZXZpY2UsIEFWVmlkZW9D
YXB0dXJlU291cmNlKiBwYXJlbnQpCi0gICAgOiBBVk1lZGlhU291cmNlUHJldmlldyhwYXJlbnQp
Ci0gICAgLCBtX29iamNPYnNlcnZlcihhZG9wdE5TKFtbV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291
cmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKSkKLXsKLSAgICBtX2RldmljZSA9IGRldmljZTsKLSAg
ICBtX3ByZXZpZXdMYXllciA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlVmlkZW9QcmV2aWV3TGF5
ZXJJbnN0YW5jZSgpIGluaXRXaXRoU2Vzc2lvbjpzZXNzaW9uXSk7Ci0gICAgbV9wcmV2aWV3TGF5
ZXIuZ2V0KCkuY29udGVudHNHcmF2aXR5ID0ga0NBR3Jhdml0eVJlc2l6ZTsKLSAgICBtX3ByZXZp
ZXdMYXllci5nZXQoKS5hbmNob3JQb2ludCA9IENHUG9pbnRaZXJvOwotICAgIFttX3ByZXZpZXdM
YXllci5nZXQoKSBzZXREZWxlZ2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRl
IHNoYXJlZF1dOwotCi0gICAgbV9wcmV2aWV3QmFja2dyb3VuZExheWVyID0gYWRvcHROUyhbW0NB
TGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICBtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIuZ2V0KCku
Y29udGVudHNHcmF2aXR5ID0ga0NBR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBtX3ByZXZpZXdC
YWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSBDR1BvaW50WmVybzsKLSAgICBtX3By
ZXZpZXdCYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZ
RVM7Ci0gICAgW21fcHJldmlld0JhY2tncm91bmRMYXllci5nZXQoKSBzZXREZWxlZ2F0ZTpbV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwotCi0jaWZuZGVmIE5ERUJV
RwotICAgIG1fcHJldmlld0xheWVyLmdldCgpLm5hbWUgPSBAIkFWVmlkZW9DYXB0dXJlU291cmNl
IHByZXZpZXcgbGF5ZXIiOwotICAgIG1fcHJldmlld0JhY2tncm91bmRMYXllci5nZXQoKS5uYW1l
ID0gQCJBVlZpZGVvU291cmNlUHJldmlldyBwYXJlbnQgbGF5ZXIiOwotI2VuZGlmCi0KLSAgICBb
bV9wcmV2aWV3QmFja2dyb3VuZExheWVyIGFkZFN1YmxheWVyOm1fcHJldmlld0xheWVyLmdldCgp
XTsKLQotICAgIFttX29iamNPYnNlcnZlci5nZXQoKSBzZXRQYXJlbnQ6dGhpc107Ci19Ci0KLXZv
aWQgQVZWaWRlb1NvdXJjZVByZXZpZXc6OmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQoKQot
ewotICAgIGlmIChtX3ByZXZpZXdCYWNrZ3JvdW5kTGF5ZXIgJiYgbV9wcmV2aWV3TGF5ZXIpCi0g
ICAgICAgIFttX3ByZXZpZXdMYXllci5nZXQoKSBzZXRCb3VuZHM6bV9wcmV2aWV3QmFja2dyb3Vu
ZExheWVyLmdldCgpLmJvdW5kc107Ci19Ci0KLXZvaWQgQVZWaWRlb1NvdXJjZVByZXZpZXc6Omlu
dmFsaWRhdGUoKQotewotICAgIFttX29iamNPYnNlcnZlci5nZXQoKSBzZXRQYXJlbnQ6bmlsXTsK
LSAgICBtX29iamNPYnNlcnZlciA9IG51bGxwdHI7Ci0gICAgbV9wcmV2aWV3TGF5ZXIgPSBudWxs
cHRyOwotICAgIG1fcHJldmlld0JhY2tncm91bmRMYXllciA9IG51bGxwdHI7Ci0gICAgbV9kZXZp
Y2UgPSBudWxscHRyOwotICAgIEFWTWVkaWFTb3VyY2VQcmV2aWV3OjppbnZhbGlkYXRlKCk7Ci19
Ci0KLXZvaWQgQVZWaWRlb1NvdXJjZVByZXZpZXc6OnBsYXkoKSBjb25zdAotewotICAgIHNldFBh
dXNlZChmYWxzZSk7Ci19Ci0KLXZvaWQgQVZWaWRlb1NvdXJjZVByZXZpZXc6OnBhdXNlKCkgY29u
c3QKLXsKLSAgICBzZXRQYXVzZWQodHJ1ZSk7Ci19Ci0KLXZvaWQgQVZWaWRlb1NvdXJjZVByZXZp
ZXc6OnNldFBhdXNlZChib29sIHBhdXNlZCkgY29uc3QKLXsKLSAgICBbbV9kZXZpY2UgbG9ja0Zv
ckNvbmZpZ3VyYXRpb246bmlsXTsKLSAgICBtX3ByZXZpZXdMYXllci5nZXQoKS5jb25uZWN0aW9u
LmVuYWJsZWQgPSAhcGF1c2VkOwotICAgIFttX2RldmljZSB1bmxvY2tGb3JDb25maWd1cmF0aW9u
XTsKLX0KLQotdm9pZCBBVlZpZGVvU291cmNlUHJldmlldzo6c2V0RW5hYmxlZChib29sIGVuYWJs
ZWQpCi17Ci0gICAgbV9wcmV2aWV3TGF5ZXIuZ2V0KCkuaGlkZGVuID0gIWVuYWJsZWQ7Ci19Ci0K
IGNvbnN0IE9TVHlwZSB2aWRlb0NhcHR1cmVGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJC
R1JBOwogCiBSZWZQdHI8QVZNZWRpYUNhcHR1cmVTb3VyY2U+IEFWVmlkZW9DYXB0dXJlU291cmNl
OjpjcmVhdGUoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlLCBjb25zdCBBdG9taWNTdHJp
bmcmIGlkLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cywgU3RyaW5nJiBpbnZh
bGlkQ29uc3RyYWludCkKQEAgLTUxMiwyMCArNDA5LDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6cHJvY2Vzc05ld0ZyYQogICAgICAgICByZXR1cm47CiAKICAgICB1cGRhdGVGcmFtZXJh
dGUoc2FtcGxlQnVmZmVyLmdldCgpKTsKLQotICAgIENNU2FtcGxlQnVmZmVyUmVmIG5ld1NhbXBs
ZUJ1ZmZlciA9IDA7Ci0gICAgQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHNhbXBsZUJ1ZmZlci5nZXQoKSwgJm5ld1NhbXBsZUJ1ZmZlcik7Ci0gICAgQVNTRVJU
KG5ld1NhbXBsZUJ1ZmZlcik7Ci0KLSAgICBDRkFycmF5UmVmIGF0dGFjaG1lbnRzQXJyYXkgPSBD
TVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkobmV3U2FtcGxlQnVmZmVyLCB0
cnVlKTsKLSAgICBpZiAoYXR0YWNobWVudHNBcnJheSkgewotICAgICAgICBmb3IgKENGSW5kZXgg
aSA9IDA7IGkgPCBDRkFycmF5R2V0Q291bnQoYXR0YWNobWVudHNBcnJheSk7ICsraSkgewotICAg
ICAgICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBhdHRhY2htZW50cyA9IChDRk11dGFibGVE
aWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXR0YWNobWVudHNBcnJheSwgaSk7
Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShhdHRhY2htZW50cywga0NNU2FtcGxl
QXR0YWNobWVudEtleV9EaXNwbGF5SW1tZWRpYXRlbHksIGtDRkJvb2xlYW5UcnVlKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIG1fYnVmZmVyID0gYWRvcHRDRihuZXdTYW1wbGVCdWZmZXIpOwor
ICAgIG1fYnVmZmVyID0gc2FtcGxlQnVmZmVyOwogICAgIG1fbGFzdEltYWdlID0gbnVsbHB0cjsK
IAogICAgIGJvb2wgc2V0dGluZ3NDaGFuZ2VkID0gZmFsc2U7CkBAIC02MDUsMTEgKzQ4OSw2IEBA
IHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnBhaW50Q3VycmVudEYKICAgICBDR0NvbnRleHRE
cmF3SW1hZ2UoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBwYWlu
dFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwgbV9sYXN0SW1hZ2UuZ2V0KCkpOwog
fQogCi1SZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IEFWVmlkZW9DYXB0dXJlU291cmNlOjpj
cmVhdGVQcmV2aWV3KCkKLXsKLSAgICByZXR1cm4gQVZWaWRlb1NvdXJjZVByZXZpZXc6OmNyZWF0
ZShzZXNzaW9uKCksIGRldmljZSgpLCB0aGlzKTsKLX0KLQogTlNTdHJpbmcqIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhzdGQ6Om9wdGlv
bmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQpIGNvbnN0CiB7CiAgICAg
aWYgKCF3aWR0aCAmJiAhaGVpZ2h0KQpAQCAtNjU2LDQ2ICs1MzUsNCBAQCBib29sIEFWVmlkZW9D
YXB0dXJlU291cmNlOjpzdXBwb3J0c1NpemVBCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
QGltcGxlbWVudGF0aW9uIFdlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyCi0KLXN0
YXRpYyBOU1N0cmluZyAqIGNvbnN0IEtleVZhbHVlQm91bmRzQ2hhbmdlS2V5ID0gQCJib3VuZHMi
OwotCi0tICh2b2lkKXNldFBhcmVudDooQVZWaWRlb1NvdXJjZVByZXZpZXcgKilwYXJlbnQKLXsK
LSAgICBpZiAoX3BhcmVudCAmJiBfaGFzT2JzZXJ2ZXIgJiYgX3BhcmVudC0+cGxhdGZvcm1MYXll
cigpKSB7Ci0gICAgICAgIF9oYXNPYnNlcnZlciA9IGZhbHNlOwotICAgICAgICBbX3BhcmVudC0+
cGxhdGZvcm1MYXllcigpIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpLZXlWYWx1ZUJv
dW5kc0NoYW5nZUtleV07Ci0gICAgfQotCi0gICAgX3BhcmVudCA9IHBhcmVudDsKLQotICAgIGlm
IChfcGFyZW50ICYmIF9wYXJlbnQtPnBsYXRmb3JtTGF5ZXIoKSkgewotICAgICAgICBfaGFzT2Jz
ZXJ2ZXIgPSB0cnVlOwotICAgICAgICBbX3BhcmVudC0+cGxhdGZvcm1MYXllcigpIGFkZE9ic2Vy
dmVyOnNlbGYgZm9yS2V5UGF0aDpLZXlWYWx1ZUJvdW5kc0NoYW5nZUtleSBvcHRpb25zOjAgY29u
dGV4dDpudWxscHRyXTsKLSAgICB9Ci19Ci0KLS0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFu
Z2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKLXsKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7
Ci0KLSAgICBpZiAoIV9wYXJlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChbW2NoYW5n
ZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTm90aWZpY2F0aW9uSXNQcmlvcktleV0gYm9v
bFZhbHVlXSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRo
cmVhZFJ1biheIHsKLSAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWw6S2V5VmFsdWVCb3VuZHND
aGFuZ2VLZXldICYmIG9iamVjdCA9PSBfcGFyZW50LT5wbGF0Zm9ybUxheWVyKCkpCi0gICAgICAg
ICAgICBfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXJCb3VuZHNDaGFuZ2VkKCk7Ci0gICAgfSk7Ci0j
ZWxzZQotICAgIGlmIChba2V5UGF0aCBpc0VxdWFsOktleVZhbHVlQm91bmRzQ2hhbmdlS2V5XSAm
JiBvYmplY3QgPT0gX3BhcmVudC0+cGxhdGZvcm1MYXllcigpKQotICAgICAgICBfcGFyZW50LT5i
YWNrZ3JvdW5kTGF5ZXJCb3VuZHNDaGFuZ2VkKCk7Ci0jZW5kaWYKLX0KLQotQGVuZAotCiAjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWMubW0JKHJldmlzaW9uIDIxMDM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0
YXRpYyBjb25zdCBpbnQgdmlkZW9TYW1wbGVSYXRlID0gOTAwMDA7CisKIFJlZlB0cjxNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZT4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogewogICAg
IGF1dG8gc291cmNlID0gYWRvcHRSZWYobmV3IE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjKG5h
bWUpKTsKQEAgLTc0LDExICs3Niw4IEBAIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gTW9j
a1JlYWx0aW0KICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvOwotCi0gICAgdGltaW5nSW5mby5w
cmVzZW50YXRpb25UaW1lU3RhbXAgPSBDTVRpbWVNYWtlKGVsYXBzZWRUaW1lKCkgKiAxMDAwLCAx
MDAwKTsKLSAgICB0aW1pbmdJbmZvLmRlY29kZVRpbWVTdGFtcCA9IGtDTVRpbWVJbnZhbGlkOwot
ICAgIHRpbWluZ0luZm8uZHVyYXRpb24gPSBrQ01UaW1lSW52YWxpZDsKKyAgICBDTVRpbWUgc2Ft
cGxlVGltZSA9IENNVGltZU1ha2UoKGVsYXBzZWRUaW1lKCkgKyAuMSkgKiB2aWRlb1NhbXBsZVJh
dGUsIHZpZGVvU2FtcGxlUmF0ZSk7CisgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm8g
PSB7IGtDTVRpbWVJbnZhbGlkLCBzYW1wbGVUaW1lLCBzYW1wbGVUaW1lIH07CiAKICAgICBDTVZp
ZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24gPSBudWxscHRyOwogICAg
IE9TU3RhdHVzIHN0YXR1cyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZUZvckltYWdl
QnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdlQnVmZmVyUmVmKXBpeGVsQnVmZmVy
LCAmZm9ybWF0RGVzY3JpcHRpb24pOwpAQCAtMTAwLDYgKzk5LDggQEAgUmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPiBNb2NrUmVhbHRpbQogCiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnBpeGVsQnVmZmVyRnJvbUNHSW1hZ2UoQ0dJbWFn
ZVJlZiBpbWFnZSkgY29uc3QKIHsKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRldmljZVJH
QkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKKwogICAgIENHU2l6
ZSBmcmFtZVNpemUgPSBDR1NpemVNYWtlKENHSW1hZ2VHZXRXaWR0aChpbWFnZSksIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UpKTsKICAgICBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyA9IChfX2JyaWRn
ZSBDRkRpY3Rpb25hcnlSZWYpIEB7CiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBp
eGVsQnVmZmVyQ0dJbWFnZUNvbXBhdGliaWxpdHlLZXk6IEAoTk8pLApAQCAtMTEyLDggKzExMyw3
IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBNb2NrUmVhbHRpbWUKIAogICAgIENWUGl4
ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocGl4ZWxCdWZmZXIsIDApOwogICAgIHZvaWQqIGRhdGEg
PSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3MocGl4ZWxCdWZmZXIpOwotICAgIGF1dG8gcmdi
Q29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAg
IGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEsIGZyYW1l
U2l6ZS53aWR0aCwgZnJhbWVTaXplLmhlaWdodCwgOCwgQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVy
Um93KHBpeGVsQnVmZmVyKSwgcmdiQ29sb3JTcGFjZS5nZXQoKSwgKENHQml0bWFwSW5mbykga0NH
SW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENH
Qml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBmcmFtZVNpemUud2lkdGgsIGZyYW1lU2l6ZS5oZWln
aHQsIDgsIENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvdyhwaXhlbEJ1ZmZlciksIGRldmljZVJH
QkNvbG9yU3BhY2UsIChDR0JpdG1hcEluZm8pIGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KSk7
CiAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwg
Q0dJbWFnZUdldFdpZHRoKGltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkpLCBpbWFnZSk7
CiAgICAgQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzKHBpeGVsQnVmZmVyLCAwKTsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQ
cm9jZXNzLnNiLmluCShyZXZpc2lvbiAyMTAzNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC00NDgsMyAr
NDQ4LDggQEAKICAgICAgICAgKGlva2l0LXVzZXItY2xpZW50LWNsYXNzICJJT1VTQkRldmljZVVz
ZXJDbGllbnRWMiIpCiAgICAgICAgIChpb2tpdC11c2VyLWNsaWVudC1jbGFzcyAiSU9VU0JJbnRl
cmZhY2VVc2VyQ2xpZW50VjIiKSkKICAgICAoYWxsb3cgZGV2aWNlLWNhbWVyYSkpCisKKzs7IEBA
QEBACisoYWxsb3cgZGV2aWNlLW1pY3JvcGhvbmUpCis7OyBAQEBAQAorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>